Petit soucis avec un script
Yo tout le monde !

Voila il y a quelques temps j'avais obtenu de Riful un script pour un tp, ce tp ne devait aps marcher pour la Horde ni pour les humains tant que ceux ci (les humains, osef de la Horde haha !) n'avaient pas rendus un quête, or ce script marche bien sur la horde et les humains le problème c'est qu'il s'applique aussi sur les autres races alors que justement je voudrais que celles ci puissent utiliser le portail comme bon leur semble !

Voici le script (C++) de Riful

[code=cpp]
#define QUEST_ID 60010

class GOHello_hyakki_go_teleporter : public GameObjectScript
{
public:

GOHello_hyakki_go_teleporter()
: GameObjectScript("hyakki_go_teleporter")
{
}

bool OnGossipHello(Player* player, GameObject* /*go*/)
{
if (player->GetQuestStatus(QUEST_ID) == QUEST_STATUS_COMPLETE || (player->GetTeam() == ALLIANCE && player->getRace() != RACE_HUMAN))
player->TeleportTo(1, -209.195, -4989.72, 22.1697, 4.9262);
else
{
}
// Si la quête n'a pas été finie ou si le joueur n'est pas humain (MON DIEU)
// Alors tu fais ce que tu veux


}
};[/code]

Et le SQL :

[code=sql]
INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `faction`, `flags`, `size`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `data0`, `data1`, `data2`, `data3`, `data4`, `data5`, `data6`, `data7`, `data8`, `data9`, `data10`, `data11`, `data12`, `data13`, `data14`, `data15`, `data16`, `data17`, `data18`, `data19`, `data20`, `data21`, `data22`, `data23`, `AIName`, `ScriptName`, `WDBVerified`) VALUES (60001, 22, 7628, 'Portail vers Tiragarde', '', '', '', 11, 0, 1, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 'hyakki_go_teleporter', 0);
[/code]

Merci d'avance à qui saura m'aider Heureux !
(01-09-2011 18:22)Hyakkimaru a écrit :  ce tp ne devait aps marcher pour la Horde ni pour les humains tant que ceux ci (les humains, osef de la Horde haha !) n'avaient pas rendus un quête, or ce script marche bien sur la horde et les humains le problème c'est qu'il s'applique aussi sur les autres races alors que justement je voudrais que celles ci puissent utiliser le portail comme bon leur semble !

[code=cpp]
if (player->GetQuestStatus(QUEST_ID) == QUEST_STATUS_COMPLETE || (player->GetTeam() == ALLIANCE && player->getRace() != RACE_HUMAN))
[/code]

Si j'ai bien compris, tu veux que le portail fonctionne pas pour la horde, mais fonctionne pour n'importe qu'elle race de l'alliance sauf les humains qui doivent rendre une quète avant ? Si oui:

[code=cpp]
if ((player->GetQuestStatus(QUEST_ID) == QUEST_STATUS_COMPLETE && player->getRace() == RACE_HUMAN) || (player->GetTeam() == ALLIANCE && player->getRace() != RACE_HUMAN))
[/code]
Tu m'as tout à fait compris Morphau Heureux J'essaye ta modif et je te tiens au courant !

Edit : ne marche toujours pas Triste

Peut être un problème SQL en fin de compte...
[code=cpp]player->TeleportTo(1, -209.195, -4989.72, 22.1697, 4.9262);[/code]

Mon dieu ...

La modif de morphau devrait fonctionner j'aurais fais pareil Clin
Édition :
Bon j'viens de voir que ça marche pas , alors éssaye ça

après le
[code=cpp]
else
{[/code]

Rajoute

[code=cpp]sLog.outString("lolilol");[/code]

Si ça compile pas tu remplace le . par une flèche -> (en fait VC gère ça automatiquement donc bon je me pose jamais la question)

Dis nous ce qui s'affiche dans ta console
etape numeros 1 :

player->TeleportTo(1, -209.195, -4989.72, 22.1697, 4.9262);
to
player->TeleportTo(1, -209.195f, -4989.72f, 22.1697f, 4.9262f);

etape numeros 2:

if(pPlayer->GetTeamId() == HORDE)
return true;

if(pPlayer->getRace() == RACE_HUMAN && player->GetQuestStatus(QUEST_THE_STORY_THUS_FAR) == QUEST_STATUS_INCOMPLETE)
return true;

sinon tu execute ton bout de code (pas besoin de else)

ps: pointeur faux x)
Code :
#define QUEST_ID       60010

class GOHello_hyakki_go_teleporter : public GameObjectScript
{
    public:

        GOHello_hyakki_go_teleporter()
            : GameObjectScript("hyakki_go_teleporter")
        {
        }

        bool OnGossipHello(Player* player, GameObject* /*go*/)
        {
           if(player->GetTeamId() == TEAM_HORDE)
                   return true;

          if(player->getRace() == RACE_HUMAN &&   player->GetQuestStatus(QUEST_THE_STORY_THUS_FAR) == QUEST_STATUS_INCOMPLETE)
  return true;

player->TeleportTo(1, -209.195f, -4989.72f, 22.1697f, 4.9262f);
};
Toto ton code marchera jamais Huh

Tu fais un return avant la téléportation ? Comment veux tu être TP ?
il l'a fait avec les conditions contraires donc si ça fonctionnera Clin
Bon et bien, après compilation la téléportation fonctionne (merci toto Heureux ) mais !

Les humains même s'ils n'ont pas fait la quête peuvent se téléporter...
Bon alors au pire essaye ça , tu me dis si tu vois des trucs s'afficher dans ta console quand tu éssaye de te TP

[code=cpp]#define QUEST_ID 60010

class GOHello_hyakki_go_teleporter : public GameObjectScript
{
public:

GOHello_hyakki_go_teleporter()
: GameObjectScript("hyakki_go_teleporter")
{
}

bool OnGossipHello(Player* player, GameObject* /*go*/)
{
if(player->GetTeamId() == TEAM_HORDE)
{
sLog->outString("TES HORDEUX ABRUTIT");
return false;
}
else if(player->getRace() == RACE_HUMAN && player->GetQuestStatus(QUEST_THE_STORY_THUS_FAR) == QUEST_STATUS_INCOMPLETE)
{
sLog->outString("TA PA Fé LA QUAITE ABRUTI");
return false;
}
else
{
player->TeleportTo(1, -209.195f, -4989.72f, 22.1697f, 4.9262f);
return true;
}
};[/code]

PS : oui le else if et else est pas obligatoire et j'ai changé les return , tu renvoi pas "vrai" quand la condition échoue ça parait logique
Toujours un fail au final Hihi

Le tp fonctionne quand même pour ceux qui n'ont pas fait la quête, voici le script actuel :

[code=cpp]
#define QUEST_ID 60010

class GOHello_hyakki_go_teleporter : public GameObjectScript
{
public:

GOHello_hyakki_go_teleporter()
: GameObjectScript("hyakki_go_teleporter")
{
}

bool OnGossipHello(Player* player, GameObject* /*go*/)
{
if(player->GetTeamId() == TEAM_HORDE)
return true;

if(player->getRace() == RACE_HUMAN && player->GetQuestStatus(QUEST_ID) == QUEST_STATUS_INCOMPLETE)
return true;

player->TeleportTo(1, -209.195f, -4989.72f, 22.1697f, 4.9262f);
return true;
}

};
void AddSC_hyakki_go_teleporter()
{
new GOHello_hyakki_go_teleporter();
}[/code]

Je sens que j'ai fais une connerie en le faisant tout seul mais je sais pas où Ange

Retourner en haut Accueil