• Страница 1 из 2
  • 1
  • 2
  • »
Архив - только для чтения
Модератор форума: andycrowz  
PvP Token System
Tomogavk
Сержант
Code

diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in
index 0bb942e..339b5a1 100644
--- a/src/mangosd/mangosd.conf.dist.in
+++ b/src/mangosd/mangosd.conf.dist.in
@@ -1375,3 +1375,33 @@ Ra.IP = 0.0.0.0
   Ra.Port = 3443
   Ra.MinLevel = 3
   Ra.Secure = 1
+
+####################################################################################################################
+# PvP Token System
+#
+#    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.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 = 0
+PvPToken.ItemID = 29434
+PvPToken.ItemCount = 1
+PvPToken.MapRestriction = 4
diff --git a/src/game/Language.h b/src/game/Language.h
index 823d6d5..938755b 100644
--- a/src/game/Language.h
+++ b/src/game/Language.h
@@ -848,7 +848,7 @@ enum MangosStrings
       //                    10000-10999
     
       // Use for custom patches             11000-11999
-
+  LANG_YOU_RECEIVE_TOKEN              = 11050,
       // NOT RESERVED IDS                   12000-1999999999
       // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
       // For other tables maybe             2000010000-2147483647 (max index)
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 65c6ac0..34535df 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -21017,6 +21017,35 @@ void Player::ResummonPetTemporaryUnSummonedIfAny()
       m_temporaryUnsummonedPetNumber = 0;
   }
     
+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);
+
+    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);
+
+    ChatHandler(this).PSendSysMessage(LANG_YOU_RECEIVE_TOKEN);
+}
+
   bool Player::canSeeSpellClickOn(Creature const *c) const
   {
       if(!c->HasFlag(UNIT_NPC_FLAGS,UNIT_NPC_FLAG_SPELLCLICK))
diff --git a/src/game/Player.h b/src/game/Player.h
index a1ea792..158da81 100644
--- a/src/game/Player.h
+++ b/src/game/Player.h
@@ -1950,7 +1950,9 @@ class MANGOS_DLL_SPEC Player : public Unit
           void ModifyHonorPoints( int32 value );
           void ModifyArenaPoints( int32 value );
           uint32 GetMaxPersonalArenaRatingRequirement();
-
+    
+        void ReceiveToken();
+    
           //End of PvP System
     
           void SetDrunkValue(uint16 newDrunkValue, uint32 itemid=0);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 06d1533..98af84b 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -580,6 +580,11 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
               player->RewardPlayerAndGroupAtKill(pVictim);
               player->ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0);
     
+   // PvP Token
+   int8 leveldiff = player->getLevel() - pVictim->getLevel();
+   if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10)
+   player->ReceiveToken();
+     
               WorldPacket data(SMSG_PARTYKILLLOG, (8+8)); //send event PARTY_KILL
               data << uint64(player->GetGUID()); //player with killing blow
               data << uint64(pVictim->GetGUID()); //victim
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 3361b5e..c9a4ffb 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -954,6 +954,15 @@ void World::LoadConfigSettings(bool reload)
     
       m_configs[CONFIG_THREAT_RADIUS] = sConfig.GetIntDefault("ThreatRadius", 100);
     
+     /* PvP Token System */
+    m_configs[CONFIG_PVP_TOKEN_ENABLE] = sConfig.GetBoolDefault("PvPToken.Enable", true);
+    m_configs[CONFIG_PVP_TOKEN_ITEMID] = sConfig.GetIntDefault("PvPToken.ItemID", 29434);
+    m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] = sConfig.GetIntDefault("PvPToken.ItemCount", 1);
+    m_configs[CONFIG_PVP_TOKEN_RESTRICTION] = sConfig.GetIntDefault("PvPToken.MapRestriction", 4);
+
+    if(m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] <= 0)
+        m_configs[CONFIG_PVP_TOKEN_ENABLE] = 0;
+
       // always use declined names in the russian client
       m_configs[CONFIG_DECLINED_NAMES_USED] =
           (m_configs[CONFIG_REALM_ZONE] == REALM_ZONE_RUSSIAN) ? true : sConfig.GetBoolDefault("DeclinedNames", false);
diff --git a/src/game/World.h b/src/game/World.h
index 977a440..f67cd72 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -199,6 +199,10 @@ enum WorldConfigs
       CONFIG_LISTEN_RANGE_SAY,
       CONFIG_LISTEN_RANGE_TEXTEMOTE,
       CONFIG_LISTEN_RANGE_YELL,
+    CONFIG_PVP_TOKEN_E NABLE,
+    CONFIG_PVP_TOKEN_ITEMID,
+    CONFIG_PVP_TOKEN_ITEMCOUNT,
+    CONFIG_PVP_TOKEN_RESTRIC TION,
       CONFIG_SKILL_MILLING,
       CONFIG_BATTLEGROUND_CAST_DESERTER,
       CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE,
--   
1.6.3 .3

Сообщение # 1 отредактировано Tomogavk - Вторник, 29.12.2009, 01:33
L30m4nc3r
TC User
Tomogavk, можно узнать поподробнее о патче?
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. ©
Сообщение # 2 написано 29.12.2009 в 22:54
Alexnosfer
Центурион
Quote (Pro|100|Hens)
Tomogavk, можно узнать поподробнее о патче?

Угу, мне тоже интересно
Просто просматривай видео и получай PTZ - Oчки, которые ты можеш обменять на ценные призы, такие как iPod, X-BOX, PSP, и многие другие !
Вводите свой email и через некоторое время на него придёт приглашение, которое вам понадобится для регистрации.
Сообщение # 3 написано 29.12.2009 в 23:07
Tomogavk
Сержант
Система как на тринити, включаешь в конфиге, выбираешь итем который будет даваться, выбираешь количество этих итемов, и на каких зонах, их 4: на аренах(включая гурубаши) на бг, на бг и на аренах и везде smile
Сообщение # 4 написано 30.12.2009 в 01:28
L30m4nc3r
TC User
даваться за что? за килы в тех зонах?
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. ©
Сообщение # 5 написано 30.12.2009 в 19:43
Tomogavk
Сержант
Quote (Pro|100|Hens)
даваться за что? за килы в тех зонах?

Именно за них
Сообщение # 6 написано 31.12.2009 в 00:05
L30m4nc3r
TC User
Tomogavk, также под все ревы? ну спс но плюс еще дать не могу пррости smile
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. ©
Сообщение # 7 написано 31.12.2009 в 00:07
Tomogavk
Сержант
Quote (Pro|100|Hens)
Tomogavk, также под все ревы? ну спс но плюс еще дать не могу пррости

Ну пока под новые ревы работает, если перестанет пишите подгоню.
Сообщение # 8 написано 31.12.2009 в 00:15
L30m4nc3r
TC User
Tomogavk, мне патчи интересные бы для 2.4.3
хотелось бы узнать подойдет ли сброс кд и вот твоя эта. итд.
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. ©
Сообщение # 9 написано 31.12.2009 в 00:19
Tomogavk
Сержант
Quote (Pro|100|Hens)
omogavk, мне патчи интересные бы для 2.4.3
хотелось бы узнать подойдет ли сброс кд и вот твоя эта. итд.

Сброс кд подойдет, да и эта должна подойди, если не подойдет напиши я скачаю 2.4.3 и подгоню патч под 2.4.3
Сообщение # 10 написано 31.12.2009 в 00:20
L30m4nc3r
TC User
Tomogavk, в асю добавь 365932722
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. ©
Сообщение # 11 написано 31.12.2009 в 00:29
Enigman
Проверенный торговец
Pro[100]Hens,
Подошла для 2.4.3??

Добавлено (05.01.2010, 00:02)
---------------------------------------------
Tomogavk,
Можешь зделать для 2.4.3)
и чтобы падали на бг и на гурбаши арене баджи...)
с меня +8))

Сообщение # 12 написано 05.01.2010 в 00:02
Apach_inf
Скаут
Это для 3.3.0 идет? Что-то когда исходники мангоса пытаюсь патчить ошибки выдает.

Добавлено (25.01.2010, 14:52)
---------------------------------------------
Это для 3.3.0 идет? Что-то когда исходники мангоса пытаюсь патчить ошибки выдает.

Сообщение # 13 написано 25.01.2010 в 14:52
Tomogavk
Сержант
руками ставь, для 3.3.0 немного строки не совпадают.
Сообщение # 14 написано 28.01.2010 в 05:03
zyxel8
Сержант
Сообщение # 15 написано 28.01.2010 в 14:39
Nomerno
Капрал
А куда это писать?
Сообщение # 16 написано 10.04.2010 в 22:43
L30m4nc3r
TC User
Nomerno, так-как вы юзер готовых сборок, вам не понять... это делается при компилировании ядра
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. ©
Сообщение # 17 написано 11.04.2010 в 00:07
Nomerno
Капрал
Хенс прочти ЛС плиз
Сообщение # 18 написано 11.04.2010 в 00:38
САХАЛИН
Центурион
руки обломаю блин angry angry angry

[cut]
diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in
index 0bb942e..339b5a1 100644
--- a/src/mangosd/mangosd.conf.dist.in
+++ b/src/mangosd/mangosd.conf.dist.in
@@ -1375,3 +1375,33 @@ Ra.IP = 0.0.0.0
Ra.Port = 3443
Ra.MinLevel = 3
Ra.Secure = 1
+
+####################################################################################################################
+# PvP Token System
+#
+#    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.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 = 0
+PvPToken.ItemID = 29434
+PvPToken.ItemCount = 1
+PvPToken.MapRestriction = 4
diff --git a/src/game/Language.h b/src/game/Language.h
index 823d6d5..938755b 100644
--- a/src/game/Language.h
+++ b/src/game/Language.h
@@ -848,7 +848,7 @@ enum MangosStrings
//                    10000-10999

// Use for custom patches             11000-11999
-
+  LANG_YOU_RECEIVE_TOKEN              = 11050,
// NOT RESERVED IDS                   12000-1999999999
// `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
// For other tables maybe             2000010000-2147483647 (max index)
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 65c6ac0..34535df 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -21017,6 +21017,35 @@ void Player::ResummonPetTemporaryUnSummonedIfAny()
m_temporaryUnsummonedPetNumber = 0;
}

+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);
+
+    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);
+
+    ChatHandler(this).PSendSysMessage(LANG_YOU_RECEIVE_TOKEN);
+}
+
bool Player::canSeeSpellClickOn(Creature const *c) const
{
if(!c->HasFlag(UNIT_NPC_FLAGS,UNIT_NPC_FLAG_SPELLCLICK))
diff --git a/src/game/Player.h b/src/game/Player.h
index a1ea792..158da81 100644
--- a/src/game/Player.h
+++ b/src/game/Player.h
@@ -1950,7 +1950,9 @@ class MANGOS_DLL_SPEC Player : public Unit
void ModifyHonorPoints( int32 value );
void ModifyArenaPoints( int32 value );
uint32 GetMaxPersonalArenaRatingRequirement();
-
+
+        void ReceiveToken();
+
//End of PvP System

void SetDrunkValue(uint16 newDrunkValue, uint32 itemid=0);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 06d1533..98af84b 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -580,6 +580,11 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
player->RewardPlayerAndGroupAtKill(pVictim);
player->ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0);

+   // PvP Token
+   int8 leveldiff = player->getLevel() - pVictim->getLevel();
+   if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10)
+   player->ReceiveToken();
+
WorldPacket data(SMSG_PARTYKILLLOG, (8+8)); //send event PARTY_KILL
data << uint64(player->GetGUID()); //player with killing blow
data << uint64(pVictim->GetGUID()); //victim
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 3361b5e..c9a4ffb 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -954,6 +954,15 @@ void World::LoadConfigSettings(bool reload)

m_configs[CONFIG_THREAT_RADIUS] = sConfig.GetIntDefault("ThreatRadius", 100);

+     /* PvP Token System */
+    m_configs[CONFIG_PVP_TOKEN_ENABLE] = sConfig.GetBoolDefault("PvPToken.Enable", true);
+    m_configs[CONFIG_PVP_TOKEN_ITEMID] = sConfig.GetIntDefault("PvPToken.ItemID", 29434);
+    m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] = sConfig.GetIntDefault("PvPToken.ItemCount", 1);
+    m_configs[CONFIG_PVP_TOKEN_RESTRICTION] = sConfig.GetIntDefault("PvPToken.MapRestriction", 4);
+
+    if(m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] <= 0)
+        m_configs[CONFIG_PVP_TOKEN_ENABLE] = 0;
+
// always use declined names in the russian client
m_configs[CONFIG_DECLINED_NAMES_USED] =
(m_configs[CONFIG_REALM_ZONE] == REALM_ZONE_RUSSIAN) ? true : sConfig.GetBoolDefault("DeclinedNames", false);
diff --git a/src/game/World.h b/src/game/World.h
index 977a440..f67cd72 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -199,6 +199,10 @@ enum WorldConfigs
CONFIG_LISTEN_RANGE_SAY,
CONFIG_LISTEN_RANGE_TEXTEMOTE,
CONFIG_LISTEN_RANGE_YELL,
+    CONFIG_PVP_TOKEN_E NABLE,
+    CONFIG_PVP_TOKEN_ITEMID,
+    CONFIG_PVP_TOKEN_ITEMCOUNT,
+    CONFIG_PVP_TOKEN_RESTRIC TION,
CONFIG_SKILL_MILLING,
CONFIG_BATTLEGROUND_CAST_DESERTER,
CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE,
--
1 .6.3 .3
[/cut]

меняем на

[cut]
diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in
index 0bb942e..339b5a1 100644
--- a/src/mangosd/mangosd.conf.dist.in
+++ b/src/mangosd/mangosd.conf.dist.in
@@ -1375,3 +1375,33 @@ Ra.IP = 0.0.0.0
Ra.Port = 3443
Ra.MinLevel = 3
Ra.Secure = 1
+
+####################################################################################################################
+# PvP Token System
+#
+#    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.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 = 0
+PvPToken.ItemID = 29434
+PvPToken.ItemCount = 1
+PvPToken.MapRestriction = 4
diff --git a/src/game/Language.h b/src/game/Language.h
index 823d6d5..938755b 100644
--- a/src/game/Language.h
+++ b/src/game/Language.h
@@ -848,7 +848,7 @@ enum MangosStrings
//                    10000-10999

// Use for custom patches             11000-11999
-
+  LANG_YOU_RECEIVE_TOKEN              = 11050,
// NOT RESERVED IDS                   12000-1999999999
// `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
// For other tables maybe             2000010000-2147483647 (max index)
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 65c6ac0..34535df 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -21017,6 +21017,35 @@ void Player::ResummonPetTemporaryUnSummonedIfAny()
m_temporaryUnsummonedPetNumber = 0;
}

+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);
+
+    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);
+
+    ChatHandler(this).PSendSysMessage(LANG_YOU_RECEIVE_TOKEN);
+}
+
bool Player::canSeeSpellClickOn(Creature const *c) const
{
if(!c->HasFlag(UNIT_NPC_FLAGS,UNIT_NPC_FLAG_SPELLCLICK))
diff --git a/src/game/Player.h b/src/game/Player.h
index a1ea792..158da81 100644
--- a/src/game/Player.h
+++ b/src/game/Player.h
@@ -1950,7 +1950,9 @@ class MANGOS_DLL_SPEC Player : public Unit
void ModifyHonorPoints( int32 value );
void ModifyArenaPoints( int32 value );
uint32 GetMaxPersonalArenaRatingRequirement();
-
+
+        void ReceiveToken();
+
//End of PvP System

void SetDrunkValue(uint16 newDrunkValue, uint32 itemid=0);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 06d1533..98af84b 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -580,6 +580,11 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
player->RewardPlayerAndGroupAtKill(pVictim);
player->ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0);

+   // PvP Token
+   uint8 leveldiff = player->getLevel() - pVictim->getLevel();
+   if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10)
+   player->ReceiveToken();
+
WorldPacket data(SMSG_PARTYKILLLOG, (8+8)); //send event PARTY_KILL
data << uint64(player->GetGUID()); //player with killing blow
data << uint64(pVictim->GetGUID()); //victim
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 3361b5e..c9a4ffb 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -954,6 +954,15 @@ void World::LoadConfigSettings(bool reload)

m_configs[CONFIG_THREAT_RADIUS] = sConfig.GetIntDefault("ThreatRadius", 100);

+     /* PvP Token System */
+    m_configs[CONFIG_PVP_TOKEN_ENABLE] = sConfig.GetBoolDefault("PvPToken.Enable", true);
+    m_configs[CONFIG_PVP_TOKEN_ITEMID] = sConfig.GetIntDefault("PvPToken.ItemID", 29434);
+    m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] = sConfig.GetIntDefault("PvPToken.ItemCount", 1);
+    m_configs[CONFIG_PVP_TOKEN_RESTRICTION] = sConfig.GetIntDefault("PvPToken.MapRestriction", 4);
+
+    if(m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] <= 0)
+        m_configs[CONFIG_PVP_TOKEN_ENABLE] = 0;
+
// always use declined names in the russian client
m_configs[CONFIG_DECLINED_NAMES_USED] =
(m_configs[CONFIG_REALM_ZONE] == REALM_ZONE_RUSSIAN) ? true : sConfig.GetBoolDefault("DeclinedNames", false);
diff --git a/src/game/World.h b/src/game/World.h
index 977a440..f67cd72 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -199,6 +199,10 @@ enum WorldConfigs
CONFIG_LISTEN_RANGE_SAY,
CONFIG_LISTEN_RANGE_TEXTEMOTE,
CONFIG_LISTEN_RANGE_YELL,
+    CONFIG_PVP_TOKEN_ENABLE,
+    CONFIG_PVP_TOKEN_ITEMID,
+    CONFIG_PVP_TOKEN_ITEMCOUNT,
+    CONFIG_PVP_TOKEN_RESTRICTION,
CONFIG_SKILL_MILLING,
CONFIG_BATTLEGROUND_CAST_DESERTER,
CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE,
--
1 .6.3 .3
[/cut]



Ой ща по саням дам !
http://wow.grin.by
Сообщение # 19 отредактировано САХАЛИН - Четверг, 26.08.2010, 21:17
AlO
Маршал
САХАЛИН, а у меня на исходниках 10155 проблемы

diff --git a/src/game/World.h b/src/game/World.h
index 977a440..f67cd72 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -199,6 +199,10 @@ enum WorldConfigs - нету такого в world.h
CONFIG_LISTEN_RANGE_SAY,
CONFIG_LISTEN_RANGE_TEXTEMOTE, - и этих строк
CONFIG_LISTEN_RANGE_YELL,

+ CONFIG_PVP_TOKEN_ENABLE,
+ CONFIG_PVP_TOKEN_ITEMID,
+ CONFIG_PVP_TOKEN_ITEMCOUNT,
+ CONFIG_PVP_TOKEN_RESTRICTION,
CONFIG_SKILL_MILLING,
CONFIG_BATTLEGROUND_CAST_DESERTER, - и этих строк
CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE,

Сообщение # 20 отредактировано AlO - Четверг, 26.08.2010, 22:51
САХАЛИН
Центурион
Я реализовал так:
Code

      CONFIG_FLOAT_LISTEN_RANGE_SAY,   - это 10400, не знаю что с этим получится но компилится вроде норм, попробую запустить если крахов не бут значит всё ок.
      CONFIG_FLOAT_LISTEN_RANGE_YELL,
      CONFIG_FLOAT_LISTEN_RANGE_TEXTEMOTE,
      CONFIG_PVP_TOKEN_ENABLE,   
      CONFIG_PVP_TOKEN _ITEMID,   
      CONFIG_PVP_TOKEN_ITEMCOUNT,   
      CONFIG_PVP_TOKEN_RESTRICTION,
      CONFIG_FLOAT_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS ,
      CONFIG_FLOAT_CREATURE_FAMILY_ASSISTANCE_RADIUS,
      CONFIG_FLOAT_GROUP_XP_DISTANCE,
      CONFIG_FLOAT_THREAT_RADIUS,
      CONFIG _FLOAT_VALUE_COUNT

Я не помню как в 10155 выложи кусок скрипта попробую поправить. Выкладывай со строк CONFIG_FLOAT_LISTEN_RANGE_SAY да строки CONFIG_FLOAT_VALUE_COUNT я запишу сюда готовую комбинацию.

Добавлено (27.08.2010, 01:05)
---------------------------------------------
AlO, я вот не догоняю такую штуку должно быть + int8 leveldiff = player->getLevel() - pVictim->getLevel(); или всё же я прав что написал + uint8 leveldiff = player->getLevel() - pVictim->getLevel(); но тогда не понятно почему у меня при компиле лезет ошибка. sad



Ой ща по саням дам !
http://wow.grin.by
Сообщение # 21 отредактировано САХАЛИН - Четверг, 26.08.2010, 23:23
AlO
Маршал
САХАЛИН, ххх, я тоже думал что так можно, но вдруг функцианировать не будет?

Добавлено (27.08.2010, 10:56)
---------------------------------------------
САХАЛИН, я думаю должно быть int8

Добавлено (27.08.2010, 10:58)
---------------------------------------------
САХАЛИН, у меня в исходниках такие же строки как и у тебя.

Сообщение # 22 написано 27.08.2010 в 10:58
lanc
The Hurt Locker
вабще это все очень старая реализация но как вариант когда я еще несколько месяцев назад использовал эту реализацию я просто переписывал под новые определения
Code
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index a5a7917..6ae7068 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -866,6 +866,11 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
                  group_tap->BroadcastPacket(&data, false, group_tap->GetMemberGroup(player_tap->GetObjectGuid()),player_tap->GetObjectGuid());

              player_tap->SendDirectMessage(&data);
+
+            // PvP Token System
+            int8 leveldiff = player_tap->getLevel() - pVictim->getLevel();
+            if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10)
+                player_tap->ReceiveToken();
          }
   
          // Reward player, his pets, and group/raid members

САХАЛИН, uint8 leveldiff = player ...не делайте так!

Code
diff --git a/src/game/World.h b/src/game/World.h
@@ -173,6 +173,9 @@ enum eConfigUint32Values
      CONFIG_UINT32_TIMERBAR_BREATH_MAX,
      CONFIG_UINT32_TIMERBAR_FIRE_GMLEVEL,
      CONFIG_UINT32_TIMERBAR_FIRE_MAX,
+    CONFIG_PVP_TOKEN_ITEMID,
+    CONFIG_PVP_TOKEN_ITEMCOUNT,
+    CONFIG_PVP_TOKEN_RESTRICTION,
      CONFIG_UINT32_VALUE_COUNT
  };
   
@@ -307,6 +310,7 @@ enum eConfigBoolValues
      CONFIG_BOOL_NO_COOLDOWN,
      CONFIG_BOOL_HURT_IN_REAL_TIME,
      CONFIG_BOOL_NO_WAIT_AFTER_CAST,
+    CONFIG_BOOL_PVP_TOKEN_ENABLE,
      CONFIG_BOOL_VALUE_COUNT
  };
   
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 49ac6de..229ac92 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -20027,6 +20027,6 @@ void Player::ResummonPetTemporaryUnSummonedIfAny()
      m_temporaryUnsummonedPetNumber = 0;
  }
   
  void Player::ReceiveToken()
  {
-   if(!sWorld.getConfig(CONFIG_PVP_TOKEN_ENABLE))
+  if(!sWorld.getConfig(CONFIG_BOOL_PVP_TOKEN_ENABLE))
          return;

но это еще не все, его надо под основание переписать

Сообщение # 23 написано 27.08.2010 в 12:29
САХАЛИН
Центурион
lanc, хорошо тогда подскажи как вот эту часть патча, переписать под новые определения, у меня только в Unit.cpp проблема с int8 leveldiff = player_tap->getLevel() - pVictim->getLevel(); частью кода, а так всё вроде прекрасно, но если менять int8 leveldiff = player_tap->getLevel() - pVictim->getLevel(); то и строку if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10) тож колупать придётся. sad

+
+ // PvP Token System
+ int8 leveldiff = player_tap->getLevel() - pVictim->getLevel();
+ if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10)
+

Добавлено (27.08.2010, 14:20)
---------------------------------------------
Переколупал пачт, вот чё получилось, не знаю пашет или нет )
[cut]
diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in
index 0bb942e..339b5a1 100644
--- a/src/mangosd/mangosd.conf.dist.in
+++ b/src/mangosd/mangosd.conf.dist.in
@@ -1375,3 +1375,33 @@ Ra.IP = 0.0.0.0
Ra.Port = 3443
Ra.MinLevel = 3
Ra.Secure = 1
+
+####################################################################################################################
+# PvP Token System
+#
+# 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.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 = 0
+PvPToken.ItemID = 29434
+PvPToken.ItemCount = 1
+PvPToken.MapRestriction = 4
diff --git a/src/game/Language.h b/src/game/Language.h
index 823d6d5..938755b 100644
--- a/src/game/Language.h
+++ b/src/game/Language.h
@@ -848,7 +848,7 @@ enum MangosStrings
// 10000-10999

// Use for custom patches 11000-11999
-
+ LANG_YOU_RECEIVE_TOKEN = 11050,
// NOT RESERVED IDS 12000-1999999999
// `db_script_string` table index 2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
// For other tables maybe 2000010000-2147483647 (max index)
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 65c6ac0..34535df 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -21017,6 +21017,35 @@ void Player::ResummonPetTemporaryUnSummonedIfAny()
m_temporaryUnsummonedPetNumber = 0;
}

+void Player::ReceiveToken()
+{
+ if(!sWorld.getConfig(CONFIG_BOOL_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_UINT32_PVP_TOKEN_ITEMID);
+ uint32 itemCount = sWorld.getConfig(CONFIG_UINT32_PVP_TOKEN_ITEMCOUNT);
+
+ 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);
+
+ ChatHandler(this).PSendSysMessage(LANG_YOU_RECEIVE_TOKEN);
+}
+
bool Player::canSeeSpellClickOn(Creature const *c) const
{
if(!c->HasFlag(UNIT_NPC_FLAGS,UNIT_NPC_FLAG_SPELLCLICK))
diff --git a/src/game/Player.h b/src/game/Player.h
index a1ea792..158da81 100644
--- a/src/game/Player.h
+++ b/src/game/Player.h
@@ -1950,7 +1950,9 @@ class MANGOS_DLL_SPEC Player : public Unit
void ModifyHonorPoints( int32 value );
void ModifyArenaPoints( int32 value );
uint32 GetMaxPersonalArenaRatingRequirement();
-
+
+ void ReceiveToken();
+
//End of PvP System

void SetDrunkValue(uint16 newDrunkValue, uint32 itemid=0);
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 06d1533..98af84b 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -866,6 +866,11 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
group_tap->BroadcastPacket(&data, false, group_tap->GetMemberGroup(player_tap->GetObjectGuid()),player_tap->GetObjectGuid());

player_tap->SendDirectMessage(&data);
+
+ // PvP Token System
+ int8 leveldiff = player_tap->getLevel() - pVictim->getLevel();
+ if(!pVictim->HasAuraType(SPELL_AURA_NO_PVP_CREDIT) && leveldiff < 10)
+ player_tap->ReceiveToken();
}

// Reward player, his pets, and group/raid members
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 3361b5e..c9a4ffb 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -954,6 +954,15 @@ void World::LoadConfigSettings(bool reload)

m_configs[CONFIG_THREAT_RADIUS] = sConfig.GetIntDefault("ThreatRadius", 100);

+ /* PvP Token System */
+ m_configs[CONFIG_UINT32_PVP_TOKEN_ENABLE] = sConfig.GetBoolDefault("PvPToken.Enable", true);
+ m_configs[CONFIG_UINT32_PVP_TOKEN_ITEMID] = sConfig.GetIntDefault("PvPToken.ItemID", 29434);
+ m_configs[CONFIG_UINT32_PVP_TOKEN_ITEMCOUNT] = sConfig.GetIntDefault("PvPToken.ItemCount", 1);
+ m_configs[CONFIG_UINT32_PVP_TOKEN_RESTRICTION] = sConfig.GetIntDefault("PvPToken.MapRestriction", 4);
+
+ if(m_configs[CONFIG_PVP_TOKEN_ITEMCOUNT] <= 0)
+ m_configs[CONFIG_PVP_TOKEN_ENABLE] = 0;
+
// always use declined names in the russian client
m_configs[CONFIG_DECLINED_NAMES_USED] =
(m_configs[CONFIG_REALM_ZONE] == REALM_ZONE_RUSSIAN) ? true : sConfig.GetBoolDefault("DeclinedNames", false);
diff --git a/src/game/World.h b/src/game/World.h
index 977a440..f67cd72 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -179,6 +19,10 @@ enum WorldConfigs
CONFIG_UINT32_TIMERBAR_BREATH_MAX,
CONFIG_UINT32_TIMERBAR_FIRE_GMLEVEL,
CONFIG_UINT32_TIMERBAR_FIRE_MAX,
+ CONFIG_UINT32_PVP_TOKEN_ITEMID,
+ CONFIG_UINT32_PVP_TOKEN_ITEMCOUNT,
+ CONFIG_UINT32_PVP_TOKEN_RESTRICTION,
CONFIG_UINT32_MIN_LEVEL_STAT_SAVE,
CONFIG_UINT32_CHARDELETE_KEEP_DAYS,
CONFIG_UINT32_CHARDELETE_METH OD,
CONFIG_UINT32_CHARDELETE_MIN_LEVEL,
CONFIG_UINT32_RANDOM_BG_RESET_HOUR
CONFIG_UINT32_VALUE_COUNT
};
@@ -324,6 +330,7 @@ enum eConfigBoolValues
CONFIG_BOOL_CLEAN_CHARACTER_DB,
CONFIG_BOOL_VMAP_INDOOR_CHECK,
CONFIG_BOOL_LOOT_CHESTS_IGNORE_DB,
+ CONFIG_BOOL_PVP_TOKEN_ENABLE,
CONFIG_BOOL_VALUE_COUNT
};

--
1.6.3 .3
[/cut]

Добавлено (27.08.2010, 20:09)
---------------------------------------------
lanc, поправь патч будь хорошим человеком smile



Ой ща по саням дам !
http://wow.grin.by
Сообщение # 24 отредактировано САХАЛИН - Пятница, 27.08.2010, 14:21
САХАЛИН
Центурион
А сам не знаю с++ )

Добавлено (01.09.2010, 13:30)
---------------------------------------------
Ну так что народ помогите с патчем + не обижу )



Ой ща по саням дам !
http://wow.grin.by
Сообщение # 25 написано 01.09.2010 в 13:30
{IceCat}
Командир
мне тоже он нужен под старые ревы =/
Мой основной профиль - No-One
Сообщение # 26 написано 02.09.2010 в 00:29
САХАЛИН
Центурион
Это под старую, а мне нада под новую, так что {IceCat}, качай бут пахать.


Ой ща по саням дам !
http://wow.grin.by
Сообщение # 27 написано 02.09.2010 в 19:51
deadzone
Скаут
Дайте кто нибудь ядро мангос 2.4.3 с этим патчем, с меня +
Сообщение # 28 написано 07.09.2010 в 22:35
САХАЛИН
Центурион
deadzone, поищи тута тык


Ой ща по саням дам !
http://wow.grin.by
Сообщение # 29 написано 07.09.2010 в 22:37
deadzone
Скаут
Там нет с таким патчем
Сообщение # 30 написано 08.09.2010 в 16:35
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: