Ir para conteúdo

doStartTrade(cid, target, item)


Oneshot

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
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
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
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
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
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
Compartilhar em outros sites

×
×
  • Criar Novo...