Ir para conteúdo

Posts Recomendados

Versão testada pelo Autor do post: TFS 0.4 rev 4395
Provavelmente pode ser usada em outras versões
Versão testada por mim: TFS 0.3.6 pl1
Nome do code: setCreatureName(cid, newName, newNameDescription)
Pra quem não sabe nameDescription é o nomezinho que aparecerá quando você der look.
Exemplo: You see a troll.
a parte do "troll" é a descrição do nome.
esse codigo ja exist aki no xtibia mas so copie e postei no xtibia
Vamos começar.

Bom, primeiramente queria dizer que este code não fui eu que fiz, e foi retirado da otland com autorização.

Primeiramente vá em monster.h

E procure por:

class Monster : public Creature

feito isso você verá isto:

class Monster : public Creature{    private:        Monster(MonsterType* _mType);    public:#ifdef __ENABLE_SERVER_DIAGNOSTIC__        static uint32_t monsterCount;#endif

Na parte de:

#ifdef __ENABLE_SERVER_DIAGNOSTIC__

Você adicionara em cima:

std::string name, nameDescription;

Ficando assim:

class Monster : public Creature{    private:        Monster(MonsterType* _mType);    public:std::string name, nameDescription;#ifdef __ENABLE_SERVER_DIAGNOSTIC__        static uint32_t monsterCount;#endif

Agora você irá procurar por:

virtual const std::string& getName() const {return mType->name;}

e substituir por:

virtual const std::string& getName() const {return name;}

Depois procure por:

virtual const std::string& getNameDescription() const {return mType->nameDescription;}

substitua por:

virtual const std::string& getNameDescription() const {return nameDescription;}

novamente procure por:

virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";}

e substitua por:

virtual std::string getDescription(int32_t) const {return nameDescription + ".";}

Feito este você irá em monster.cpp
e procure por:

Monster::Monster(MonsterType* _mType):

provavelmente você verá:

Monster::Monster(MonsterType* _mType):    Creature(){isIdle = true;    isMasterInRange = false;    teleportToMaster = false;    mType = _mType;    spawn = NULL;    raid = NULL;defaultOutfit = mType->outfit;    currentOutfit = mType->outfit;

e embaixo de raid = NULL; você adicionará:

name = mType->name;nameDescription = mType->nameDescription;

feito isso você ira em luascript.h
e procure por:

static int32_t luaDoPlayerSendCancel(lua_State* L);

logo abaixo você adicionará:

static int32_t luaSetCreatureName(lua_State* L);

feito isso vá em luascript.cpp
e procure por:

lua_register(m_luaState, "doPlayerSendCancel", LuaScriptInterface::luaDoPlayerSendCancel);

e adicione abaixo:

//setCreatureName(cid, name, description)lua_register(m_luaState, "setCreatureName", LuaInterface::luaSetCreatureName);

depois procure por:

int32_t LuaScriptInterface::luaDoSendDefaultCancel(lua_State* L)

e adicione acima:

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;}

Feito tudo o que foi pedido tecle Ctrl+F11 e bom proveito.

agora em Seu mapa Wolrd Procure por uma position bem distante do mapa e crie uma areá pequena assim

aula.gif[/spoiler

e após isso você va em data spells e naruto e procure por bunshin e coloque essa spells

function onCastSpell(cid, var)
local cloth = getCreatureOutfit(cid)
local health = getCreatureHealth(cid)
local maxhealth = getCreatureMaxHealth(cid)
local MaximoSummon = 2

local summons = getCreatureSummons(cid)
if(table.maxn(summons) < MaximoSummon) then
local pos = getPlayerPosition(cid)
local bpos = {x=pos.x+2, y = pos.y, z = pos.z}
local farAwayPos = {x = 2061, y = 2056, z = 7} -- aki é a position onde o bunshin vai ir e vai voltar
local Bunshin = doCreateMonster("Bunshin", farAwayPos)
doConvinceCreature(cid, Bunshin)
setCreatureMaxHealth(Bunshin, maxhealth)
doCreatureAddHealth(Bunshin, health)
doSetCreatureOutfit(Bunshin, cloth, -1)
setCreatureName(Bunshin, "".. getCreatureName(cid) .."", "a ".. getCreatureName(cid) .."")
addEvent(doSendMagicEffect, 300, pos, 2)
addEvent(doTeleportThing, 300, Bunshin, pos)
return TRUE
end
end



pronto salve o mapa na position e o spells e renicie sue servidor e teste

bunshin.gif



Caso Algum Erro So Deixar Que Estarei Ajudando

Editado por Dbko
Link para o comentário
https://xtibia.com/forum/topic/232795-setcreaturename-bunshin/
Compartilhar em outros sites

Mano Si eu dei um Ctrl c e v mas eu editei á Spells Pra criar o bunshin com nome que muitos procuram e coloquei como é que tem que por na sources pq n queria reviver um topico para não causar flood então resolvir criar esse tutorial como coloca na sources o spelsl e como ficou

Link para o comentário
https://xtibia.com/forum/topic/232795-setcreaturename-bunshin/#findComment-1644120
Compartilhar em outros sites

Mano Tava na Otland e o Dono Deixou e outra o codigo tbm tem aki no xtibia os povo do xtibia demora muito de entender uma coisa meu Deus eu so copie o codigo e coloquei aki e spells pra os leks testarem creio que vai funfar então se o dono do Codigo Tive-se Conta no xtibia não sei e eu soube-se o nome eu colocaria os creditos dele oky

Link para o comentário
https://xtibia.com/forum/topic/232795-setcreaturename-bunshin/#findComment-1644146
Compartilhar em outros sites

Mano Tava na Otland e o Dono Deixou e outra o codigo tbm tem aki no xtibia os povo do xtibia demora muito de entender uma coisa meu Deus eu so copie o codigo e coloquei aki e spells pra os leks testarem creio que vai funfar então se o dono do Codigo Tive-se Conta no xtibia não sei e eu soube-se o nome eu colocaria os creditos dele oky

 

Certo, coloque os creditos ou ele te deixou ter autoria 100% do trabalho dele?

Link para o comentário
https://xtibia.com/forum/topic/232795-setcreaturename-bunshin/#findComment-1644167
Compartilhar em outros sites

n era mais facil posta a spell e botar o link pro topico q ja tem essa funçao? u,U sem fla q tu ainda n desse os 'enters' no codigo.. se alguem sem muito conhecimento for por isso nas sources vai ficar quase tudo como comentario...

Link para o comentário
https://xtibia.com/forum/topic/232795-setcreaturename-bunshin/#findComment-1644253
Compartilhar em outros sites

Esta parte esta declarada errada:

//setCreatureName(cid, name, description)
lua_register(m_luaState, "setCreatureName", LuaInterface::luaSetCreatureName);

o certo seria:

//setCreatureName(cid, name, description)
lua_register(m_luaState, "setCreatureName", LuaScriptInterface::luaSetCreatureName);
Editado por Junior Silva
Link para o comentário
https://xtibia.com/forum/topic/232795-setcreaturename-bunshin/#findComment-1644558
Compartilhar em outros sites

×
×
  • Criar Novo...