Now tolerates different versions

This commit is contained in:
mathusummut
2018-11-11 18:55:42 +01:00
parent d4ba5cbf00
commit 4bdea28cf4
2 changed files with 16 additions and 60 deletions

View File

@@ -575,38 +575,15 @@ namespace Game {
if (compatible == false) {
if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d]\n", extractFileFromDirectoryPath(__FILE__).c_str(), __FUNCTION__, __LINE__);
bool versionMatched = false;
string sErr = "";
string playerNameStr = getHumanPlayerName();
string sErr = "Server and client binary mismatch!\nYou have to use the exactly same binaries!\n\nServer: " + networkMessageIntro.getVersionString() +
"\nClient: " + GameVersionString + " player [" + playerNameStr + "]";
printf("%s\n", sErr.c_str());
if (strncmp(GameVersionString.c_str(), networkMessageIntro.getVersionString().c_str(), GameVersionString.length()) != 0) {
string playerNameStr = getHumanPlayerName();
sErr = "Server and client binary mismatch!\nYou have to use the exactly same binaries!\n\nServer: " + networkMessageIntro.getVersionString() +
"\nClient: " + GameVersionString + " player [" + playerNameStr + "]";
printf("%s\n", sErr.c_str());
sendTextMessage("Server and client binary mismatch", -1, true, "");
sendTextMessage(" Server:" + networkMessageIntro.getVersionString(), -1, true, "");
sendTextMessage(" Client: " + GameVersionString, -1, true, "");
sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, "");
} else {
versionMatched = true;
string playerNameStr = getHumanPlayerName();
sErr = "Warning, Server and client are using the same version but different platforms.\n\nServer: " + networkMessageIntro.getVersionString() +
"\nClient: " + GameVersionString + " player [" + playerNameStr + "]";
//printf("%s\n",sErr.c_str());
}
// error message and disconnect only if checked
if (Config::getInstance().getBool("PlatformConsistencyChecks", "true") &&
versionMatched == false) {
DisplayErrorMessage(sErr);
sleep(1);
setQuit(true);
close();
return;
}
sendTextMessage("Server and client binary mismatch", -1, true, "");
sendTextMessage(" Server:" + networkMessageIntro.getVersionString(), -1, true, "");
sendTextMessage(" Client: " + GameVersionString, -1, true, "");
sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, "");
}
if (SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled && chrono.getMillis() > 0) SystemFlags::OutputDebug(SystemFlags::debugPerformance, "In [%s::%s Line: %d] took msecs: %lld\n", extractFileFromDirectoryPath(__FILE__).c_str(), __FUNCTION__, __LINE__, chrono.getMillis());

View File

@@ -879,36 +879,15 @@ namespace Game {
if (compatible == false) {
if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d]\n", __FILE__, __FUNCTION__, __LINE__);
bool versionMatched = false;
string sErr = "";
string playerNameStr = name;
string sErr = "Server and client version mismatch!\nYou have to use the exactly same versions!\n\nServer: " + GameVersionString +
"\nClient: " + networkMessageIntro.getVersionString() + " player [" + playerNameStr + "]";
printf("%s\n", sErr.c_str());
if (strncmp(GameVersionString.c_str(), networkMessageIntro.getVersionString().c_str(), GameVersionString.length()) != 0) {
string playerNameStr = name;
sErr = "Server and client version mismatch!\nYou have to use the exactly same versions!\n\nServer: " + GameVersionString +
"\nClient: " + networkMessageIntro.getVersionString() + " player [" + playerNameStr + "]";
printf("%s\n", sErr.c_str());
serverInterface->sendTextMessage("Server and client version mismatch", -1, true, "", lockedSlotIndex);
serverInterface->sendTextMessage(" Server:" + GameVersionString, -1, true, "", lockedSlotIndex);
serverInterface->sendTextMessage(" Client: " + networkMessageIntro.getVersionString(), -1, true, "", lockedSlotIndex);
serverInterface->sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, "", lockedSlotIndex);
} else {
versionMatched = true;
string playerNameStr = name;
sErr = "Warning, Server and client are using the same version but different platforms.\n\nServer: " + GameVersionString +
"\nClient: " + networkMessageIntro.getVersionString() + " player [" + playerNameStr + "]";
//printf("%s\n",sErr.c_str());
if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d] %s\n", __FILE__, __FUNCTION__, __LINE__, sErr.c_str());
}
if (Config::getInstance().getBool("PlatformConsistencyChecks", "true") &&
versionMatched == false) { // error message and disconnect only if checked
if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d] %s\n", __FILE__, __FUNCTION__, __LINE__, sErr.c_str());
close();
if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d] %s\n", __FILE__, __FUNCTION__, __LINE__, sErr.c_str());
return;
}
serverInterface->sendTextMessage("Server and client version mismatch", -1, true, "", lockedSlotIndex);
serverInterface->sendTextMessage(" Server:" + GameVersionString, -1, true, "", lockedSlotIndex);
serverInterface->sendTextMessage(" Client: " + networkMessageIntro.getVersionString(), -1, true, "", lockedSlotIndex);
serverInterface->sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, "", lockedSlotIndex);
}
if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d]\n", __FILE__, __FUNCTION__, __LINE__);