Advertisement
Guest User

blue

a guest
Feb 3rd, 2011
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.53 KB | None | 0 0
  1. /* A rendszert módosította: Blue
  2. */
  3. #include "ScriptPCH.h"
  4.  
  5. float Version = 2.50f; // Ehhez nem nyúlunk
  6. bool PvPSystemEnabled = true; // Ez legyen False ha ki akarjuk kapcsolni a rendszert.
  7. bool OnlyInBattlegrounds = false;
  8. bool LooseTokenOnPvPDeath = false;
  9. int32 AmountOfItemsYouWantTheVictimToLoose = 1;
  10. bool AddTokenOnPvPKill = true;
  11. int32 ItemReward = 30000; //The ItemID of the reward.
  12. int32 AmountOfRewardsOnKillStreak[5] = { 1, 3, 5, 7, 10 }; //Mennyi jutalom itemet kapjon a killer.
  13. int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 3; // Ezt vágjuk mi.
  14. const int32 KillerStreak1 = 5; // Mennyi legyen a minimum killstreak aminél announcel.
  15. const int32 KillerStreak2 = 10;
  16. const int32 KillerStreak3 = 15;
  17. const int32 KillerStreak4 = 20;
  18. const int32 KillerStreak5 = 30;
  19. int32 KillStreaks[5] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5 };
  20.  
  21. struct SystemInfo
  22. {
  23.     uint32 KillStreak;
  24.     uint32 LastGUIDKill;
  25.     uint8 KillCount;
  26. };
  27.  
  28. static std::map<uint32, SystemInfo> KillingStreak;
  29.  
  30. class System_OnPvPKill : public PlayerScript
  31. {
  32.     public:
  33.         System_OnPvPKill() : PlayerScript("System_OnPvPKill") {}
  34.  
  35.        
  36. void OnPVPKill(Player *pKiller, Player *pVictim)
  37. {
  38.     if(PvPSystemEnabled == false)
  39.     {
  40.              return;
  41.     }
  42.     else if(PvPSystemEnabled == true)
  43.     {
  44.         uint32 kGUID;
  45.         uint32 vGUID;
  46.         char msg[500];
  47.         kGUID = pKiller->GetGUID();
  48.         vGUID = pVictim->GetGUID();                
  49.         if(kGUID == vGUID)
  50.         {
  51.           return;
  52.         }
  53.                
  54.       if(KillingStreak[kGUID].LastGUIDKill == vGUID)
  55.         {
  56.         KillingStreak[kGUID].KillCount++;
  57.         KillingStreak[vGUID].KillCount = 1;
  58.           pKiller->AddItem(ItemReward, 1);
  59.         if(LooseTokenOnPvPDeath == true)
  60.           pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  61.         }
  62.       if(KillingStreak[kGUID].LastGUIDKill != vGUID)
  63.       {
  64.         KillingStreak[kGUID].KillCount = 1;
  65.         KillingStreak[vGUID].KillCount = 1;
  66.       }
  67.  
  68.       if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim)
  69.       {
  70.         return;
  71.       }
  72.  
  73.       if(OnlyInBattlegrounds == true)
  74.         {
  75.         if(!pKiller->GetMap()->IsBattleground())
  76.            return;
  77.       }
  78.  
  79.         KillingStreak[kGUID].KillStreak++;
  80.         KillingStreak[vGUID].KillStreak = 0;
  81.         KillingStreak[kGUID].LastGUIDKill = vGUID;
  82.         KillingStreak[vGUID].LastGUIDKill = 0;
  83.       if(AddTokenOnPvPKill == true)
  84.           pKiller->AddItem(ItemReward, 1);
  85.       if(LooseTokenOnPvPDeath == true)
  86.         pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  87.                
  88.         switch(KillingStreak[kGUID].KillStreak)
  89.         {
  90.         case KillerStreak1:
  91.         sprintf(msg, "[PvP System]: %s megölte %s-t és ez volt a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
  92.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  93.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  94.         break;
  95.  
  96.         case KillerStreak2:
  97.         sprintf(msg, "[PvP System]: %s megölte %s-t és ez volt a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
  98.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  99.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  100.         break;
  101.  
  102.         case KillerStreak3:
  103.         sprintf(msg, "[PvP System]: %s megölte %s-t és ez volt a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
  104.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  105.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
  106.         break;
  107.  
  108.         case KillerStreak4:
  109.         sprintf(msg, "[PvP System]: %s megölte %s-t és ez volt a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
  110.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  111.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
  112.         break;
  113.  
  114.         case KillerStreak5:
  115.         sprintf(msg, "[PvP System]: %s megölte %s-t és ez volt a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  116.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  117.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[5]);
  118.         KillingStreak[kGUID].KillStreak = 0;
  119.         break;
  120.      }
  121.     }
  122. }
  123. };
  124.  
  125. void AddSC_System()
  126. {
  127.     new System_OnPvPKill;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement