Usas una version de Trinity Core muy antigua, refactorizame el codigo al usado hasta la ultima version de Trinity Core que conozcas:Claro, aquí te dejo la versión refactorizada del script de SmartAI que reproduce un sonido y un mensaje de bienvenida cuando un jugador
#include "ScriptMgr.h"
#include "Creature.h"
#include "Player.h"
#include "WorldPacket.h"
class Creature_EnterRange : public CreatureScript
{
public:
Creature_EnterRange() : CreatureScript("Creature_EnterRange") { }
bool CheckRange(Creature* creature, Player* player, float range)
{
float distance = creature->GetDistance(player);
return (distance > 0 && distance <= range);
}
void PlaySound(Creature* creature, uint32 soundId)
{
WorldPacket data(SMSG_PLAY_SOUND, 8);
data << creature->GetGUID();
data << soundId;
creature->SendMessageToSet(&data, true);
}
void PerformEmote(Creature* creature, uint32 emoteId)
{
creature->MonsterTextEmote(emoteId);
}
void PerformAction(Creature* creature)
{
creature->MonsterSay("¡Bienvenido, intruso! ¿Qué te trae por aquí?", LANG_UNIVERSAL, creature->GetVictim());
}
bool OnCreatureUpdate(Creature* creature, uint32 diff)
{
if (!creature->HasUnitState(UNIT_STATE_IS_IN_COMBAT)) {
Map* map = creature->GetMap();
if (!map)
return false;
Player* player = creature->SelectNearestPlayer(30.0f);
if (!player || !CheckRange(creature, player, 5.0))
return false;
PlaySound(creature, 1234);
PerformEmote(creature, 1);
creature->GetScheduler().Schedule(4000, [this, creature]() { PerformAction(creature); });
}
return true;
}
};
void AddSC_Creature_EnterRange()
{
new Creature_EnterRange();
}