Ir para conteúdo

Featured Replies

Postado
  • 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.

  • Respostas 74
  • Visualizações 15k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Não modifique tudo roriscrave, mude apenas "mType->nameDescription" para "nameDescription"

  • vlw deu tudo certo, estou usando 8.54 vlw

  • Esse arquivo é encontrado na source, que seria os arquivos para compilar a distro(executável) do servidor. Alguns servidores já vem com a source na pasta, mas você pode encontrar a source do seu serv

Posted Images

Postado
  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 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo