Hello & Welcome to our community. Is this your first visit? Register
Follow us on
Follow us on Facebook Follow us on Twitter Watch us on YouTube


MMOCoin

User Tag List

Likes Likes:  0
Results 1 to 1 of 1
  1. #1
    Graphics Guru

    Join Date
    Feb 2009
    Posts
    1,201
    Post Thanks / Like
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Rep Power
    15
    Reputation
    344

    [Antifarm] PvP Kill, Token Reward Script With Cooldown! Prevent players from kill farming!


    Register to remove this ad
    Made by Sinistah I take no credits except sharing.



    Code:
    // Made by Sinistah @Ac-Web / Taco @ Lordcraft / TheEpicLazyTaco @BitBucket :) It would be nice if you did not remove this when you repost this years from now.
    
    #include "Chat.h"
    class PvPRewards : PlayerScript
    {
    public:
        PvPRewards() : PlayerScript("PvPRewards") {}
    
    
        // ~ Setting Variables "Not Ideal But it will have to do."  ~
        
        // The item you want to give players.
        uint32 itemID = 45978;
        // Ammount of items to give.
        uint32 ammount = 1;
        // Time in seconds 60 = 1 Minute
        uint32 cooldown = 60;
        // This is the message that is sent when a player does recieve a reward.
        std::string rewardMessage = "|cffff0000[System]|r You recieved a reward and are now on a cooldown.";
        // Thhis is the message that is sent when a player is on cooldown.
        std::string cooldownMessage = "|cffff0000[System]|r You are still on a cooldown and can not recieve a reward.";
    
    
        //IMPORTANT! Unless you know what your doing I do not recommend editing anything below this comment.
    
    
        // This is the map that is going to store all of our player's cooldowns during game play.
        std::unordered_map <uint32, uint32>  cooldownList;
    
    
        // Returns our cooldown from the map if it has one.
        uint32 GetPlayerCD(std::unordered_map<uint32, uint32> m, uint32 key)
        {
            //This gets our player's cooldown from the map and returns it to us in a uint32 form.
            auto itr = m.find(key);
    
    
            if (itr != m.end())
                return itr->second;
    
    
            //This is mainly to make the compiler happy about not all paths returning a value but also serves 
            return NULL;
        }
    
    
        //Updates/Inserts our players unique identifier and their cooldown.
        void UpdatePlayerCD(std::unordered_map<uint32, uint32>& m, uint32 key, uint32 newValue)
        {
            //If it finds a value update it with new value
            auto itr = m.find(key);
            if (itr != m.end()) {
                m[key] = newValue;
            }
            //If that character is not in the map add it.
            else
                m.insert(std::make_pair(key, newValue));
        }
    
    
        //This is where we add our item and send a mssg to our player and then we update the map.
        void AddReward(Player * killer, uint32 itemId, uint32 ammount, uint32 cooldown)
        {
            //Add the item to the player.
            killer->AddItem(itemId, ammount);
            //Send Message.
            ChatHandler(killer->GetSession()).PSendSysMessage(rewardMessage.c_str());
            //Inset Data into map.
            UpdatePlayerCD(cooldownList, killer->GetGUID().GetCounter(), killer->GetTotalPlayedTime() + cooldown);
        }
    
    
        //This is called when a player kills another player.
        void OnPVPKill(Player* killer, Player* /*killed*/)
        {
            //Variable to store the saved cooldown value we get from our map.
            uint32 mapCD;
    
    
            //If the map is empty.
            if (cooldownList.empty())
                mapCD = NULL;
            //Get the cd from the map and stores it in mapCD.
            else
                mapCD = GetPlayerCD(cooldownList, killer->GetGUID().GetCounter());
            
            //If mapCD has no value.
            if (mapCD == NULL)
            {
                AddReward(killer, itemID, ammount, cooldown);
            }
            //If mapCD has a value.
            else
            {
                // If player's played time is higher then the cooldown time.
                if (killer->GetTotalPlayedTime() >= mapCD) {
                    // Add items, Send Message, and Update Map. ~ See Function For More Info ~
                    AddReward(killer, itemID, ammount, cooldown);
                }
                else {
                    // If you are still on cooldown send cooldownMessage.
                    ChatHandler(killer->GetSession()).PSendSysMessage(cooldownMessage.c_str());
                }
            }
        }
    };
    
    
    void AddSC_PvPRewards()
    {
        new PvPRewards();
    }



    › See More: [Antifarm] PvP Kill, Token Reward Script With Cooldown! Prevent players from kill farming!
    Last edited by Wise; 31-07-18 at 02:11 PM.



  2. Related Threads - Scroll Down after related threads if you are only interested to view replies for above post/thread

 

 

Visitors found this page by searching for:

Nobody landed on this page from a search engine, yet!
SEO Blog

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
All times are GMT -5. The time now is 05:49 PM.
Powered by vBulletin® Copyright ©2000-2018, Jelsoft Enterprises Ltd.
See More links by ForumSetup.net. User Alert System provided by Advanced User Tagging v3.3.0 (Lite) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.
Feedback Buttons provided by Advanced Post Thanks / Like (Lite) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.
vBulletin Licensed to: MMOPro.org