Active zone FFa par sd2.
Bonsoir je suis en train de cree un pnj qui lorsque on lui parle et quon es gm il passe la zone defini dans le code en mode ffa, donc je recoit bien le flag ffa mais le soucis c que je suis obliger de lui reparler une fois parti et revenu dans la zone pour ravoir de nouveau ce flag ffa et quand un joueur est dans cette meme zone quil par le au pnj et qui le flag ffa ba on ne peut pas sattaquer, j'en ai deduit que seul elflag du joueur change pas de l'endroit :

Voici mon code principale reste des modif a faire :
Citation :bool GossipHello_ffa(Player *player, Creature* pCreature)
{
pCreature->GetMotionMaster()->Initialize();
pCreature->SetUInt32Value(UNIT_NPC_EMOTESTATE,10);
player->ADD_GOSSIP_ITEM( 5, "Activer la zone ffa", GOSSIP_SENDER_MAIN, 1002);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetObjectGuid());
return true;
}

void SendDefaultMenu_ffa(Player *player, Creature *pCreature, uint32 action )
{
if(!player->getAttackers().empty())
{
player->CLOSE_GOSSIP_MENU();
pCreature->MonsterSay(TEXTE_1, LANG_UNIVERSAL, NULL);
return;
}

switch(action)
{

case 1002:
uint32 newArea = pCreature->GetAreaId();
AreaTableEntry const* zone = GetAreaEntryByAreaID(newArea);


if (zone->flags & AREA_FLAG_SANCTUARY || newArea == 395)
{
player->RemoveSpellsCausingAura(SPELL_AURA_MOUNTED);
player->->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
player->SetFFAPvP(true);
player->->CombatStopWithPets();
}

break;
}
}

bool GossipSelect_ffa(Player *player, Creature *pCreature, uint32 sender, uint32 action )
{
// Main menu
if (sender == GOSSIP_SENDER_MAIN)
SendDefaultMenu_ffa(player, pCreature, action);
return true;
}

void AddSC_ffa()
{
Script *newscript;

newscript = new Script;
newscript->Name = "ffa";
newscript->pGossipHello = &GossipHello_ffa;
newscript->pGossipSelect = &GossipSelect_ffa;
newscript->pItemUse = NULL;
newscript->pGOUse = NULL;
newscript->pAreaTrigger = NULL;
newscript-> pQuestAcceptItem = NULL;
newscript->pQuestAcceptGO = NULL;
newscript->pQuestRewardedGO = NULL;
newscript->RegisterSelf();
}

voila et a force de telment chercher je me suis meme emmeler les pinceaux dans mon code et jaimerai que cela sapplique sur l'area et non pas le joueur si c'est possible biensur.

merci à vous.
Par un gossip, ca ne pourrait s'appliquer à la zone qu'une seule fois, et donc pas en continu.
( Si une personne parle au gossip, tous les joueurs de la zone passeront en "mode ffa", mais s'ils en sortent ou que d'autres rentrent, il faudra reparler au PNJ, c'est inévitable )
Alors qu'en passant par le core ou pas un edit DBC, le FFA serait activé en permanence.

Cordialement,
MacWarrior.
Justement j'aimerai pouvoir l'activer je vais essayer de coder une commande, merci mac
Une commande aura le même effet : Ca s'activera uniquement lorsque l'on utilisera la commande, et pas continuellement.

Cordialement,
MacWarrior.
Ou sinon une commande/pnj qui active une fonction dans le core qui est chargé au bon endroit (dans les gestion des zones par exemples) et s'active sans soucis pour update le ffa de la zone ...
ba justement le but c sa c de lactiver quand on le veut car pour la mettre en continue je lai deja modif dans le core la mais je trouve pas comment faire et la comme jai montrer les joueurs ne son aps en ffa entre eux ils on juste le flag si vous pouvez maider je veut pouvoir lactiver quand je le veut sans redfemarrer le serveur justement et que tous les joeuurs soit en ffa entre eux come jai fait dans le tuto avec le mangos .conf mais en sd2

Genre je pop le pnj nimporte ou je lui parle je clique sur activer ffa et hop la zone en ffa morphau si ta un bout de code d'exemple car le je vois pas trop merci sinon pour vos reponse.

Retourner en haut Accueil