Ir para conteúdo

Posts Recomendados

Oi, pessoal.

 

Eu não sei se essa função é útil para vocês, mas lembro que um certo tempo atrás, teve um membro que pediu ela. Essa função no caso simula o funcionamento da opção "Trade with..."

 

Lembrando que foi feito com base no 0.4, então pode não funcionar em versões inferiores.

 

 

Em luascript.h, adicione essa linha, abaixo de linhas parecidas.

static int32_t luaDoStartTrade(lua_State* L);

Em luascript.cpp, adicione isso perto de linhas parecidas.

    //doStartTrade(cid, target, item)
    lua_register(m_luaState, "doStartTrade", LuaInterface::luaDoStartTrade);

Ainda em luascript.cpp, adicione isso logo abaixo de alguma estrutura parecida.

int32_t LuaInterface::luaDoStartTrade(lua_State* L)
{
    ScriptEnviroment* env = getEnv();

    Item* item = env->getItemByUID(popNumber(L));
    if(!item)
    {
        errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND));
        lua_pushboolean(L, false);
        return 1;
    }

    Player* target = env->getPlayerByUID(popNumber(L));
    Player* player = env->getPlayerByUID(popNumber(L));
    if(!player || !target)
    {
        errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
        lua_pushboolean(L, false);
        return 1;
    }


    if(g_game.internalStartTrade(player, target, item))
    {
        lua_pushboolean(L, true);
        return 1;
    }
    return 1;
}

Eu realmente não sei qual pode ser a utilização disso nos servidores, então, boa sorte com a criatividade, xtibianos.

 

Abraços.

Editado por Oneshot
Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/
Compartilhar em outros sites

poderia explicar pq tem duas variáveis com o msm valor o.O?

 

Player* target = env->getPlayerByUID(popNumber(L));
Player* player = env->getPlayerByUID(popNumber(L));

 

vlws, boa função

rep+

Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1576439
Compartilhar em outros sites

poderia explicar pq tem duas variáveis com o msm valor o.O?

Player* target = env->getPlayerByUID(popNumber(L));
Player* player = env->getPlayerByUID(popNumber(L));

vlws, boa função

rep+

 

Elas não têm o mesmo valor. bigsmile.gif

Editado por Oneshot
Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1576440
Compartilhar em outros sites

Qual quer codigo de programação é bem vindo pois essa area não estar com muito conteud.

 

Parabens você é 10, Ja sei como vou usar ele haha ^^

Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1576466
Compartilhar em outros sites

Maneiro, dá pra fazer muitas coisas com isso.

 

Poderia dar suporte pra trade com NPCs e até monstros (?), tipo parte de quest, ficaria legal.

Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1576517
Compartilhar em outros sites

  • 2 weeks later...

muito bom esse codigo, vai ajudar muitas pessoas que querem esse sistema, ja to usando no meu tfs 0.3.6, dei uma adaptada para poder ser adcionada e ser compilada sem error, rep+ ae Umtiro seu lindao.

 

PS: aqui com a nova distro, funcionou sem problemas, com a adaptaçao q eu fiz, funciona o trade msm em distancia do mesmo.

Editado por Maenilse
Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1580427
Compartilhar em outros sites

 

Com isso dá pra fazer um trade a distância (?)

 

Ótimos códigos você tem, parabéns!

 

Isso mesmo

 

 

Oneshot, teria como fazer por exemplo para não aceitar qualquer tipo de runa/potion no trade porque se não tiraria o RPG do jogo dando trade à distância por exemplo para pegar pot para não sair da hunt.

ACredito que com um evento em creaturescripts de, não?

Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1580461
Compartilhar em outros sites

 

 

Com isso dá pra fazer um trade a distância (?)

 

Ótimos códigos você tem, parabéns!

 

Isso mesmo

 

 

Oneshot, teria como fazer por exemplo para não aceitar qualquer tipo de runa/potion no trade porque se não tiraria o RPG do jogo dando trade à distância por exemplo para pegar pot para não sair da hunt.

ACredito que com um evento em creaturescripts de, não?

 

 

Na verdade, essa função ignora os creaturescripts. Então você teria que verificar, antes de usar, se o ID do item é uma potion, por exemplo.

Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1580511
Compartilhar em outros sites

  • 1 month later...

 

Em luascript.h, adicione essa linha, abaixo de linhas parecidas.

static int32_t luaDoPlayerSendMailByName(lua_State* L);

 

 

Não seria para adicionar

static int32_t luaDoStartTrade(lua_State* L);

 

 

Editado por igorlabanca
Link para o comentário
https://xtibia.com/forum/topic/223158-dostarttradecid-target-item/#findComment-1599589
Compartilhar em outros sites

×
×
  • Criar Novo...