From 27db78567b7a2f30433670418273a7ba4d23d911 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 25 Dec 2013 15:10:59 +0100 Subject: [PATCH] Fix writables in 7.6, fixes #416 --- src/client/const.h | 2 +- src/client/game.cpp | 8 ++++++-- src/client/game.h | 2 +- src/client/protocolgameparse.cpp | 9 ++++++--- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/client/const.h b/src/client/const.h index 3a084a26..bd87b4e4 100644 --- a/src/client/const.h +++ b/src/client/const.h @@ -374,8 +374,8 @@ namespace Otc GamePlayerStateU16 = 48, GameNewOutfitProtocol = 49, GamePVPMode = 50, + GameWritableDate = 51, - // 51-100 reserved to be defined in lua LastGameFeature = 101 }; diff --git a/src/client/game.cpp b/src/client/game.cpp index ce12dfb6..5bdf7ded 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -490,9 +490,9 @@ void Game::processCloseTrade() g_lua.callGlobalField("g_game", "onCloseTrade"); } -void Game::processEditText(uint id, int itemId, int maxLength, const std::string& text, const std::string& writter, const std::string& date) +void Game::processEditText(uint id, int itemId, int maxLength, const std::string& text, const std::string& writer, const std::string& date) { - g_lua.callGlobalField("g_game", "onEditText", id, itemId, maxLength, text, writter, date); + g_lua.callGlobalField("g_game", "onEditText", id, itemId, maxLength, text, writer, date); } void Game::processEditList(uint id, int doorId, const std::string& text) @@ -1451,6 +1451,10 @@ void Game::setProtocolVersion(int version) m_features.reset(); enableFeature(Otc::GameFormatCreatureName); + if(version >= 770) + { + enableFeature(Otc::GameWritableDate); // might not be since 770 + } if(version >= 780) { diff --git a/src/client/game.h b/src/client/game.h index d2de19ed..d5e17064 100644 --- a/src/client/game.h +++ b/src/client/game.h @@ -124,7 +124,7 @@ protected: void processCloseTrade(); // edit text/list - void processEditText(uint id, int itemId, int maxLength, const std::string& text, const std::string& writter, const std::string& date); + void processEditText(uint id, int itemId, int maxLength, const std::string& text, const std::string& writer, const std::string& date); void processEditList(uint id, int doorId, const std::string& text); // questlog diff --git a/src/client/protocolgameparse.cpp b/src/client/protocolgameparse.cpp index 2fa28046..45936e83 100644 --- a/src/client/protocolgameparse.cpp +++ b/src/client/protocolgameparse.cpp @@ -997,10 +997,13 @@ void ProtocolGame::parseEditText(const InputMessagePtr& msg) int maxLength = msg->getU16(); std::string text = msg->getString(); - std::string writter = msg->getString(); - std::string date = msg->getString(); - g_game.processEditText(id, itemId, maxLength, text, writter, date); + std::string writer = msg->getString(); + std::string date = ""; + if(g_game.getFeature(Otc::GameWritableDate)) + date = msg->getString(); + + g_game.processEditText(id, itemId, maxLength, text, writer, date); } void ProtocolGame::parseEditList(const InputMessagePtr& msg)