Register for your free account! | Forgot your password?

Go Back   elitepvpers > World of Warcraft > WoW Private Server > WoW PServer Hosting
You last visited: Today at 14:54

  • Please register to post and access all features, it's quick, easy and FREE!


[TrinityCore][C++] PaySafeCard Receiver

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Nov 2013
Posts: 8
Received Thanks: 1
...

...



Blackwhile is offline  
Thanks
1 User
Old 11/29/2013, 21:01   #2
Veteran


 
elite*gold: 1553
Join Date: Jul 2010
Posts: 6,684
Received Thanks: 1,326
Damit das Pastebin nicht verschwindet, hier habt Ihrs:

Code:
	

    #include "ScriptPCH.h"
     
    #define COOLDOWN_DELAY  2*MINUTE
    #define CODE_LENGTH     16
     
    static std::list<std::string> cardKeys;
    static UNORDERED_MAP<uint32, time_t> cooldowns;
     
    static bool CheckKey(std::string str, Player* player = NULL)
    {
        if (str.empty() || str.length() != CODE_LENGTH || str.find_first_not_of("1234567890") != std::string::npos)
        {
            if (player)
                player->GetSession()->SendNotification("Invalid key inserted!");
            return false;
        }
        for (std::list<std::string>::const_iterator it = cardKeys.begin(); it != cardKeys.end(); ++it)
        {
            if ((*it) != str)
                continue;
            if (player)
                player->GetSession()->SendNotification("Key already used!");
            return false;
        }
        return true;
    }
     
    class paysafecardkey_receiver : public CreatureScript
    {
    public:
        paysafecardkey_receiver() : CreatureScript("paysafecardkey_receiver")
        {
        }
     
        bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
        {
            player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_CHAT, "Insert paysafecard key", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1, "Format: 1234567812345678", 0, true);
            player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Nevermind..", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
            player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
            return true;
        }
     
        bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) OVERRIDE
        {
            player->PlayerTalkClass->ClearMenus();
            player->CLOSE_GOSSIP_MENU();
            return true;
        }
     
        bool OnGossipSelectCode(Player* player, Creature* creature, uint32 sender, uint32 action, char const* code) OVERRIDE
        {
            player->PlayerTalkClass->ClearMenus();
            if (sender == GOSSIP_SENDER_MAIN && action == GOSSIP_ACTION_INFO_DEF+1)
                Process(player, code);
            OnGossipHello(player, creature);
            return true;
        }
     
        void Process(Player* player, char const* code)
        {
            uint32 accId = player->GetSession()->GetAccountId();
            if (cooldowns.find(accId) != cooldowns.end())
            {
                double diff = difftime(cooldowns[accId], time(NULL));
                if (diff > 0)
                {
                    if (diff >= MINUTE)
                        player->GetSession()->SendNotification("You need to wait %u more minutes", uint32(ceil((diff-MINUTE/2)/MINUTE)));
                    else
                        player->GetSession()->SendNotification("You need to wait %u more seconds", uint32(ceil(diff)));
                    return;
                }
                cooldowns.erase(accId);
            }
            if (!CheckKey(code, player))
                return;
     
            // success
            cooldowns[accId] = time(NULL) + COOLDOWN_DELAY;
            cardKeys.push_front(code); // push back or front?
            LoginDatabase.PExecute("INSERT INTO paysafecardkeys (accId, paysafecardkey) VALUES (%u, \"%s\")", accId, code); // Note! Not instant!
            player->GetSession()->SendAreaTriggerMessage("Key succesfully used");  
        }
    };
     
    class paysafecardkey_loader : public WorldScript
    {
    public:
        paysafecardkey_loader() : WorldScript("paysafecardkey_loader")
        {
        }
     
        void OnStartup() OVERRIDE
        {
            QueryResult result = LoginDatabase.Query("SELECT DISTINCT paysafecardkey FROM paysafecardkeys");
            if (!result)
                return;
            do
            {
                std::string paysafecardkey = (*result)[0].GetString();
                if (!CheckKey(paysafecardkey))
                    continue;
                cardKeys.push_back(paysafecardkey);
            } while (result->NextRow());
        }
    };
     
    void AddSC_example_gossip_codebox()
    {
        new paysafecardkey_loader;
        new paysafecardkey_receiver;
    }


°"Crazy"° is offline  
Thanks
1 User
Old 11/29/2013, 21:21   #3
 
elite*gold: 0
Join Date: Nov 2013
Posts: 8
Received Thanks: 1
Ich add es noch zusätzlich zum Thread ;-)

Habe es hinzugefügt. Danke für die Erinnerung.
Blackwhile is offline  
Old 12/02/2013, 14:50   #4
 
elite*gold: 110
Join Date: Mar 2008
Posts: 840
Received Thanks: 374
Die Idee ist wirklich super, bin selber noch nicht darauf gekommen.
Mir fallen direkt jede Menge weitere Dinge ein, die man so umsetzen könnte.


Kaev <3 is offline  
Old 12/04/2013, 17:35   #5
 
elite*gold: 0
Join Date: Nov 2013
Posts: 8
Received Thanks: 1
Wenn du weitere Ideen hast kannst du dich jederzeit bei mir melden.
Die Idee mit den PaySafeCards ist nichts besonderes. Kam mir nur spontan in den Sinn ^^
Blackwhile is offline  
Old 12/05/2013, 08:41   #6
 
elite*gold: 110
Join Date: Mar 2008
Posts: 840
Received Thanks: 374
Programmieren kann ich das schon selber, nur die Idee hat gefehlt. :P
Mir kam z.B. ein kleines Wahlsystem in den Sinn, bei dem man einen Charnamen angeben muss. Das würde sich aber eher auf RP oder Customzeugs beziehen.


Kaev <3 is offline  
Reply



« Permadeath Server | Trinket Proc »

Similar Threads
TrinityCore Kompilieren
04/16/2013 - WoW Private Server - 5 Replies
So also ich habe mit Git die Trinitycore https://github.com/TrinityCore/TrinityCore geladen, dann mit cmake ein Build erstellt(mit hacken bei without git) meldung The C compiler identification is MSVC 16.0.30319.1 The CXX compiler identification is MSVC 16.0.30319.1 Check for working C compiler using: Visual Studio 10 Check for working C compiler using: Visual Studio 10 -- works Detecting C compiler ABI info
TrinityCore CMAKE
02/14/2012 - WoW Private Server - 4 Replies
Hi, wollte TrinityCore kompilieren nach dem Tut von Crazy aber wenn ich bei dem Punkt mit CMAKE bin bekomm ich immer die Error. CMake Error: CMake was unable to find a build program corresponding to "Visual Studio 10 Win64". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: Could not find cmake module file:C:/Trinity/Kompilieren/CMakeFiles/CMakeCCompiler.cmake CMake Error: Could not find cmake module...
TrinityCore und DB updaten
12/04/2011 - WoW Private Server - 4 Replies
Hallo, habe eine auf Trinity basierenden WoW Server aufgesetzt, aber da ja ständig an dem Core und an der Datenbank gebastelt wird, würde ich gerne wissen, wie ich sie gescheit aktualisiere... Habe mal hehört das geht mit Git oder Tortoise oder wie das heißt. Es funktioniert angeblich so, das sich an meinen Einstellungen in der DB etc. nichts ändert. Hat vllt. einer eine Lösung für mich? :) Danke LuMa
TrinityCore 3.3.5a problem
04/06/2011 - WoW PServer Hosting - 1 Replies
Hallo ich habe ein problem und zwar habe ich mir die TrinityCore 3.3.5a runtergeladen und die DB und Maps eingefügt und dann auf meinem PC gestartet (zu test ob sie läuft) auf mein pc läuft sie wunderbar jetzt zum problem ich wollte nun die Core auf mein root machen gut und schön aber wenn ich sie starten will kommt bei der realmd.exe einfehler das eine datei fehlt namens MSVCR100.dll und bei der world.exe kommt der fehler das die datei MSVCP100.dll fehlt ich habe mir dann die beiden...
WoW -Trinitycore ArenaAddicts
01/19/2010 - Private Server - Discussions / Questions - 2 Replies
An arena server run by an awesome owner and Dev's. We just started, but this server is going far, trust me. Pvp/Arena server with a pvp system with currency for t8.5 and s6, rest is free. We are unique server, retail like. You'll notice that every single talent is fixed. And if you find a bug (Which you'll have a hard time doing so, it'll be fixed as soon as you post it. Wanna see some examples? * Shattering throw fixed * Mirror image fixed * DK concecration fixed * Dk...



All times are GMT +1. The time now is 14:54.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.