|
Архив - только для чтения |
| Модератор форума: andycrowz |
| Форум Корзина форума Корзина PvP Token System (PvP Token System with Honor, gold and arena reward) |
| PvP Token System |
[cut]Subject: [PATCH] PVP Token Patch With Honor and Arena Points Reward Added
Modified by Batters, keonji and bondiano Need test ! diff --git a/src/game/Language.h b/src/game/Language.h // Use for not-in-offcial-sources patches // Use for custom patches 11000-11999 +///PVP Token void _ApplyItemMods(Item *item,uint8 slot,bool apply); WorldPacket data(SMSG_PARTYKILLLOG, (8+8)); //send event PARTY_KILL m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1); /// Configuration elements |
САХАЛИН, Не может быть проблемы с
Quote (САХАЛИН) + ModifyHonor(honorAmount); Может быть лучше использовать оригинальную команду - ModifyHonorPoints? ОФФТОП: расскажи историю происхождения твоего ника - очень интересно) |
САХАЛИН, а так, вроде патчик правильный
Добавлено (16.12.2010, 17:53) Добавлено (16.12.2010, 17:59) Code Здесь был скрипт, который сейчас в первом посте))) Вроде так. |
САХАЛИН, под чистый мангос рев 10864 подойдет?
|
САХАЛИН, ну мне под чистый и нужно.
Щас скомпилю ядро проверю
Сообщение # 10 написано 16.12.2010 в 20:03
|
Error 1 error C2065: 'HonorAmount' : undeclared identifier c:\Core\mangos\src\game\Player.cpp 21834 game
Error 2 error C3861: 'SaveHonorToDB': identifier not found c:\Core\mangos\src\game\Player.cpp 21836 game Error 3 error C2065: 'GoldAmount' : undeclared identifier c:\Core\mangos\src\game\Player.cpp 21839 game Error 4 error C3861: 'SaveHonorToDB': identifier not found c:\Core\mangos\src\game\Player.cpp 21841 game Error 5 error C2065: 'ArenaAmount' : undeclared identifier c:\Core\mangos\src\game\Player.cpp 21844 game Error 6 error C3861: 'SaveHonorToDB': identifier not found c:\Core\mangos\src\game\Player.cpp 21846 game Вот что выдает MVS 2008 после компиляции. Все не буду больше накатывать патч на Quote (САХАЛИН) PvP Token System
Сообщение # 11 написано 16.12.2010 в 20:31
|
вот новый. Рабочий!
Code diff --git a/src/game/Language.h b/src/game/Language.h index 38ec346..4f8e6a9 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -851,6 +851,7 @@ enum MangosStrings // Use for not-in-offcial-sources patches // 10000-10999 + LANG_YOU_RECEIVE_TOKEN = 11050, // Use for custom patches 11000-11999 diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 106fdb4..d40d80a 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -21449,6 +21449,43 @@ void Player::UpdateFallInformationIfNeed( MovementInfo const& minfo,uint16 opcod SetFallInformation(minfo.GetFallTime(), minfo.GetPos()->z); } +///PVP Token +void Player::ReceiveToken() +{ + if(!sWorld.getConfig(CONFIG_PVP_TOKEN_ENABLE)) + return; + + uint8 MapRestriction = sWorld.getConfig(CONFIG_PVP_TOKEN_RESTRICTION); + + if( MapRestriction == 1 && !InBattleGround() && !HasByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP) || + MapRestriction == 2 && !HasByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP) || + MapRestriction == 3 && !InBattleGround()) + return; + + uint32 itemID = sWorld.getConfig(CONFIG_PVP_TOKEN_ITEMID); + uint32 itemCount = sWorld.getConfig(CONFIG_PVP_TOKEN_ITEMCOUNT); + uint32 goldAmount = sWorld.getConfig(CONFIG_PVP_TOKEN_GOLD); + uint32 honorAmount = sWorld.getConfig(CONFIG_PVP_TOKEN_HONOR); + uint32 arenaAmount = sWorld.getConfig(CONFIG_PVP_TOKEN_ARENA); + + ItemPosCountVec dest; + uint8 msg = CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, itemID, itemCount); + if( msg != EQUIP_ERR_OK ) // convert to possible store amount + { + SendEquipError( msg, NULL, NULL ); + return; + } + + Item* item = StoreNewItem( dest, itemID, true, Item::GenerateItemRandomPropertyId(itemID)); + SendNewItem(item,itemCount,true,false); + + if( honorAmount > 0 ) + ModifyHonorPoints(honorAmount); + SaveToDB(); + return; + + if( goldAmount > 0 ) + ModifyMoney(goldAmount); + SaveToDB(); + return; + + if( arenaAmount > 0 ) + ModifyArenaPoints(arenaAmount); + SaveToDB(); + return; + + ChatHandler(this).PSendSysMessage(LANG_YOU_RECEIVE_TOKEN); +} + + void Player::UnsummonPetTemporaryIfAny() { Pet* pet = GetPet(); diff --git a/src/game/Player.h b/src/game/Player.h index 544e7e1..6801a77 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -2019,6 +2019,9 @@ class MANGOS_DLL_SPEC Player : public Unit void _ApplyWeaponDependentAuraMods(Item *item, WeaponAttackType attackType, bool apply); void _ApplyWeaponDependentAuraCritMod(Item *item, WeaponAttackType attackType, Aura* aura, bool apply); void _ApplyWeaponDependentAuraDamageMod(Item *item, WeaponAttackType attackType, Aura* aura, bool apply); + + ///PVP Token + void ReceiveToken(); void _ApplyItemMods(Item *item,uint8 slot,bool apply); void _RemoveAllItemMods(); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index d0c82d8..91d3919 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -697,6 +697,11 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa if(player_tap && player_tap != pVictim) { player_tap->ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0); + + /// PvP Token + int8 leveldiff = player_tap->getLevel() - pVictim->getLevel(); + if((pVictim->GetTypeId() == TYPEID_PLAYER) && leveldiff < 10) + player_tap->ReceiveToken(); WorldPacket data(SMSG_PARTYKILLLOG, (8+8)); //send event PARTY_KILL data << player_tap->GetObjectGuid(); //player with killing blow diff --git a/src/game/World.cpp b/src/game/World.cpp index abf273d..034178a 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -755,6 +755,16 @@ void World::LoadConfigSettings(bool reload) setConfig(CONFIG_UINT32_TIMERBAR_BREATH_MAX, "TimerBar.Breath.Max", 180); setConfig(CONFIG_UINT32_TIMERBAR_FIRE_GMLEVEL, "TimerBar.Fire.GMLevel", SEC_CONSOLE); setConfig(CONFIG_UINT32_TIMERBAR_FIRE_MAX, "TimerBar.Fire.Max", 1); + + /* PvP Token System */ + setConfig(CONFIG_PVP_TOKEN_ENABLE,"PvPToken.Enable", true); + setConfig(CONFIG_PVP_TOKEN_ITEMID,"PvPToken.ItemID", 29434); + setConfig(CONFIG_PVP_TOKEN_ITEMCOUNT,"PvPToken.ItemCount", 1); + setConfig(CONFIG_PVP_TOKEN_GOLD,"PvPToken.Gold", 100000); + setConfig(CONFIG_PVP_TOKEN_HONOR,"PvPToken.Honor", 75000); + setConfig(CONFIG_PVP_TOKEN_ARENA,"PvPToken.Arena", 5000); + setConfig(CONFIG_PVP_TOKEN_RESTRICTION,"PvPToken.MapRestriction", 4); + + if(getConfig(CONFIG_PVP_TOKEN_ITEMCOUNT) < 1) + setConfig(CONFIG_PVP_TOKEN_ITEMCOUNT,"PvPToken.ItemCount",1); m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1); if(m_VisibleUnitGreyDistance > MAX_VISIBILITY_DISTANCE) diff --git a/src/game/World.h b/src/game/World.h index b289b91..31ee893 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -260,7 +260,15 @@ enum eConfigFloatValues CONFIG_FLOAT_CREATURE_FAMILY_ASSISTANCE_RADIUS, CONFIG_FLOAT_GROUP_XP_DISTANCE, CONFIG_FLOAT_THREAT_RADIUS, - CONFIG_FLOAT_VALUE_COUNT + CONFIG_FLOAT_VALUE_COUNT, + + ///PVP Token + CONFIG_PVP_TOKEN_ENABLE, + CONFIG_PVP_TOKEN_ITEMID, + CONFIG_PVP_TOKEN_ITEMCOUNT, + CONFIG_PVP_TOKEN_GOLD, + CONFIG_PVP_TOKEN_HONOR, + CONFIG_PVP_TOKEN_ARENA, + CONFIG_PVP_TOKEN_RESTRICTION + }; /// Configuration elements diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index f5ba807..390c66c 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -1519,3 +1519,38 @@ SOAP.Port = 7878 CharDelete.Method = 0 CharDelete.MinLevel = 0 CharDelete.KeepDays = 30 + +################################################################################################################### +# PvP Token System (custom patch) +# +# PvPToken.Enable +# Enable/disable PvP Token system. +# Default: 1 (enabled) +# 0 (disabled) +# +# PvPToken.ItemID +# The item ID of the token that players will receive after killing an enemy. +# Default: 29434 (Badge of Justice) +# +# PvPToken.ItemCount +# The count amount of the ItemID +# Default: 1 +# +# PvPToken.GoldCount +# The amount of gold that players will receive after killing an enemy. +# Default: 100000 +# +# PvPToken.Honor +# The amount of honor points that players will receive after killing an enemy. +# Default: 75000 +# +# PvPToken.Arena +# The amount of arena points that players will receive after killing an enemy. +# Default: 5000 +# +# PvPToken.MapRestriction +# The type of maps where players can receive the token +# Default: 4 - all maps +# 3 - battlegrounds only +# 2 - FFA areas only (both instanced and world arenas) +# 1 - battlegrounds and FFA areas only +# +################################################################################################################### + +PvPToken .Enable = 1 +PvPToken.ItemID = 29434 +PvPToken.ItemCount = 1 +PvPToken.Gold = 100000 +PvPToken.Honor = 75000 +PvPToken.Arena = 5000 +PvPToken.MapRestriction = 4
Сообщение # 15 написано 17.12.2010 в 17:11
|
Сейчас протестируем
Сообщение # 20 написано 17.12.2010 в 19:12
|
Скомпилилось нормально, буду тестить.
Сообщение # 21 написано 17.12.2010 в 19:43
|
Ginezes, ,распишу подробно, 1) береш себя , руки и мозг. 2) садишся к компу. 3) смотриш тему как сделать свою сборку. и все.
Сообщение # 24 написано 18.05.2011 в 18:59
|
Quote (Ginezes) patchname тут напишешь название патча и закинешь в папку mangos (исходники) потом патчишь и компилируешь
Сообщение # 26 написано 20.05.2011 в 07:34
|
staford11
Quote тут напишешь название патча "PvP Token System" ?
Quote и закинешь в папку mangos (исходники) В каком виде? -повторяю вопрос? Код надо сохранить в файл с раширением .patch, т.е. PvP_Token_System..patch? Патчу через Git? Закидываю этот файл в исходники и компилирую ядро? Так?
Сообщение # 27 написано 20.05.2011 в 11:28
|
Quote (Ginezes) PvP Token System любое название, будь то cat.patch, или dog.patch, или juline.patch Quote (Ginezes) Патчу через Git? да Quote (Ginezes) Закидываю этот файл в исходники и компилирую ядро? Так? закидываешь файл в исходники, патчишь и компилируешь
Сообщение # 28 написано 20.05.2011 в 13:07
|
Данная тема была перемещена из раздела Патчи в ядро MaNGOS.
Причина перемещения: устарело Переместил: ph3n.
Сообщение # 30 написано 14.10.2012 в 13:49
|
| |||
| |||



спс