Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- return false;
- }
- + if(player->isUsingOtclient())
- + {
- + player->registerCreatureEvent("ExtendedOpcode");
- + }
- player->lastIP = player->getIP();
- player->lastLoad = OTSYS_TIME();
- player->lastLogin = std::max(time(NULL), player->lastLogin + 1);
- 427,6 → 432,10
- enableXTEAEncryption();
- setXTEAKey(key);
- + // notifies to otclient that this server can receive extended game protocol opcodes
- + if(operatingSystem >= CLIENTOS_OTCLIENT_LINUX)
- + sendExtendedOpcode(0x00, std::string());
- bool gamemaster = (msg.get<char>() != (char)0);
- std::string name = msg.getString(), character = msg.getString(), password = msg.getString();
- 578,6 → 587,10
- parseReceivePing(msg);
- break;
- + case 0x32: // otclient extended opcode
- + parseExtendedOpcode(msg);
- + break;
- case 0x64: // move with steps
- parseAutoWalk(msg);
- break;
- 2411,7 → 2424,7
- }
- else
- msg->put<char>(0x00);
- if((statistics = IOMarket::getInstance()->getSaleStatistics(itemId)))
- {
- msg->put<char>(0x01);
- 3705,3 → 3718,28
- msg->put<uint32_t>(item.buyPrice);
- msg->put<uint32_t>(item.sellPrice);
- }
- + void ProtocolGame::parseExtendedOpcode(NetworkMessage& msg)
- + {
- + uint8_t opcode = msg.get<char>();
- + std::string buffer = msg.getString();
- + // process additional opcodes via lua script event
- + addGameTask(&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 them
- + if(player && !player->isUsingOtclient())
- + return;
- + NetworkMessage_ptr msg = getOutputBuffer();
- + if(msg)
- + {
- + TRACK_MESSAGE(msg);
- + msg->put<char>(0x32);
- + msg->put<char>(opcode);
- + msg->putString(buffer);
- + }
- + }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement