PNJ bloqueur d'xp
Voici le script d'un PNJ permettant à vos joueurs de bloquer leur XP :
Ce script requiert ce patch : >>ICI<<

[code=cpp]#include "precompiled.h"

#define MENU_1 "Je souhaite ne plus gagner d'experience"
#define MENU_2 "Je souhaite pouvoir recevoir à nouveau de l'experience"
#define MENU_3 "Au revoir !"
#define TEXTE_1 "Je ne m'occuperais pas de vous tant que vous combattrez !"
#define TEXTE_2 "Au revoir, aventurier !"
#define TEXTE_3 "Vous voilà dans l'incapacité de recevoir de l'experience !"
#define TEXTE_4 "Vous pouvez maintenant recevoir à nouveau de l'experience !"

bool GossipHello_macwarrior_experience(Player *player, Creature *_Creature)
{
player->ADD_GOSSIP_ITEM( 4, MENU_1, GOSSIP_SENDER_MAIN, 1000);
player->ADD_GOSSIP_ITEM( 4, MENU_2, GOSSIP_SENDER_MAIN, 1001);
player->ADD_GOSSIP_ITEM( 11, MENU_3, GOSSIP_SENDER_MAIN, 1002);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetGUID());
return true;
}

void SendDefaultMenu_macwarrior_experience(Player *player, Creature *_Creature, uint32 action )
{
if(!player->getAttackers().empty())
{
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterSay(TEXTE_1, LANG_UNIVERSAL, NULL);
return;
}
switch(action)
{
case 1000: // Je souhaite ne plus gagner d'experience
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_3 ,player);
player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED);
break;
case 1001: // Je souhaite pouvoir recevoir à nouveau de l'experience
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_4 ,player);
player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED);
break;
case 1002: // Au revoir !
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_2,player);
break;
}
}

bool GossipSelect_macwarrior_experience(Player *player, Creature *_Creature, uint32 sender, uint32 action )
{
// Main menu
if (sender == GOSSIP_SENDER_MAIN)
SendDefaultMenu_macwarrior_experience(player, _Creature, action);
return true;
}

void AddSC_macwarrior_experience()
{
Script *newscript;
newscript = new Script;
newscript->Name = "macwarrior_experience";
newscript->pGossipHello = &GossipHello_macwarrior_experience;
newscript->pGossipSelect = &GossipSelect_macwarrior_experience;
newscript->RegisterSelf();
}[/code]

Have Fun !
Cordialement,
MacWarrior.
Merci ( je t'ai mis 1 point de réputation).
Normal que ya du html dans le code ? :/ Sinon merci , c'est du bon boulot Clin
Ca devrait etre mieux maintenant Clin

Cordialement,
MacWarrior.

P.S : Hésite pas a mettre un point de réputation Langue
Merci du partage
Bonjour,

Je recherche actuellement à bloquer l'expérience de mes joueurs dès qu'ils atteignent un niveau précis.
Est-il possible de le faire, si oui, comment ? (Sans passer par un Pnj, lequel pourrait être évité).

Les modifications s'effectuent ou ? DB, Core ?
Comment s'y prendre ?

Merci d'avance (et bien joué pour ce pnj Smile)
C'est possible mais modifications à faire dans le core et c/c++ qu'il faut connaitre un minimum ...
Les modifs peuvent s'effectuer dans le fichier de config de mangos en mettant le maxlevel au niveau que tu souhaites.
[code=cpp] player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_4 ,player);
player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED);
break;[/code]
La il faudrait plutot verifier si le niveau de joueur ne depasse pas celui indiqué dans la conf sinon ca va faire un jolie fail.
Le joueur pour continer de levelup meme si il atteint le niveau max Clin
(08-04-2011 07:49)Markz a écrit :  [code=cpp] player->CLOSE_GOSSIP_MENU();
_Creature->MonsterWhisper(TEXTE_4 ,player);
player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_XP_USER_DISABLED);
break;[/code]
La il faudrait plutot verifier si le niveau de joueur ne depasse pas celui indiqué dans la conf sinon ca va faire un jolie fail.
Le joueur pour continer de levelup meme si il atteint le niveau max Clin

Pas du tout !
Le flag et la limite de niveau sont gérés séparément !
Tu n'as qu'à tester Clin

Cordialement,
MacWarrior.

Retourner en haut Accueil