Cara, juro que esses dias estava procurando exatamente isso, como que funcionava. Muito bom.
- Fórum
- OTServ
- Recursos
- Linguagens de Programação
- Doplayersendchannelsdialog(Cid)
5
1.3k
2 semanas depois...
21 de julho de 2012 às 19:05
1 mês depois...
info
Grupo: Campones
Registrado: 12/06/12
Posts: 9
Reputação: +1

02 de agosto de 2012 às 20:37
muito bom mano, você pode ajudar com esse código: http://www.xtibia.com/forum/topic/190881-funcao-getdirectiontowalk-pda/? é necessário pra order system o sistema de PDA
2 semanas depois...
13 de agosto de 2012 às 16:02
como eu faço para colocar uma storage no channel? só mostrar o canal help por exemplo se o player tiver a storage 1070?





info
Grupo: Marquês
Registrado: 05/07/09
Posts: 1.3k
Reputação: +732
Nome: doPlayerSendChannelsDialog(cid)
Tipo: Função LUA
Autor: Oneshot
Fala, bandiputa!
Recentemente baixei um servidor de Pokémon pela primeira vez para ver como funcionavam os sistemas lá dentro e fiquei impressionado com o sistema de clicar no computador e abrir a janela de canais.
E então eu pensei comigo - "Vou ver como é que eles fizeram, né." - Fucei as pastas e não tinha nada e então a realidade me bateu na cara. Sim, aquela era uma função programada diretamente no código fonte do servidor e mais uma vez a realidade me bateu denovo - Ninguém disponibiliza as sources de servidores de Pokémon.
Então o que eu fiz? Simples, desenvolvi minha própria função de abrir a janela de canais e ela é realmente simples, vocês mesmos irão ver.
Em luascript.h, procure por:
Logo após, adicione:
Em luascript.cpp, procure por:
Logo após, adicione:
Ainda em luascript.cpp, procure por:
int32_t LuaInterface::luaGetChannelList(lua_State* L) { //getChannelList() lua_newtable(L); ChannelList list = g_chat.getPublicChannels(); ChannelList::const_iterator it = list.begin(); for(uint32_t i = 1; it != list.end(); ++it, ++i) { createTable(L, i); setField(L, "id", (*it)->getId()); setField(L, "name", (*it)->getName()); setField(L, "flags", (*it)->getFlags()); setField(L, "level", (*it)->getLevel()); setField(L, "access", (*it)->getAccess()); pushTable(L); } return 1; }E logo após, adicione:
int32_t LuaInterface::luaDoPlayerSendChannelsDialog(lua_State* L) { //doPlayerSendChannelsDialog(uid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->sendChannelsDialog(); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; }Agora é só compilar seu servidor no IDE de sua preferência.
Exemplo de Uso:
Se o nome estiver muito grande é só adicionar isso no 100-compat.lua
Vale lembrar que isso é feito nas sources, no código-fonte do seu servidor.
Abração \o/
Editado Julho 14 por Oneshot