From 19ccd823efae463eca405969dc99c5d08e3301cf Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Mon, 5 Dec 2016 01:20:02 +1100 Subject: [PATCH 1/4] temporary patch for the door system --- rsc/scripts/door_utility.lua | 8 ++++++++ server/triggers/trigger_manager.cpp | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/rsc/scripts/door_utility.lua b/rsc/scripts/door_utility.lua index 11f681d..7901acc 100644 --- a/rsc/scripts/door_utility.lua +++ b/rsc/scripts/door_utility.lua @@ -66,6 +66,10 @@ function doorUtility.CreateDoorPair(handle, roomOne, Xone, Yone, roomTwo, Xtwo, --disable the other trigger local triggerTwo = triggerManagerAPI.FindTrigger(roomAPI.GetTriggerMgr(roomTwo), handle) triggerAPI.PushExclusionEntity(triggerTwo, entity) + + --bookkeeping: remove from the original trigger's exclusion list + local triggerOne = triggerManagerAPI.FindTrigger(roomAPI.GetTriggerMgr(roomOne), handle) + triggerAPI.RemoveExclusionEntity(triggerOne, entity) end local function scriptTwo(entity) @@ -79,6 +83,10 @@ function doorUtility.CreateDoorPair(handle, roomOne, Xone, Yone, roomTwo, Xtwo, --disable the other trigger local triggerOne = triggerManagerAPI.FindTrigger(roomAPI.GetTriggerMgr(roomOne), handle) triggerAPI.PushExclusionEntity(triggerOne, entity) + + --bookkeeping: remove from the original trigger's exclusion list + local triggerTwo = triggerManagerAPI.FindTrigger(roomAPI.GetTriggerMgr(roomTwo), handle) + triggerAPI.RemoveExclusionEntity(triggerTwo, entity) end --create the triggers proper diff --git a/server/triggers/trigger_manager.cpp b/server/triggers/trigger_manager.cpp index dba1af6..d93236d 100644 --- a/server/triggers/trigger_manager.cpp +++ b/server/triggers/trigger_manager.cpp @@ -50,6 +50,9 @@ void TriggerManager::Compare(std::stack entityStack) { continue; } + //push to the exclusion list + triggerPair.second.GetExclusionList()->push_back(entity); + //run the trigger script lua_rawgeti(lua, LUA_REGISTRYINDEX, triggerPair.second.GetScriptReference()); lua_pushlightuserdata(lua, entity); @@ -58,13 +61,10 @@ void TriggerManager::Compare(std::stack entityStack) { //error throw(std::runtime_error(std::string() + "Lua error: " + lua_tostring(lua, -1) )); } - - //push to the exclusion list - triggerPair.second.GetExclusionList()->push_back(entity); } else { //remove members of the exclusion list - //NOTE: characters in different rooms won't be removed, but that shouldn't be a problem + //NOTE: characters in different rooms won't be removed, which does tend to be a problem triggerPair.second.GetExclusionList()->remove_if([entity](Entity* ptr) -> bool { return entity == ptr; }); From 3a2d28022b6324c671c20626d1d76ffeb5a838ec Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Mon, 5 Dec 2016 15:16:52 +1100 Subject: [PATCH 2/4] Trying to sidestep the issue --- rsc/scripts/door_utility.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rsc/scripts/door_utility.lua b/rsc/scripts/door_utility.lua index 7901acc..fe02b6c 100644 --- a/rsc/scripts/door_utility.lua +++ b/rsc/scripts/door_utility.lua @@ -60,7 +60,7 @@ function doorUtility.CreateDoorPair(handle, roomOne, Xone, Yone, roomTwo, Xtwo, --move the character characterAPI.SetRoom(entity, roomTwo) - characterAPI.SetOrigin(entity, Xtwo, Ytwo-16) + characterAPI.SetOrigin(entity, Xtwo, Ytwo+16) networkAPI.PumpCharacterUpdate(entity) --disable the other trigger @@ -77,7 +77,7 @@ function doorUtility.CreateDoorPair(handle, roomOne, Xone, Yone, roomTwo, Xtwo, --move the character characterAPI.SetRoom(entity, roomOne) - characterAPI.SetOrigin(entity, Xone, Yone-16) --NOTE: the 16 pixel margin for presentation + characterAPI.SetOrigin(entity, Xone, Yone+16) --NOTE: +16 should prevent double collision issues networkAPI.PumpCharacterUpdate(entity) --disable the other trigger @@ -94,4 +94,4 @@ function doorUtility.CreateDoorPair(handle, roomOne, Xone, Yone, roomTwo, Xtwo, doorUtility.CreateTrigger(handle, roomTwo, Xtwo, Ytwo, scriptTwo) end -return doorUtility \ No newline at end of file +return doorUtility From 6a4399934c09d8697afa1c5e628403592d773113 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Mon, 5 Dec 2016 15:38:18 +1100 Subject: [PATCH 3/4] Added a kick message when clients are dropped, just in case --- server/clients/client_manager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/clients/client_manager.cpp b/server/clients/client_manager.cpp index b9eb238..feeb985 100644 --- a/server/clients/client_manager.cpp +++ b/server/clients/client_manager.cpp @@ -43,6 +43,11 @@ std::list ClientManager::CheckConnections() { for (auto& it : elementMap) { if (it.second.GetAttempts() > 2) { returnList.push_back(it.first); + + //send the drop message + ServerPacket newPacket; + newPacket.type = SerialPacketType::ADMIN_DISCONNECT_FORCED; + UDPNetworkUtility::GetSingleton().SendTo(it.second.GetAddress(), &newPacket); } } @@ -106,4 +111,4 @@ int ClientManager::GetTotalCount() { std::map* ClientManager::GetContainer() { return &elementMap; -} \ No newline at end of file +} From b95f08f62e0375f543d674efd205f1c585d4a3be Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Mon, 5 Dec 2016 16:04:55 +1100 Subject: [PATCH 4/4] Modified instructions --- instructions.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/instructions.txt b/instructions.txt index bf75ada..ef0103b 100644 --- a/instructions.txt +++ b/instructions.txt @@ -33,3 +33,15 @@ Instructions For Setup from the main menu; this displays the list of available servers. 7. Select the name of a server (default is 'Public') and select 'Join'. 8. Welcome to Tortuga, enjoy your stay. + +------------------------- +Linux Users +------------------------- + +Before running this on linux, you may need to run the following commands: + +sudo apt-get install libsdl2-net-2.0-0 +sudo apt-get install libsdl2-image-2.0-0 +sudo apt-get install libsdl2-ttf-2.0-0 + +