Voici un script que je viens de finir de réaliser !
Ce script ajoute les commandes:
.eventreward 1
.eventreward 2
.eventreward 3
.eventreward 4
.eventreward 5
Les 5 premières sont des commandes qui donnent des objets aux gagnants (pour ne pas donner la commande .add par exemple
![Tongue Tongue](images/smilies/tongue.gif)
Je pars du principe, que vous savez ajouter une commande avec le système de rbac actuellement présent sur TrinityCore !
#include "Config.h" #include "RBAC.h" #include "ScriptMgr.h" uint32 EVENT_TOKEN = sConfigMgr->GetIntDefault("Event.Token", 10000); uint32 EVENT_REWARD_1 = sConfigMgr->GetIntDefault("Event.Token.First", 10); uint32 EVENT_REWARD_2 = sConfigMgr->GetIntDefault("Event.Token.Two", 7); uint32 EVENT_REWARD_3 = sConfigMgr->GetIntDefault("Event.Token.Three", 4); uint32 EVENT_REWARD_4 = sConfigMgr->GetIntDefault("Event.Token.Four", 2); uint32 EVENT_REWARD_5 = sConfigMgr->GetIntDefault("Event.Token.Five", 1); class cs_event_extra : public CommandScript { public: cs_event_extra() : CommandScript("cs_event_extra") { } ChatCommand* GetCommands() const OVERRIDE { static ChatCommand eventRewardCommandTable[] = { { "1", rbac::RBAC_PERM_COMMAND_EVENT_REWARD_1, false, &HandleEventRecompense1, "", NULL }, { "2", rbac::RBAC_PERM_COMMAND_EVENT_REWARD_2, false, &HandleEventRecompense2, "", NULL }, { "3", rbac::RBAC_PERM_COMMAND_EVENT_REWARD_3, false, &HandleEventRecompense3, "", NULL }, { "4", rbac::RBAC_PERM_COMMAND_EVENT_REWARD_4, false, &HandleEventRecompense4, "", NULL }, { "5", rbac::RBAC_PERM_COMMAND_EVENT_REWARD_5, false, &HandleEventRecompense5, "", NULL }, { NULL, 0, false, NULL, "", NULL }, }; static ChatCommand commandTable[] = { { "eventreward", rbac::RBAC_PERM_COMMAND_EVENT_REWARD, false, NULL, "", eventRewardCommandTable }, { NULL, 0, false, NULL, "", NULL }, }; return commandTable; } static bool HandleEventRecompense1(ChatHandler* handler, const char* args) { Player* mj = handler->GetSession()->GetPlayer(); Player * target = mj->GetSelectedPlayer(); if(!target) // Si nous n'avons pas de cible return false; target->AddItem(EVENT_TOKEN, EVENT_REWARD_1); // On ajoute le nombre de Token (Voir configuration) return true; } static bool HandleEventRecompense2(ChatHandler* handler, const char* args) { Player* mj = handler->GetSession()->GetPlayer(); Player * target = mj->GetSelectedPlayer(); if(!target) return false; target->AddItem(EVENT_TOKEN, EVENT_REWARD_2); return true; } static bool HandleEventRecompense3(ChatHandler* handler, const char* args) { Player* mj = handler->GetSession()->GetPlayer(); Player * target = mj->GetSelectedPlayer(); if(!target) return false; target->AddItem(EVENT_TOKEN, EVENT_REWARD_3); return true; } static bool HandleEventRecompense4(ChatHandler* handler, const char* args) { Player* mj = handler->GetSession()->GetPlayer(); Player * target = mj->GetSelectedPlayer(); if(!target) return false; target->AddItem(EVENT_TOKEN, EVENT_REWARD_4); return true; } static bool HandleEventRecompense5(ChatHandler* handler, const char* args) { Player* mj = handler->GetSession()->GetPlayer(); Player * target = mj->GetSelectedPlayer(); if(!target) return false; target->AddItem(EVENT_TOKEN, EVENT_REWARD_5); return true; } }; void AddSC_event_extra_commandscript() // Ce que l'on doit ajouter dans le fichier ScriptLoader.cpp { new cs_event_extra(); }
Et comme à mon habitude, voici la partie du Worldserver.conf à ajouter (pour éviter de compiler à chaque fois si on veut changer une variable ou autre !)
################################################################################################### # RECOMPENSES EVENT # # Event.token # Description: Token id pour les récompenses. # Default: 1000 Event.Token = 1000 # Event.Token.first # Description: nombre de token pour le 1er # Default: 10 Event.Token.first = 10 # Event.Token.Two # Description: nombre de token pour le 2ieme # Default: 7 Event.Token.Two = 7 # Event.Token.Three # Description: nombre de token pour le 3ieme # Default: 5 Event.Token.Three = 5 # Event.Token.Four # Description: nombre de token pour le 4ieme # Default: 3 Event.Token.Four = 3 # Event.Token.Five # Description: nombre de token pour le 5ieme # Default: 1 Event.Token.Five = 1 # ###################################################################################################
Voilà voilà
![Smile Smile](images/smilies/smile.gif)