Oque faz isso?
info
Grupo: Marquês
Registrado: 06/11/11
Posts: 1.1k
Reputação: +109
Char no Tibia: Stroked

info
Grupo: Infante
Registrado: 27/01/13
Posts: 1.7k
Reputação: +104
Gênero: Masculino

Tambem queria saber para que serve
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Serve para comunicar servidor com client, Com isso é possível criar muitos sistemas, como de andar e soltar som etc.
info
Grupo: Campones
Registrado: 29/03/13
Posts: 99
Reputação: +24

Muito bom Banana, sempre trazendo coisas legais pra sessão de códigos prontos em.
Vai dar pra fazer bastante coisa legal com isso dai, pena que meus conhecimentos são bem limitados..
Enfim, reputado.
info
Grupo: Conde
Registrado: 10/12/11
Posts: 962
Reputação: +99
Gênero: Masculino

arruma aqueli code ali em cima
enum OperatingSystem_t
{
CLIENTOS_LINUX = 0x01,
CLIENTOS_WINDOWS = 0x02,
CLIENTOS_OTCLIENT_LINUX = 0x0A,
CLIENTOS_OTCLIENT_WINDOWS = 0x0B,
CLIENTOS_OTCLIENT_MAC = 0x0C,
};[code]
[b][size=5]player.h[/size][/b]
[b]Embaixo de[/b]
[code]void sendCreatureShield(const Creature* creature)
Editado Abril 27 por PostadorHunter
Vcs podem dar ele ja compilado com isso? o executavel só, se puder seria de grande ajuda, pois meu pc nao compila o otclient infelizmente ele fica com 90 mb o executavel.
info
Grupo: Conde
Registrado: 10/12/11
Posts: 962
Reputação: +99
Gênero: Masculino

isso é nas sources do servidor e não do otclientVcs podem dar ele ja compilado com isso? o executavel só, se puder seria de grande ajuda, pois meu pc nao compila o otclient infelizmente ele fica com 90 mb o executavel.
isso é nas sources do servidor e não do otclientVcs podem dar ele ja compilado com isso? o executavel só, se puder seria de grande ajuda, pois meu pc nao compila o otclient infelizmente ele fica com 90 mb o executavel.
Desculpe minha ignorancia, kkkkkk.
@topic
Obrigado banana, so traz coisas legais ao forum.
info
Grupo: Cavaleiro
Registrado: 08/01/11
Posts: 192
Reputação: +11
Gênero: Masculino

Nao teria um link ja copilado ?
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

/\ ques q ele compile TODAS as versoes de sourcers pra vc amigo? ;/ esse codigo eh pra sourcer do serv ta.. n do otclient...
Pois é, a galera parece que gosta de continuar ignorante... Para aprender a compilar as sources com uma ferramenta muito fácil e simples como o Dev-CPP, que tem todas as libs ja instalada, em veis de correr atras fica pedindo aos outros... Não vejo por que se humilhar tanto assim :\ o tempo que vocês perdem pedindo podia ter aprendido já, Mais fazer oque né...
info
Grupo: Artesão
Registrado: 16/03/13
Posts: 101
Reputação: +2
Char no Tibia: Noocktall

Bota o executável e as dlls de um server svn ou tfs 8.54 ja que pocas sabem compilhar
Banana esse opcode tbm serve pra 8.6? poderia dizer em qual versão das sources foi feito? vlw
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

Esse código está aptado para a versão 0.3.6pl1 das source, foi a que testei, porem deve funcionar nas outras.









info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino
Adaptação pra source 8.54+
LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR
Vamos ao código.
protocolgame.h
Embaixo de
Adicione
protocolgame.cpp
Embaixo de
uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()};enableXTEAEncryption();setXTEAKey(key);Adicione
Embaixo de
void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo item){const ItemType& it = Item::items[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);elsemsg->AddByte(0x01);msg->AddString(item.itemName);msg->AddU32(uint32_t(it.weight * 100));msg->AddU32(item.buyPrice);msg->AddU32(item.sellPrice);}Adicione
void ProtocolGame::parseExtendedOpcode(NetworkMessage& msg){uint8_t opcode = msg.GetByte();std::string buffer = msg.GetString();// process additional opcodes via lua script eventaddGameTask(&Game::parsePlayerExtendedOpcode, player->getID(), opcode, buffer);}void ProtocolGame::sendExtendedOpcode(uint8_t opcode, const std::string& buffer){// extended opcodes can only be send to players using otclient, cipsoft's tibia can't understand themNetworkMessage_ptr msg = getOutputBuffer();if(msg){TRACK_MESSAGE(msg);msg->AddByte(0x32);msg->AddByte(opcode);msg->AddString(buffer);}}Embaixo de
Adicione
enums.h
Embaixo de
enum GuildLevel_t{GUILDLEVEL_NONE = 0,GUILDLEVEL_MEMBER,GUILDLEVEL_VICE,GUILDLEVEL_LEADER};Substitua o OperatingSystem por este
enum OperatingSystem_t{CLIENTOS_LINUX = 0x01,CLIENTOS_WINDOWS = 0x02,CLIENTOS_OTCLIENT_LINUX = 0x0A,CLIENTOS_OTCLIENT_WINDOWS = 0x0B,CLIENTOS_OTCLIENT_MAC = 0x0C,};/player.h
Embaixo de
Adicione
void sendExtendedOpcode(uint8_t opcode, const std::string& buffer){if(client) client->sendExtendedOpcode(opcode, buffer);}luascript.cpp
Embaixo de
void LuaScriptInterface::registerFunctions(){Adicione
Embaixo de
Adicione
int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L){//doSendPlayerExtendedOpcode(cid, opcode, buffer)std::string buffer = popString(L);int opcode = popNumber(L);ScriptEnviroment* env = getEnv();if(Player* player = env->getPlayerByUID(popNumber(L))) {player->sendExtendedOpcode(opcode, buffer);lua_pushboolean(L, true);}lua_pushboolean(L, false);return 1;}luascript.h
Embaixo de
Adicione
creatureevent.h
.
Substitua
Por isso
Embaixo de
Adicione
creatureevent.cpp
Embaixo de
Adicione
Embaixo de
Adicione
Embaixo de
Adicione
Embaixo de
Adicione
uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer){//onExtendedOpcode(cid, opcode, buffer)if(m_interface->reserveEnv()){ScriptEnviroment* env = m_interface->getEnv();if(m_scripted == EVENT_SCRIPT_BUFFER){env->setRealPos(creature->getPosition());std::stringstream scriptstream;scriptstream << "local cid = " << env->addThing(creature) << std::endl;scriptstream << "local opcode = " << (int)opcode << std::endl;scriptstream << "local buffer = " << buffer.c_str() << std::endl;scriptstream << m_scriptData;bool result = true;if(m_interface->loadBuffer(scriptstream.str())){lua_State* L = m_interface->getState();result = m_interface->getGlobalBool(L, "_result", true);}m_interface->releaseEnv();return result;}else{#ifdef __DEBUG_LUASCRIPTS__char desc[35];sprintf(desc, "%s", player->getName().c_str());env->setEvent(desc);#endifenv->setScriptId(m_scriptId, m_interface);env->setRealPos(creature->getPosition());lua_State* L = m_interface->getState();m_interface->pushFunction(m_scriptId);lua_pushnumber(L, env->addThing(creature));lua_pushnumber(L, opcode);lua_pushlstring(L, buffer.c_str(), buffer.length());bool result = m_interface->callFunction(3);m_interface->releaseEnv();return result;}}else{std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl;return 0;}}game.h
Embaixo de
int32_t getLightHour() {return lightHour;}void startDecay(Item* item);Adicione
game.cpp
Embaixo de
Adicione
void Game::parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer){Player* player = getPlayerByID(playerId);if(!player || player->isRemoved())return;CreatureEventList extendedOpcodeEvents = player->getCreatureEvents(CREATURE_EVENT_EXTENDED_OPCODE);for(CreatureEventList::iterator it = extendedOpcodeEvents.begin(); it != extendedOpcodeEvents.end(); ++it)(*it)->executeExtendedOpcode(player, opcode, buffer);}/creaturescripts/creaturescrips.xml
/creaturescripts/extendedopcode.lua
Editado Agosto 3 por Bennyyw