|
You last visited: Today at 15:52
Advertisement
[TrinityCore][C++] PaySafeCard Receiver
Discussion on [TrinityCore][C++] PaySafeCard Receiver within the WoW Private Server forum part of the World of Warcraft category.
11/29/2013, 19:34
|
#1
|
elite*gold: 0
Join Date: Nov 2013
Posts: 8
Received Thanks: 1
|
...
...
|
|
|
11/29/2013, 21:01
|
#2
|
elite*gold: 808
Join Date: Jul 2010
Posts: 7,984
Received Thanks: 1,653
|
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;
}
|
|
|
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.
|
|
|
12/02/2013, 14:50
|
#4
|
elite*gold: 110
Join Date: Mar 2008
Posts: 856
Received Thanks: 388
|
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.
|
|
|
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 ^^
|
|
|
12/05/2013, 08:41
|
#6
|
elite*gold: 110
Join Date: Mar 2008
Posts: 856
Received Thanks: 388
|
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.
|
|
|
|
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/CMakeCCompi ler.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 Private Server - 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 - 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 +2. The time now is 15:52.
|
|