[RÉSOLU] [TRINITY REV 54] Script sans résultat IG
Yop !

Comme le dit le titre, j'ai un petit problème avec un tout-mini script C++.
Le script marche parfaitement lors de la compilation, mais ne donne aucun résultat IG. (Ne fait pas crash, ce qui est déjà bien)

void System_SpellCFix(Player *caster)
{
	if (caster->HasAura(81104))
	{
		caster->SetDisplayId(49000);
		caster->AddAura(81105,caster);
		caster->AddAura(81107,caster);
	}
}

C'est cette partie du code qui pose problème. (Il n'y a que ca de toute facon Big Grin)

Ce que doit faire le script : Lorsque le joueur cast le sort 81104, on le morph, et on lui ajoute deux auras.

Ce que fait le script : Rien, aucun résultat. Pas de morph ni de aura.

Serais t-il possible de m'aider? Ou d'y trouver une alternative?

Merci!
Cordialement, Shard.
C'est ton script complet ça ?
Non, mais je te l'envoie, tu comprendras pourquoi j'ai mit que ca ici Tongue.

#include "ScriptPCH.h"


class SpellCFix : public PlayerScript
{
public: 
    SpellCFix() : PlayerScript("SpellCFix()") { }

    
void System_SpellCFix(Player *caster)
{
	if (caster->HasAura(81104))
	{
		caster->SetDisplayId(49000);
		caster->AddAura(81105,caster);
		caster->AddAura(81107,caster);
	}
}
    
};

void AddSC_SpellCFix()
{
    new SpellCFix;
}
Le cache du client est peu etre en cause ?

Envoyé depuis mon LG-E400 avec Tapatalk
Non du tout :/
Je saurai pas t'aider alors :/

Envoyé depuis mon LG-E400 avec Tapatalk
En effet, et c'est tout à fait normal !

Tu as fait un PlayerScript, donc si tu veux qu'il se passe quelquechose en jeu, tu dois implémenter une ou plusieurs méthodes du PlayerScript, que voici ci-dessous.
        void OnPVPKill(Player* killer, Player* killed);
        void OnCreatureKill(Player* killer, Creature* killed);
        void OnPlayerKilledByCreature(Creature* killer, Player* killed);
        void OnPlayerLevelChanged(Player* player, uint8 oldLevel);
        void OnPlayerFreeTalentPointsChanged(Player* player, uint32 newPoints);
        void OnPlayerTalentsReset(Player* player, bool noCost);
        void OnPlayerMoneyChanged(Player* player, int32& amount);
        void OnGivePlayerXP(Player* player, uint32& amount, Unit* victim);
        void OnPlayerReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental);
        void OnPlayerDuelRequest(Player* target, Player* challenger);
        void OnPlayerDuelStart(Player* player1, Player* player2);
        void OnPlayerDuelEnd(Player* winner, Player* loser, DuelCompleteType type);
        void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg);
        void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Player* receiver);
        void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group);
        void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Guild* guild);
        void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Channel* channel);
        void OnPlayerEmote(Player* player, uint32 emote);
        void OnPlayerTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, uint64 guid);
        void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck);
        void OnPlayerLogin(Player* player);
        void OnPlayerLogout(Player* player);
        void OnPlayerCreate(Player* player);
        void OnPlayerDelete(uint64 guid);
        void OnPlayerSave(Player* player);
        void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent);
        void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea);
Comme tu peux le constater, ta méthode System_SpellCFix(Player *caster) n'est pas dans la liste, donc celle-ci ne sert à rien car elle ne sera pas utilisée.

Il faut donc renommer ton System_SpellCFix(Player *caster) par
void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck);
Cette évidence haha, ca m'apprendra à remplacer tous les termes avec Wordpad! Tongue
Niquel ca marche! Par contre j'ai use OnSpellCast et non pas OnPlayerSpellCast vu que je ne l'ai pas.

Voici ma liste :

// Called when a player kills another player
virtual void OnPVPKill(Player* /*killer*/, Player* /*killed*/) { }

// Called when a player kills a creature
virtual void OnCreatureKill(Player* /*killer*/, Creature* /*killed*/) { }

// Called when a player is killed by a creature
virtual void OnPlayerKilledByCreature(Creature* /*killer*/, Player* /*killed*/) { }

// Called when a player's level changes (after the level is applied)
virtual void OnLevelChanged(Player* /*player*/, uint8 /*oldLevel*/) { }

// Called when a player's free talent points change (right before the change is applied)
virtual void OnFreeTalentPointsChanged(Player* /*player*/, uint32 /*points*/) { }

// Called when a player's talent points are reset (right before the reset is done)
virtual void OnTalentsReset(Player* /*player*/, bool /*noCost*/) { }

// Called when a player's money is modified (before the modification is done)
virtual void OnMoneyChanged(Player* /*player*/, int32& /*amount*/) { }

 // Called when a player gains XP (before anything is given)
virtual void OnGiveXP(Player* /*player*/, uint32& /*amount*/, Unit* /*victim*/) { }

// Called when a player's reputation changes (before it is actually changed)
virtual void OnReputationChange(Player* /*player*/, uint32 /*factionId*/, int32& /*standing*/, bool /*incremental*/) { }

// Called when a duel is requested
virtual void OnDuelRequest(Player* /*target*/, Player* /*challenger*/) { }

// Called when a duel starts (after 3s countdown)
virtual void OnDuelStart(Player* /*player1*/, Player* /*player2*/) { }

// Called when a duel ends
virtual void OnDuelEnd(Player* /*winner*/, Player* /*loser*/, DuelCompleteType /*type*/) { }

// The following methods are called when a player sends a chat message.
virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/) { }

virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/, Player* /*receiver*/) { }

virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/, Group* /*group*/) { }

virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/, Guild* /*guild*/) { }

virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/, Channel* /*channel*/) { }

// Both of the below are called on emote opcodes.
virtual void OnEmote(Player* /*player*/, uint32 /*emote*/) { }

virtual void OnTextEmote(Player* /*player*/, uint32 /*textEmote*/, uint32 /*emoteNum*/, uint64 /*guid*/) { }

// Called in Spell::Cast.
virtual void OnSpellCast(Player* /*player*/, Spell* /*spell*/, bool /*skipCheck*/) { }

// Called when a player logs in.
virtual void OnLogin(Player* /*player*/) { }

// Called when a player logs out.
virtual void OnLogout(Player* /*player*/) { }

// Called when a player is created.
virtual void OnCreate(Player* /*player*/) { }

// Called when a player is deleted.
virtual void OnDelete(uint64 /*guid*/) { }

// Called when a player is about to be saved.
virtual void OnSave(Player* /*player*/) { }

// Called when a player is bound to an instance
virtual void OnBindToInstance(Player* /*player*/, Difficulty /*difficulty*/, uint32 /*mapId*/, bool /*permanent*/) { }

// Called when a player switches to a new zone
virtual void OnUpdateZone(Player* /*player*/, uint32 /*newZone*/, uint32 /*newArea*/) { }

// Called when a player changes to a new map (after moving to new map)
virtual void OnMapChanged(Player* /*player*/) { }


--> Pour retrouver la liste il faut aller dans ScriptMgr.h


Voici le résultat final de mon script :

#include "ScriptPCH.h"


class SpellCFix : public PlayerScript
{
public: 
    SpellCFix() : PlayerScript("SpellCFix()") { }

    
void OnSpellCast(Player*player, Spell*spell, bool)
{
	if (player->HasAura(81104))
	{
		player->SetDisplayId(rand()%4+49000);
		player->AddAura(81105,player);
		player->AddAura(81107,player);
	}
}
    
};

void AddSC_SpellCFix()
{
    new SpellCFix;
}

Merci ! Big Grin

Retourner en haut WoW-Emu