[Débutant] Commandes event
Bonjour !

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)

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
Merci Crisou !

Petite requête : peux-tu commenter quelques lignes ? Comme ça on ne te recopiera pas bêtement, et ainsi on ne te fera pas tout le temps ch*er quand on aura un souci Big Grin

Mais encore merci ! Wink
Bien sûr !

J'ai pris cette mauvaise habitude de ne pas commenter donc je zap tous le temps ^^'
Merci Crisou ! Wink

Retourner en haut WoW-Emu