Postado Julho 22, 2014 10 anos Este é um post popular. Olá pessoal, eu estava ajudando um amigo em um script de Tibia Naruto, e me deparei com a necessidade de usar uma função para trocar o nome de um summon, mas isso teria que ser inGame, e depois de procurar um pouco achei a função setCreatureName, que faz exatamente o que eu precisava.O que ela faz? Como eu expliquei acima, ela muda o nome da Creature inGame, podendo ser bastante útil (dependendo da sua criatividade).Como instalar? A instalação é feita inteiramente nas sources, então vamos lá .. 1 - No arquivo monster.h encontre esse trecho: class Monster : public Creature { private: Monster(MonsterType* _mType); public: E adicione isso abaixo de public:: std::string name, nameDescription; 2 - Ainda em monster.h procure por: virtual const std::string& getName() const {return mType->name;} E substitua por isso: virtual const std::string& getName() const {return name;} 3 - Ainda em monster.h procure por: virtual const std::string& getNameDescription() const {return mType->nameDescription;} E substitua por isso: virtual const std::string& getNameDescription() const {return nameDescription;} 4 - Ainda em monster.h procure por: virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} E substitua por isso: virtual std::string getDescription(int32_t) const {return nameDescription + ".";} 5 - Agora em monster.cpp procure por: Monster::Monster(MonsterType* _mType): Nas linhas abaixo tem a linha: raid = NULL; , adicione isso logo abaixo: name = _mType->name; nameDescription = _mType->nameDescription; Spoiler Ficando assim: Monster::Monster(MonsterType* _mType): Creature() { isIdle = true; isMasterInRange = false; teleportToMaster = false; mType = _mType; spawn = NULL; raid = NULL; name = mType->name; nameDescription = mType->nameDescription; 6 - Agora em luascript.h adicione isso perto das linhas semelhantes: static int32_t luaSetCreatureName(lua_State* L); 7 - Agora em luascript.cpp adicione isso perto das linhas semelhantes: //setCreatureName(cid, name, description) lua_register(m_luaState, "setCreatureName", LuaInterface::luaSetCreatureName); 8 - Ainda em luascript.cpp adicione isso perto das linhas semelhantes: int32_t LuaInterface::luaSetCreatureName(lua_State* L) { // setCreatureName(cid, newName, newDescription) std::string newDesc = popString(L); std::string newName = popString(L); ScriptEnviroment* env = getEnv(); Creature* creature; if (creature = env->getCreatureByUID(popNumber(L))) { Monster* monster = (Monster*)creature; monster->name = newName; monster->nameDescription = newDesc; lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Pelo fato de algumas diferenças no modo de escrever a função entre as TFS, pode ocorrer erros, e então substitua as seguintes linhas dos 2 passos anteriores: Spoiler //setCreatureName(cid, name, description) lua_register(m_luaState, "setCreatureName", LuaScriptInterface::luaSetCreatureName); int32_t LuaScriptInterface::luaSetCreatureName(lua_State* L) Créditos: Scarlet Ayeid É isso pessoal ... um exemplo de uso dentro de alguma função é assim basicamente: local pos = {x = 10, y = 10, z = 7} local Teste = doCreateMonster("Rat", pos) setCreatureName(Teste, ""..getCreatureName(cid).."", "a "..getCreatureName(cid).."") Espero ter ajudado pessoal, até mais. STYLLER OT 2022
Postado Julho 22, 2014 10 anos Citar 4 - Ainda em monster.h procure por: virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} Na sources nao tem essa parte, o que eu faço? edit: o mais parecido que tem é esse, posso substuir ele? virtual std::string getDescription(int32_t lookDistance) const {return mType->nameDescription + ".";} Editado Julho 22, 2014 10 anos por roriscrave (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.