Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Модификации ядра > Моды

Важная информация

Моды Неофициальная модификация ядра MaNGOS, собственные наработки, расширение функционала

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.06.2010, 12:54   #1
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию [mod] Horde & Alliance grouping/trade

Author: Frozen-In-Time

Цитата:
This patch allows you to interact with any player horde or alliance as if they were your own faction. Only while in a group or a raid. This means trades, grouping, healing, enchanting in trade window and rez's work. I attempted to change the code so you could turn it on and off based on the mangosd.conf twoside options but for some reason I'm stuck. Anyway, here's the completed patch without conf checks. This patch was originated by False.Genesis. The ability to trade was possible due to help from Prefect, one of my server admin. Onwards to the patch. It is a git patch and my server version is 7464.

Patch posted below.

[UPDATE - NEW PATCH JUNE 9 2010 - WORKING MaNGOS/0.16.0 (* * Revision 10044 - *) ]
Код:
src/game/Group.cpp | 33 ++++++++++++++++++++++++
src/game/Group.h | 3 ++
src/game/GroupHandler.cpp | 3 ++
src/game/Object.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++-
src/game/Object.h | 3 ++
src/game/TradeHandler.cpp | 6 +++-
src/game/Unit.cpp | 3 ++
src/game/Unit.h | 9 ++++++-
8 files changed, 118 insertions(+), 4 deletions(-)

diff --git a/src/game/Group.cpp b/src/game/Group.cpp
index 7aa97e1..ea9756c 100644
--- a/src/game/Group.cpp
+++ b/src/game/Group.cpp
@@ -308,6 +308,9 @@ bool Group::AddMember(const uint64 &guid, const char* name)

uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
{
+// Frozen Mod
+BroadcastGroupUpdate();
+// Frozen Mod
// remove member and change leader (if need) only if strong more 2 members _before_ member remove
if(GetMembersCount() > uint32(isBGGroup() ? 1 : 2)) // in BG group case allow 1 members group
{
@@ -1742,6 +1745,36 @@ void Group::_homebindIfInstance(Player *player)
player->m_InstanceValid = false;
}
}
+//Frozen Mod
+void Group::BroadcastGroupUpdate(void)
+{
+ for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
+ {
+ Player *pp = sObjectMgr.GetPlayer(citr->guid);
+ if(pp && pp->IsInWorld())
+ {
+ pp->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+ pp->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLA TE);
+ DEBUG_LOG("-- Forced group value update for '%s'", pp->GetName());
+ if(pp->GetPet())
+ {
+ pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+ pp->GetPet()->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLA TE);
+ DEBUG_LOG("-- Forced group value update for '%s' pet '%s'", pp->GetName(), pp->GetPet()->GetName());
+ }
+for(uint32 i = 0; i < MAX_TOTEM_SLOT; ++i)
+ {
+ if(Unit *totem = Unit::GetUnit(*pp, pp->m_TotemSlot[i]))
+ {
+ totem->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
+ totem->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLA TE);
+ DEBUG_LOG("-- Forced group value update for '%s' totem #%u", pp->GetName(), i);
+ }
+ } 
+ }
+ }
+}
+// Frozen Mod

static void RewardGroupAtKill_helper(Player* pGroupGuy, Unit* pVictim, uint32 count, bool PvP, float group_rate, uint32 sum_level, bool is_dungeon, Player* not_gray_member_with_max_level, Player* member_with_max_level, uint32 xp )
{
diff --git a/src/game/Group.h b/src/game/Group.h
index c9cffe3..93c090f 100644
--- a/src/game/Group.h
+++ b/src/game/Group.h
@@ -357,6 +357,9 @@ class MANGOS_DLL_SPEC Group
InstanceGroupBind* GetBoundInstance(Player* player);
InstanceGroupBind* GetBoundInstance(Map* aMap, Difficulty difficulty);
BoundInstancesMap& GetBoundInstances(Difficulty difficulty) { return m_boundInstances[difficulty]; }
+// Frozen Mod
+ void BroadcastGroupUpdate(void);
+// Frozen Mod

protected:
bool _addMember(const uint64 &guid, const char* name, bool isAssistant=false);
diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp
index d73b233..e2bbf39 100644
--- a/src/game/GroupHandler.cpp
+++ b/src/game/GroupHandler.cpp
@@ -207,6 +207,9 @@ void WorldSession::HandleGroupAcceptOpcode( WorldPacket & recv_data )
// everything is fine, do it, PLAYER'S GROUP IS SET IN ADDMEMBER!!!
if(!group->AddMember(GetPlayer()->GetGUID(), GetPlayer()->GetName()))
return;
+// Frozen Mod
+group->BroadcastGroupUpdate();
+// Frozen Mod
}

void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ )
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index 55fc2d0..d842d50 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -657,6 +657,52 @@ void Object::BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask *
else
*data << (m_uint32Values[ index ] & ~UNIT_DYNFLAG_TAPPED);
}
+// Frozen Mod
+
+else if(index == UNIT_FIELD_BYTES_2 || index == UNIT_FIELD_FACTIONTEMPLATE)
+{
+bool ch = false;
+if((GetTypeId() == TYPEID_PLAYER || GetTypeId() == TYPEID_UNIT) && target != this)
+{
+bool forcefriendly = false; // bool for pets/totems to offload more code from the big if below
+if(GetTypeId() == TYPEID_UNIT)
+{
+forcefriendly = (((Creature*)this)->isTotem() || ((Creature*)this)->isPet())
+&& ((Creature*)this)->GetOwner()->GetTypeId() == TYPEID_PLAYER
+&& ((Creature*)this)->GetOwner()->IsFriendlyTo(target) // pet owner must be friendly to target
+&& ((Creature*)this)->GetOwner() != target // no need to send hackfix to pet owner
+&& (target->IsInSameGroupWith((Player*)((Creature*)this)->GetOwner()) || target->IsInSameRaidWith((Player*)((Creature*)this)->GetOwner()));
+}
+
+if(((Unit*)this)->IsSpoofSamePlayerFaction() || forcefriendly
+|| (target->GetTypeId() == TYPEID_PLAYER && GetTypeId() == TYPEID_PLAYER && (target->IsInSameGroupWith((Player*)this) || target->IsInSameRaidWith((Player*)this))))
+{
+if(index == UNIT_FIELD_BYTES_2)
+{
+DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (flag)", target->GetName(), ((Unit*)this)->GetName());
+*data << ( m_uint32Values[ index ] & (UNIT_BYTE2_FLAG_SANCTUARY << 8) ); // this flag is at uint8 offset 1 !!
+ch = true;
+}
+else if(index == UNIT_FIELD_FACTIONTEMPLATE)
+{
+FactionTemplateEntry const *ft1, *ft2;
+ft1 = ((Unit*)this)->getFactionTemplateEntry();
+ft2 = ((Unit*)target)->getFactionTemplateEntry();
+if(ft1 && ft2 && (!ft1->IsFriendlyTo(*ft2) || ((Unit*)this)->IsSpoofSamePlayerFaction()))
+{
+uint32 faction = ((Player*)target)->getFaction(); // pretend that all other HOSTILE players have own faction, to allow follow, heal, rezz (trade wont work)
+DEBUG_LOG("-- VALUES_UPDATE: Sending '%s' the blue-group-fix from '%s' (faction %u)", target->GetName(), ((Unit*)this)->GetName(), faction);
+*data << uint32(faction);
+ch = true;
+}
+}
+}
+}
+if(!ch)
+*data << m_uint32Values[ index ];
+
+}
+// Frozen Mod
else
{
// send in current format (float as float, uint32 as uint32)
@@ -1662,7 +1708,21 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa

// return the creature therewith the summoner has access to it
return pCreature;
+ }
+// Frozen Mod
+void Object::ForceValuesUpdateAtIndex(uint32 i)
+{
+ m_uint32Values_mirror[i] = GetUInt32Value(i) + 1; // makes server think the field changed
+ if(m_inWorld)
+ {
+ if(!m_objectUpdated)
+ {
+ AddToClientUpdateList();
+ m_objectUpdated = true;
+ }
+ }
}
+// Frozen Mod

namespace MaNGOS
{
@@ -1945,4 +2005,4 @@ bool WorldObject::IsControlledByPlayer() const
default:
return false;
}
-}
\ No newline at end of file
+}
diff --git a/src/game/Object.h b/src/game/Object.h
index 04c31f0..055e2d5 100644
--- a/src/game/Object.h
+++ b/src/game/Object.h
@@ -276,6 +276,9 @@ class MANGOS_DLL_SPEC Object

virtual bool hasQuest(uint32 /* quest_id */) const { return false; }
virtual bool hasInvolvedQuest(uint32 /* quest_id */) const { return false; }
+// Frozen Mod
+ void ForceValuesUpdateAtIndex(uint32);
+// Frozen Mod
protected:

Object ( );
diff --git a/src/game/TradeHandler.cpp b/src/game/TradeHandler.cpp
index e9c636f..719986e 100644
--- a/src/game/TradeHandler.cpp
+++ b/src/game/TradeHandler.cpp
@@ -531,12 +531,14 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacke t& recvPacket)
SendTradeStatus(TRADE_STATUS_IGNORE_YOU);
return;
}
-
- if (pOther->GetTeam() !=_player->GetTeam() )
+// Frozen Mod
+/* if (pOther->GetTeam() !=_player->GetTeam() )
{
SendTradeStatus(TRADE_STATUS_WRONG_FACTION);
return;
}
+*/
+// Frozen Mod

if (!pOther->IsWithinDistInMap(_player,10.0f,false))
{
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index f54cca2..47272ab 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -251,6 +251,9 @@ Unit::Unit()
// remove aurastates allowing special moves
for(int i=0; i < MAX_REACTIVE; ++i)
m_reactiveTimer[i] = 0;
+// Frozen Mod
+ m_spoofSamePlayerFaction = false;
+// Frozen Mod
}

Unit::~Unit()
diff --git a/src/game/Unit.h b/src/game/Unit.h
index b4b4077..b059fc1 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -1822,6 +1822,10 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
PetAuraSet m_petAuras;
void AddPetAura(PetAura const* petSpell);
void RemovePetAura(PetAura const* petSpell);
+// Frozen Mod
+ inline void SetSpoofSamePlayerFaction(bool b) { m_spoofSamePlayerFaction = b; }
+ inline bool IsSpoofSamePlayerFaction(void) {return m_spoofSamePlayerFaction; }
+// Frozen Mod

// Movement info
MovementInfo m_movementInfo;
@@ -1873,8 +1877,11 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
uint32 m_reactiveTimer[MAX_REACTIVE];
uint32 m_regenTimer;
uint32 m_lastManaUseTimer;
+// Frozen Mod
+ bool m_spoofSamePlayerFaction : 1;
+// Frozen Mod

- private:
+ public:
void CleanupDeletedAuras();

bool IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry const* procSpell, uint32 procFlag, uint32 procExtra, WeaponAttackType attType, bool isVictim, bool active, SpellProcEventEntry const*& spellProcEvent );
Не проверено. Кто поставит - доложитесь о результатах пожалуйста.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 24.06.2010, 21:03   #2
Lightunit
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 66
Сказал(а) спасибо: 120
Поблагодарили 9 раз(а) в 7 сообщениях
Lightunit На верном пути
По умолчанию

Данный патч используется и на БГ.

Если вступить в группу противоположной фракции до начала или во время БГ, то тебя никто не сможет убить, а так же можно таскать флаги (Ущелье Песни Войны) обоих фракций.
Очень серъезный баг=\

Есть ли у кого фикс на это?
Lightunit вне форума   Ответить с цитированием
Старый 24.06.2010, 22:51   #3
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

ИМХО
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
KiriX (24.06.2010)
Старый 24.06.2010, 23:57   #4
Lightunit
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 66
Сказал(а) спасибо: 120
Поблагодарили 9 раз(а) в 7 сообщениях
Lightunit На верном пути
Сообщение


Последний раз редактировалось Lightunit; 24.06.2010 в 23:59.
Lightunit вне форума   Ответить с цитированием
Старый 25.06.2010, 01:15   #5
Astellar
Гость
 
Сообщений: n/a
По умолчанию

Прям таки намного улучшит? А мне что-то подсказывает, что на онлайне за тысячу человек за установку подобного мода юному Кулибину яйки оторвут. И за дело. Ибо нефиг убивать кривым кодом то, на чем нехилая часть игры держится.
  Ответить с цитированием
Пользователь сказал cпасибо:
KiriX (25.06.2010)
Старый 25.06.2010, 07:04   #6
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Мда... Видел штук 5 вариантов патча на эту тему, но такого кривого еще не видел.... Это ж надо было так извратиться Патч с тупой подменой фракции конечно страдает своими глюками, но хотя бы с БГ там все нормально. Подозреваю что тут будет еще целая куча проблем (с кладбищем, логином) которые в патче просто не рассмотрены.
rsa вне форума   Ответить с цитированием
Старый 25.06.2010, 08:27   #7
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Ну вообще этот вариант патча очень старенький... Даже старше, чем тот, что был изначально в теме.
Вот только тот, что бы перестал нормально работать и тоже по страшному глючил.
Вот предыдущий вариант:
PHP код:
diff --git a/src/game/Group.cpp b/src/game/Group.cpp
index 7aa97e1
..6032dfb 100644
--- a/src/game/Group.cpp
+++ b/src/game/Group.cpp
@@ -294,+294,16 @@ bool Group::AddMember(const uint64 &guid, const charname)
                     
player->SendRaidDifficulty(true);
                 }
             }
+       
// Group Interfactions interactions (test)
+            if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+            {
+                
Group *group player->GetGroup();
+                if(
Player *leader sObjectMgr.GetPlayer(group->GetLeaderGUID()))
+                {
+                    
player->setFactionForRace(leader->getRace());
+                    
sLog.outDebug"WORLD: Group Interfaction Interactions - Faction changed (AddMember)" );
+                }
+            }
         }
         
player->SetGroupUpdateFlag(GROUP_UPDATE_FULL);
         
UpdatePlayerOutOfRange(player);
@@ -
340,+350,12 @@ uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
                 
player->GetSession()->SendPacket(&data);
             }
 
+        
// Restore original faction if needed
+        if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+        {
+                
player->setFactionForRace(player->getRace());
+                
sLog.outDebug"WORLD: Group Interfaction Interactions - Restore original faction (RemoveMember)" );
+        }
             
_homebindIfInstance(player);
         }
 
@@ -
395,+411,12 @@ void Group::Disband(bool hideDestroy)
                 
player->SetOriginalGroup(NULL);
             else
                 
player->SetGroup(NULL);
+            
// Restore original faction if needed
+            if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+            {
+                
player->setFactionForRace(player->getRace());
+                
sLog.outDebug"WORLD: Group Interfaction Interactions - Restore original faction (Disband)" );
+            }
         }
 
         
// quest related GO state dependent from raid membership 
Проще и короче, но не учитывает пэтов и тотемы и ещё какие-то проблемы с ним последнее время были.
rsa, можешь предложить что-то стоящее взамен обоих вариантов?
KiriX вне форума   Ответить с цитированием
Старый 25.06.2010, 08:53   #8
Lightunit
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 66
Сказал(а) спасибо: 120
Поблагодарили 9 раз(а) в 7 сообщениях
Lightunit На верном пути
По умолчанию

Перепробывал множество вариантов данного мода - результат такой же. Включая сборки от insider42 и rsa
Lightunit вне форума   Ответить с цитированием
Старый 25.06.2010, 12:38   #9
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от KiriX Посмотреть сообщение
Ну вообще этот вариант патча очень старенький... Даже старше, чем тот, что был изначально в теме.
Вот только тот, что бы перестал нормально работать и тоже по страшному глючил.
Вот предыдущий вариант:

Проще и короче, но не учитывает пэтов и тотемы и ещё какие-то проблемы с ним последнее время были.
rsa, можешь предложить что-то стоящее взамен обоих вариантов?
Я вот этот предыдущий доделал убрав пару анноящих багов. И пользуюсь им. Просто игрокам еще надо вдолбить в башку что после выхода из мультифракц. пати надо обязательно логнуться.
rsa вне форума   Ответить с цитированием
Старый 25.06.2010, 12:39   #10
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Я вот этот предыдущий доделал убрав пару анноящих багов. И пользуюсь им. Просто игрокам еще надо вдолбить в башку что после выхода из мультифракц. пати надо обязательно логнуться.
Можешь выложить свой вариант?
+ разве нельзя в коде сделать что-то чтобы не надо было делать ЛА?
KiriX вне форума   Ответить с цитированием
Старый 26.06.2010, 10:20   #11
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

1. Покопался в бранче - не смогу. Это штук 6 коммитов, размазанных с января по май этого года... Если кто стойкий поищет - может собрать, у них у всех в заголовке идет interfaction
2. Можно сделать в коде. Но потребуется вводить поле в БД и сильно корежить код ядра (сейчас все обходится почти косметическими правками) - я это делать не хочу.

PS все равно некоторые глюки у меня остались, но с ними уже жить можно.
rsa вне форума   Ответить с цитированием
Старый 27.06.2010, 20:32   #12
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

грустно это. "у меня все есть и работает, а вы сами страдайте" - это крайне хреновый вариант ответа. Есть ли возможность его пересмотреть?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
Hantet (29.06.2010), KiriX (28.06.2010), lovepsone (28.06.2010)
Старый 30.06.2010, 12:39   #13
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Зато нотация Темпуры сподвигла меня патчик привести в более приличный вид. Сейчас на кроликах потестирую пару дней и выложу... Кому не терпится -
http://github.com/rsa/mangos/commit/...78cb6eb09f24ee
Патч нацелен на ПВЕ, но если будут подробные багрепорты то можно подкрутить и ПВПшные глюки.
rsa вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Dragon (30.06.2010), KiriX (30.06.2010), Lightunit (30.06.2010)
Старый 30.06.2010, 12:49   #14
wk23
Пользователь
 
Регистрация: 11.03.2010
Адрес: Спб
Сообщений: 35
Сказал(а) спасибо: 5
Поблагодарили 10 раз(а) в 8 сообщениях
wk23 На верном пути
По умолчанию

git pull
git format-patch --full-index
find interfaction
Вложения
Тип файла: rar rsa.rar (12.5 Кб, 10 просмотров)
wk23 вне форума   Ответить с цитированием
Старый 30.06.2010, 13:29   #15
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Зато нотация Темпуры сподвигла меня патчик привести в более приличный вид. Сейчас на кроликах потестирую пару дней и выложу... Кому не терпится -
http://github.com/rsa/mangos/commit/...78cb6eb09f24ee
Патч нацелен на ПВЕ, но если будут подробные багрепорты то можно подкрутить и ПВПшные глюки.
Это, как я понял, окончательный ПВЕшный вариант?
А что там за косяки с ПВП могут быть?
KiriX вне форума   Ответить с цитированием
Старый 30.06.2010, 14:08   #16
Lightunit
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 66
Сказал(а) спасибо: 120
Поблагодарили 9 раз(а) в 7 сообщениях
Lightunit На верном пути
Сообщение

Цитата:
Сообщение от KiriX Посмотреть сообщение
А что там за косяки с ПВП могут быть?
Я например писал выше про БГ

1. Можно получить "неуязвимость" на БГ. Т.е. для обоих сторон вы будите дружелюбным. Но флаги можно брать у обоих фракций. В таком случае можно получить флаг своей фракции и ждать пока принесут чужой.
2. Можно полностью уничтожить флаг. Если зарегистрироваться на БГ ордынцем за Альянс, взять флаг и сменить сторону, то флаг уже не реснится и БГ "зависает"
3. Так же есть проблема на Око Вечности с кладбищами. Если вы находитесь с вражеской фракцией в одной группе, то происходит путаница с кладбищами. Закономерность я пока не вычислил
Lightunit вне форума   Ответить с цитированием
Старый 30.06.2010, 17:00   #17
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от KiriX Посмотреть сообщение
Это, как я понял, окончательный ПВЕшный вариант?
А что там за косяки с ПВП могут быть?
Нет. Не решена проблема с логином игрока в рейд, в котором все логнулись (то есть загрузка группы из БД не меняет фракцию автоматом). Не решена проблема с аурой posession (после контрола восстановится не та фракция). На БГ вообще ничего нет, если они корректно берут тим по player->getteam() то все работать будет, если нет - надо крутить...
Еще не решена проблема с phase shift control, но это проблема спеллов. Я пытаюсь решить ее в своих инстах, пока получается $№?ново.
rsa вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
KiriX (30.06.2010), Lightunit (30.06.2010)
Старый 25.10.2010, 09:55   #18
Black_Rose
Гость
 
Сообщений: n/a
По умолчанию

Mangos_r10629 - уже не компиллится ни один из патчей в теме. У кого-нибудь есть рабочий патч для этой ревизии?
  Ответить с цитированием
Старый 25.10.2010, 10:52   #19
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Я всегда ставил этот патч:
Код:
diff --git a/src/game/Group.cpp b/src/game/Group.cpp
index 4090d91..69f6cb2 100644
--- a/src/game/Group.cpp
+++ b/src/game/Group.cpp
@@ -290,6 +290,16 @@ bool Group::AddMember(const uint64 &guid, const char* name)
                     player->SendRaidDifficulty(true);
                 }
             }
+       // Group Interfactions interactions (test)
+            if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+            {
+                Group *group = player->GetGroup();
+                if(Player *leader = sObjectMgr.GetPlayer(group->GetLeaderGuid()))
+                {
+                    player->setFactionForRace(leader->getRace());
+                    sLog.outDebug( "WORLD: Group Interfaction Interactions - Faction changed (AddMember)" );
+                }
+            }
         }
         player->SetGroupUpdateFlag(GROUP_UPDATE_FULL);
         UpdatePlayerOutOfRange(player);
@@ -335,6 +345,12 @@ uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
                 data << uint64(0) << uint32(0) << uint32(0) << uint64(0);
                 player->GetSession()->SendPacket(&data);
             }
+        // Restore original faction if needed
+        if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+        {
+                player->setFactionForRace(player->getRace());
+                sLog.outDebug( "WORLD: Group Interfaction Interactions - Restore original faction (RemoveMember)" );
+        }
 
             _homebindIfInstance(player);
         }
@@ -391,6 +407,12 @@ void Group::Disband(bool hideDestroy)
                 player->SetOriginalGroup(NULL);
             else
                 player->SetGroup(NULL);
+            // Restore original faction if needed
+            if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+            {
+                player->setFactionForRace(player->getRace());
+                sLog.outDebug( "WORLD: Group Interfaction Interactions - Restore original faction (Disband)" );
+            }
         }
 
         // quest related GO state dependent from raid membership
Возможно, есть недочеты.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 25.10.2010, 21:24   #20
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Есть недочёты... И немало... Я пользовался более приемлемым вариантом, но я его давно не обновлял, т.к. rsa добавил к себе в репо именно этот хак.
Выкладываю последнюю версию, что была у меня.
Вложения
Тип файла: patch 2_group_10452.patch (8.6 Кб, 6 просмотров)
KiriX вне форума   Ответить с цитированием
Старый 26.10.2010, 05:05   #21
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от Black_Rose Посмотреть сообщение
Mangos_r10629 - уже не компиллится ни один из патчей в теме. У кого-нибудь есть рабочий патч для этой ревизии?
В соответствии с:
http://ru-mangos.ru/announcement.php?a=5
хотелось бы узанать, как именно "никампилецо".
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 26.10.2010, 19:20   #22
Black_Rose
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
В соответствии с:
http://ru-mangos.ru/announcement.php?a=5
хотелось бы узанать, как именно "никампилецо".
Были ошибки наподобие того, что функция определения лидера не член класса. Благодаря virusav проблема решилась, я смогла собрать сервер. Спасибо всем, кто обратил внимание на мой пост.
  Ответить с цитированием
Старый 27.10.2010, 02:48   #23
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Ошибка "наподобие того" обычно исправляется подобием того.

Вы крайне омерзительнейшим образом лишили возможности все коммьюнити получить полностью рабочую модификацию.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 14.01.2011, 00:29   #24
lSatol
Гость
 
Сообщений: n/a
По умолчанию Ограничитель - "альянс-орда"

На название темы не ругайтесь,прочитав содержимое вы поймете почему сложно придумать название темы которое бы соответствовало ее содержимому.
Сразу хочу сказать что я в этом деле недавно.И каких либо особых знаний у меня нету,есть только желание и стремление.

Первоначальная задача:

Сделать так что-бы альянс мог атаковать альянс и соответственно что-бы орда могла атаковать орду.Но что-бы люди из одной гильдии не могли атаковать друг друга,или-же созданием какого-либо значка над людьми из одной гильдии.



Мои мысли по этому поводу.
Как я ранее говорил я слабо разбираюсь в механике работы сервера,всех его составляющих,или-же вещей необходимых для его деятельности.

Прежде всего мне пришло на ум сделать все нужные мне локации как арены ( например как Gurubashi Arena ).Узнав что это можно осуществить путем редактирования AreaTable.dbc (еще не проверял),передо мной встал второй вопрос,вообщем-то самый сложный.

1.Как сделать так что-бы люди из одной гильдии не могли атаковать друг друга.

ИЛИ

2.Как сделать так что-бы над людьми (Над их никнеймом) из одной гильдии был одинаковый значок.


Мои мысли по первому варианту:
Я знаю что на арене сопартийцы не могут друг друга атаковать.
Соответственно если такое возможно,то когда игрок будет вступать в гильдию он будет попадать в рейд,и выйти от туда сможет только в том случае если он покинет гильдию.

Так-же я знаю что в игре существуют фракции.Может возможно сделать так что при вступление игроком в гильдию ему будет присваиваться ее фракция.Для всех эта фракция будет враждебна кроме самих согильдийцев.


Мои мыли по поводу второго варианта.
Знаю что подобные значки может выставлять рейд лидер для своих мемберов.
Думаю мысль понятна



Ну и вопрос к вам.
Как это можно осуществить.Только пожалуйста конкретизируйте,поскольку как я уже говорил я этом деле не силен

Последний раз редактировалось lSatol; 14.01.2011 в 00:34.
  Ответить с цитированием
Старый 14.01.2011, 07:12   #25
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от lSatol Посмотреть сообщение
Мои мысли по этому поводу.
Только пожалуйста конкретизируйте,поскольку как я уже говорил я этом деле не силен
Один из частных законов Мэрфи гласит - число людей, выдвигающих идеи, всегда на порядок больше того, кто может эти идеи реализовать.
Ваши мысли по этому поводу могут стать кому-либо интересны только тогда, когда вы сами сможете их реализовать хотя бы в черновом варианте. Школоты с фонтаном дурацких идей и без вас полный вовжп.
rsa вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
KiriX (14.01.2011), selector (14.01.2011), tempura (14.01.2011)
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10257] Fixed typo in "alliance" in recent commit changes. newsbot CMaNGOS Commits 0 24.07.2010 14:30
[10050] Implement apply non-trade slot item enchanting at trade complete. newsbot CMaNGOS Commits 0 11.06.2010 21:50
[mod] DK, Alliance Taxi DiffuSer Моды 2 10.05.2010 11:49
Alliance Vanguard репутация DiffuSer Запросы 10 15.04.2010 17:16


Текущее время: 00:19. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot