Perfect nick system 100%

Strogman
em Linguagens de Programação

Strogman

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/11/12Posts: 464Gênero: MasculinoChar no Tibia: Lysty Of Death

                                        exclusividade xtibia

   porfavor não postar em outro forum system exclusivo para o xtibia

 

Bom vi muito gente a traz desse sistema e, então resolvi fazer esse nick para ajudar a galera que quer sair do Lixo do pda e começar um projeto bom com os open source.

 

para quem não sabe, nick system é um system muito popular na família dos poketibias, é um system que muda o nome/adiciona um apelido no personagem, muda o nome de exibição no client o nome que fica em cima do personagem no jogo.

fulano: Gristony como essa função funciona?
Gristony: exatamente igual a do pda!

Em ProtocolGame.cpp
em baixo de
:

void ProtocolGameAddShopItem(NetworkMessage_ptr msg, const ShopInfo item){    const ItemType& it = Itemitems[item.itemId];    msg->AddU16(it.clientId);    if(it.isSplash() || it.isFluidContainer())        msg->AddByte(fluidMap[item.subType % 8]);    else if(it.stackable || it.charges)        msg->AddByte(item.subType);    else        msg->AddByte(0x01);    msg->AddString(item.itemName);    msg->AddU32(uint32_t(it.weight * 100));    msg->AddU32(item.buyPrice);    msg->AddU32(item.sellPrice);}

adicione:

void ProtocolGamereloadCreature(const Creature* creature){    if(!canSee(creature))        return;    // we are cheating the client in here!    uint32_t stackpos = creature->getTile()->getClientIndexOfThing(player, creature);    if(stackpos >= 10)        return;    NetworkMessage_ptr msg = getOutputBuffer();    if(msg)    {        TRACK_MESSAGE(msg);        stdlist<uint32_t>iterator it = stdfind(knownCreatureList.begin(), knownCreatureList.end(), creature->getID());        if(it != knownCreatureList.end())        {            RemoveTileItem(msg, creature->getPosition(), stackpos);            msg->AddByte(0x6A);            msg->AddPosition(creature->getPosition());            msg->AddByte(stackpos);            AddCreature(msg, creature, false, creature->getID());        }        else            AddTileCreature(msg, creature->getPosition(), stackpos, creature);    }}void ProtocolGamesendCreatureNick(const Creature* creature){    reloadCreature(creature);}

Em ProtocolGame.h
em baixo de
:

void sendQuestInfo(Quest* quest);

adicione:

void reloadCreature(const Creature* creature);void sendCreatureNick(const Creature* creature);

Em Player.h
em baixo de
:

void sendCreatureShield(const Creature* creature)            {if(client) client->sendCreatureShield(creature);}

adicione:

void sendCreatureNick(const Creature* creature)            {if(client) client->sendCreatureNick(creature);}

Em Creature.cpp

em baixo de:

partyShield = SHIELD_NONE;

adicione:

Nick = "";

Em Creature.h
em baixo de
:

virtual const Monster* getMonster() const {return NULL;}

adicione:

stdstring Nick;

Luascript.cpp
em baixo de
:

//doPlayerSendCancel(cid, text)    lua_register(m_luaState, "doPlayerSendCancel", LuaScriptInterfaceluaDoPlayerSendCancel);

adicione:

//doCreatureSetNick(cid, nick)    lua_register(m_luaState, "doCreatureSetNick", LuaScriptInterfaceluaDoCreatureSetNick);

em baixo de:

int32_t LuaScriptInterfaceluaDoPlayerSendCancel(lua_State* L){    //doPlayerSendCancel(cid, text)    stdstring text = popString(L);    ScriptEnviroment* env = getEnv();    if(const Player* player = env->getPlayerByUID(popNumber(L)))    {        player->sendCancel(text);        lua_pushboolean(L, true);    }    else    {        errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));        lua_pushboolean(L, false);    }    return 1;}

adicione:

int32_t LuaScriptInterfaceluaDoCreatureSetNick(lua_State* L){    //doCreatureSetNick(cid, nick)    ScriptEnviroment* env = getEnv();    stdstring nick = popString(L);    Creature* creature = env->getCreatureByUID(popNumber(L));    if(creature)    {            SpectatorVec list;        g_game.getSpectators(list, creature->getPosition());          Player* player = NULL;        creature->Nick = nick;         for(SpectatorVecconst_iterator it = list.begin(); it != list.end(); ++it)        {           if(player = (*it)->getPlayer())               {                   player->sendCreatureNick(creature);                   break;               }        }    }else{        lua_pushnil(L);    }    return 1;}

Em Luascript.h
em baixo de
:

static int32_t luaDoRemoveItem(lua_State* L);

adicione:

static int32_t luaDoCreatureSetNick(lua_State* L);

Em Protocolgame.cpp

procure por:

void ProtocolGameAddCreature(NetworkMessage_ptr msg, const Creature* creature, bool known, uint32_t remove){    if(!known)    {

em baixo de:

msg->AddU32(creature->getID());

adicione:

           
 stdstring nick = creature->getName();        if (creature->Nick != "")            nick = creature->Nick;

substitua:

msg->AddString(creature->getHideName() ? "" : creature->getName());

por:

msg->AddString(creature->getHideName() ? "" : nick);

Obs: compilar em rebuild all ou sem os arquivos .obj

 

exemplo de uso:

doCreatureSetNick(getCreatureSummons(cid)[1], "Gristony")

Creditos

Gristony
façam bom uso do code pequenos grilos

 

                                 logo_full_1600.png.f8d0c5d8ba71c660bad630b327c3e64d.png

                                                              htps://www.facebook.com/PokemonOnlineSVKE

                                                                                                                       PokeSvke

Bluester

Ervinha
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 01/07/15Posts: 416Gênero: MasculinoChar no Tibia: Bluester

Boa Viktor, ótimo conteúdo para o fórum !

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

Perfeito Bahianinha kkkkkkkk! Parabens!

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Administrador

xTibia 2017
avatar
Administrador
Administrador

INFOS

Grupo: AdministradorRegistrado: 09/07/05Posts: 5780Gênero: Outro

Caraca ótimo conteúdo brother! Parabéns e obrigado por postar =)

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

 

 

Slyton

A imaginação é mais importante que o conhecimento.
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 23/01/13Posts: 104Char no Tibia: Slyton

Não vou dar REP seu baiano, Você sabe sobre minha opinião sobre este tipo de coisa, mas BOA por fazer o código em si.

valakas

Valakinhas
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 28/02/14Posts: 416Gênero: Masculino

hehe muito bom reputado

tumblr_n41ua0hmLA1s5h198o1_400.gif

 

 

 

ClaudioMar231o

Claudio marcio
avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 13/01/14Posts: 163Gênero: Masculino

ótimo ! rsrs

Strogman

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/11/12Posts: 464Gênero: MasculinoChar no Tibia: Lysty Of Death

@all Fico feliz que tenham gostado do conteúdo. vamos que vamos

@Aberos Bahianinha é seu ra@#### kkk seu alogoense da lagoa preta XD

 

                                 logo_full_1600.png.f8d0c5d8ba71c660bad630b327c3e64d.png

                                                              htps://www.facebook.com/PokemonOnlineSVKE

                                                                                                                       PokeSvke

Luga03

Gabriel Lucena :D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/04/15Posts: 956Gênero: Masculino

Parabéns manin! Gostei bastante :D


http://gyazo.com/81703eaaed3c22b90afa2a06f4c5bf92

Deu este erro :/ Teria como ajudar?


Obs: Eu utilizo Tfs 0.4 :D

Hello! How are you? It's fine? 

 

Okay, so you like my helps? if yes, then do you can like my post, give-me a reputation, you can't?

 

Good morning for everyone! And have a good day!

Strogman

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/11/12Posts: 464Gênero: MasculinoChar no Tibia: Lysty Of Death

Parabéns manin! Gostei bastante :D

http://gyazo.com/81703eaaed3c22b90afa2a06f4c5bf92

 

Deu este erro :/ Teria como ajudar?

Obs: Eu utilizo Tfs 0.4 :D

na parte do protocolgame de vez de fazer o que tá la em cima /\ segue \/

 

em protocolgame.cpp adicione só isso

 

void ProtocolGame::sendCreatureNick(const Creature* creature)
{
    reloadCreature(creature);
}

 

em protocolgame.h adicione só isso

void sendCreatureNick(const Creature* creature);

 

                                 logo_full_1600.png.f8d0c5d8ba71c660bad630b327c3e64d.png

                                                              htps://www.facebook.com/PokemonOnlineSVKE

                                                                                                                       PokeSvke

Luga03

Gabriel Lucena :D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/04/15Posts: 956Gênero: Masculino

Pronto, aquele erro foi consertado mas agora está dando este erro:

 

https://gyazo.com/72f347406ae464da07ae9bb7c806eb6e

 

Obs: Está função serve apenas para monstros e summons ou servem para player também?

Hello! How are you? It's fine? 

 

Okay, so you like my helps? if yes, then do you can like my post, give-me a reputation, you can't?

 

Good morning for everyone! And have a good day!

deglorio

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 31/01/09Posts: 108

@@gristony

Parabéns pelo ótimo trabalho

Strogman

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/11/12Posts: 464Gênero: MasculinoChar no Tibia: Lysty Of Death

Pronto, aquele erro foi consertado mas agora está dando este erro:

 

https://gyazo.com/72f347406ae464da07ae9bb7c806eb6e

 

Obs: Está função serve apenas para monstros e summons ou servem para player também?

 

sim, serve para player também.

int32_t LuaScriptInterface::luaDoCreatureSetNick(lua_State* L)
{
    //doCreatureSetNick(cid, nick)
    ScriptEnviroment* env = getEnv();
    std::string nick = popString(L);
    Creature* creature = env->getCreatureByUID(popNumber(L));
    if(creature)
    {    
        Player* player;
        creature->nick = nick;
        player->sendCreatureNick(creature);
    }else{
        lua_pushnil(L);
    }
    return 1;
}

edit

topic corrigido

 

em protocolgame procure por

void ProtocolGame::AddCreature(NetworkMessage_ptr msg, const Creature* creature, bool known, uint32_t remove)
{
    if(!known)
    {   

em baixo de

msg->put<uint32_t>(creature->getID());

adicione

            std::string nick = creature->getName();
        if (creature->nick != "")
            nick = creature->nick;

substitua

msg->putString(creature->getHideName() ? "" : creature->getName());

por

msg->putString(creature->getHideName() ? "" : nick);

 

                                 logo_full_1600.png.f8d0c5d8ba71c660bad630b327c3e64d.png

                                                              htps://www.facebook.com/PokemonOnlineSVKE

                                                                                                                       PokeSvke

deglorio

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 31/01/09Posts: 108

Error

creature->nick = nick;

 

...luascript.cpp 'class Creature' has no member named 'nick'

Luga03

Gabriel Lucena :D
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/04/15Posts: 956Gênero: Masculino

Estou com o mesmo problema dele /\ :/

Hello! How are you? It's fine? 

 

Okay, so you like my helps? if yes, then do you can like my post, give-me a reputation, you can't?

 

Good morning for everyone! And have a good day!