PNJ évènement course
Bon voila un petit pnj qui permet de faire un évènement course.
le principe est simple : le joueur choisit un morph et le joueur se retrouve en speed 3 et le morph qu'il a choisi (et un modif scale pour certains morphs).
Vous pouvez bien sûr adapter ce patch selon vos goûts Clin.
Bonne compil' à tous.
.cpp  npc_mirageraceway.cpp (Taille : 10.38 Ko)


Le SQL pour le "npc_text" à exécuter sur votre base de données "monde" (mangos).
.sql  npc_mirageraceway.sql (Taille : 1.13 Ko)


Je vous laisse le soin de faire le SQL du PnJ.
N'oubliez pas de lui mettre le 'ScriptName' = "npc_mirageraceway".

PS : Si vous avez pas mal de joueur je conseille de changer les
Citation :_Creature->MonsterSay(PLAYER_READY_FOR_RACE, LANG_UNIVERSAL, player->GetGUID());
en
Citation :_Creature->MonsterWhisper(PLAYER_READY_FOR_RACE,player->GetGUID());
pour éviter le flood.
GG c'est très bien fait , il faudrait faire un truc du genre : le premier qui fait 3 tours a gagné genre 2 lvl ou alors si c'est un lvl 80 il gagne 500 pts d'honneur Smile Avec un compteur de tours et une fonction pour détecter qui arrive en premier , Avec aussi une commande pour le mj du genre "#event course on" ça autorise les joueurs a utiliser la commande "#Tp to event course" et ça fait une announce Smile Je peux mettre ces améliorations là si tu arrives a me dire comment faire un sorte de détecter les gens qui passent Clin
Ouai c'ets possible et ya plusieurs solutions mais la c'est basique car il n'a pas été prevu poru plusieurs tours mais pur une course ENORME a la piste des mirages avec GO pieeges stun, tp en arriere etc...donc un tour suffit largement. mais si tu desire l'adapter a tes besoin tu en a tout a fait le droit Clin
Discussion nettoyée.
Sbk, j'ai créé une demande d'aide pour ton adaptation du script pour Ascent, ici.
Discussion nettoyée.
Merci de poster toutes vos demandes d'aide partie "Aide et support".
Avertissement +10 % à oxide62 pour "Divers" => Demande d'aide sur un téléchargement.
Discussion nettoyée.
zourkay, tu as le droit d'avoir tes avis, mais tu n'as pas le droit d'insulter les membres de cette façon.
Avertissement +40 % pour "Insulte".
(21-11-2009 15:46)sbk a écrit :  GG c'est très bien fait , il faudrait faire un truc du genre : le premier qui fait 3 tours a gagné genre 2 lvl ou alors si c'est un lvl 80 il gagne 500 pts d'honneur Smile Avec un compteur de tours et une fonction pour détecter qui arrive en premier , Avec aussi une commande pour le mj du genre "#event course on" ça autorise les joueurs a utiliser la commande "#Tp to event course" et ça fait une announce Smile Je peux mettre ces améliorations là si tu arrives a me dire comment faire un sorte de détecter les gens qui passent Clin

Tu peux le faire en faisant une boucle tant qu'une variable comme Waypoint 1 == false et dedans avec une condition quand le joueur a pour coordonnées (ou encore est près d'un GO qui représente le 1er point de passage) et si il a ses coordonnés Waypoint 1 devient vrai .
A peu près comme ceci je pense :
[code=cpp]
bool Waypoint1 = false;
float x1 = 100;
float y1 = 255;
float z1 = 484;
while(!Waypoint1)
{
if(pPlayer->GetPositionX() == x1 && pPlayer->GetPositionY() == y1 && pPlayer->GetPositionZ() == z1)
{
Waypoint1 = true;
}
else
{
continue;
}
}
[/code]
Et pour les points de passage suivants , tu vérifies si les variables des points de passage précédents sont vrais .
Enfin on peut faire plus optimisé Langue
Ne marche pas pour la version 3.3.0 11...
C'est bien beau mais tu oublies quelque chose.
[code=cpp]if(pPlayer->GetPositionX() == x1 && pPlayer->GetPositionY() == y1 && pPlayer->GetPositionZ() == z1)[/code]
Il faudrait créer une zone au lieu d'une seule coordonnée. Je sais pas pour toi mais j'ai rarement vu mes coordonnées X et Y arrivées au plus proche de celles voulues. J'ai pas encore d'idées pour l'améliorer mais je tâcherais de m'y pencher un de ces jours, à part si quelqu'un d'autre à déjà une solution...

PS 1: Utiliser un PNJ comme détecteur peut être une solution, comme dans certaines instances. (Tiens, j'ai une solution Hihi)

PS 2:
Exemple 1:
Voici un code servant à la détection par rapport à un PNJ:
[code=cpp]
void MoveInLineOfSight(Unit *who)
{
if(m_creature->IsWithinDistInMap(who, 100)){
}
}[/code]
Code à compléter, je ne donne que l'essentiel...

Exemple 2:
Comparaison des coordonnées du joueur par rapport à deux coordonnées constantes:
[code=cpp]
float x1 = 95;
float y1 = 250;
//float z1 = 479; Facultatif à part si c'est une course aérienne

float x2 = 105;
float y2 = 255;
//float z2 = 491; Facultatif à part si c'est une course aérienne

if(pPlayer->GetPositionX() >= x1 && pPlayer->GetPositionX() <= x2 && pPlayer->GetPositionY() >= y1 && pPlayer->GetPositionY() <= y2/* && pPlayer->GetPositionZ() >= z1 && pPlayer->GetPositionZ() <= z2*/){
}
[/code]
A adapter...

Retourner en haut Accueil