diff --git a/include/TLuaEngine.h b/include/TLuaEngine.h index 27ee769..1c9de93 100644 --- a/include/TLuaEngine.h +++ b/include/TLuaEngine.h @@ -83,7 +83,7 @@ public: void SetServer(TServer* Server) { mServer = Server; } static void WaitForAll(std::vector>& Results); - void IgnoreIfNotError(const std::vector >& Results); + void ReportErrors(const std::vector >& Results); [[nodiscard]] std::shared_ptr EnqueueScript(TLuaStateId StateID, const TLuaChunk& Script); [[nodiscard]] std::shared_ptr EnqueueFunctionCall(TLuaStateId StateID, const std::string& FunctionName, const std::vector& Args); void EnsureStateExists(TLuaStateId StateId, const std::string& Name, bool DontCallOnInit = false); diff --git a/src/TLuaEngine.cpp b/src/TLuaEngine.cpp index 3b60317..e43b0a3 100644 --- a/src/TLuaEngine.cpp +++ b/src/TLuaEngine.cpp @@ -143,7 +143,7 @@ void TLuaEngine::WaitForAll(std::vector>& Results) { } // run this on the error checking thread -void TLuaEngine::IgnoreIfNotError(const std::vector>& Results) { +void TLuaEngine::ReportErrors(const std::vector>& Results) { std::unique_lock Lock2(mResultsToCheckMutex); for (const auto& Result : Results) { mResultsToCheck.push(Result); diff --git a/src/TNetwork.cpp b/src/TNetwork.cpp index f0c1c28..6ba9972 100644 --- a/src/TNetwork.cpp +++ b/src/TNetwork.cpp @@ -330,6 +330,8 @@ void TNetwork::Authentication(const TConnection& ClientConnection) { ClientKick(*Client, Reason); return; } + + LuaAPI::MP::Engine->ReportErrors(Futures); if (mServer.ClientCount() < size_t(Application::Settings.MaxPlayers)) { beammp_info("Identification success"); @@ -571,7 +573,7 @@ void TNetwork::OnDisconnect(const std::weak_ptr& ClientPtr, bool kicked SendToAll(&c, Packet, false, true); Packet.clear(); auto Futures = LuaAPI::MP::Engine->TriggerEvent("onPlayerDisconnect", "", c.GetID()); - LuaAPI::MP::Engine->IgnoreIfNotError(Futures); + LuaAPI::MP::Engine->ReportErrors(Futures); if (c.GetTCPSock()) CloseSocketProper(c.GetTCPSock()); if (c.GetDownSock()) @@ -605,13 +607,13 @@ void TNetwork::OnConnect(const std::weak_ptr& c) { auto LockedClient = c.lock(); LockedClient->SetID(OpenID()); beammp_info("Assigned ID " + std::to_string(LockedClient->GetID()) + " to " + LockedClient->GetName()); - LuaAPI::MP::Engine->IgnoreIfNotError(LuaAPI::MP::Engine->TriggerEvent("onPlayerConnecting", "", LockedClient->GetID())); + LuaAPI::MP::Engine->ReportErrors(LuaAPI::MP::Engine->TriggerEvent("onPlayerConnecting", "", LockedClient->GetID())); SyncResources(*LockedClient); if (LockedClient->GetStatus() < 0) return; (void)Respond(*LockedClient, "M" + Application::Settings.MapName, true); //Send the Map on connect beammp_info(LockedClient->GetName() + " : Connected"); - LuaAPI::MP::Engine->IgnoreIfNotError(LuaAPI::MP::Engine->TriggerEvent("onPlayerJoining", "", LockedClient->GetID())); + LuaAPI::MP::Engine->ReportErrors(LuaAPI::MP::Engine->TriggerEvent("onPlayerJoining", "", LockedClient->GetID())); } void TNetwork::SyncResources(TClient& c) { @@ -810,7 +812,7 @@ bool TNetwork::SyncClient(const std::weak_ptr& c) { // ignore error (void)SendToAll(LockedClient.get(), ("JWelcome ") + LockedClient->GetName() + "!", false, true); - LuaAPI::MP::Engine->IgnoreIfNotError(LuaAPI::MP::Engine->TriggerEvent("onPlayerJoin", "", LockedClient->GetID())); + LuaAPI::MP::Engine->ReportErrors(LuaAPI::MP::Engine->TriggerEvent("onPlayerJoin", "", LockedClient->GetID())); LockedClient->SetIsSyncing(true); bool Return = false; bool res = true; diff --git a/src/TServer.cpp b/src/TServer.cpp index 8b3249a..ac466a4 100644 --- a/src/TServer.cpp +++ b/src/TServer.cpp @@ -162,7 +162,7 @@ void TServer::HandleEvent(TClient& c, const std::string& Data) { Name = t; break; case 2: - LuaAPI::MP::Engine->IgnoreIfNotError(LuaAPI::MP::Engine->TriggerEvent(Name, "", c.GetID(), t)); + LuaAPI::MP::Engine->ReportErrors(LuaAPI::MP::Engine->TriggerEvent(Name, "", c.GetID(), t)); break; default: break; @@ -282,7 +282,7 @@ void TServer::ParseVehicle(TClient& c, const std::string& Pckt, TNetwork& Networ c.SetUnicycleID(-1); } Network.SendToAll(nullptr, Packet, true, true); - LuaAPI::MP::Engine->IgnoreIfNotError(LuaAPI::MP::Engine->TriggerEvent("onVehicleDeleted", "", c.GetID(), VID)); + LuaAPI::MP::Engine->ReportErrors(LuaAPI::MP::Engine->TriggerEvent("onVehicleDeleted", "", c.GetID(), VID)); c.DeleteCar(VID); beammp_debug(c.GetName() + (" deleted car with ID ") + std::to_string(VID)); } @@ -300,7 +300,7 @@ void TServer::ParseVehicle(TClient& c, const std::string& Pckt, TNetwork& Networ if (PID != -1 && VID != -1 && PID == c.GetID()) { Data = Data.substr(Data.find('{')); - LuaAPI::MP::Engine->IgnoreIfNotError(LuaAPI::MP::Engine->TriggerEvent("onVehicleReset", "", c.GetID(), VID, Data)); + LuaAPI::MP::Engine->ReportErrors(LuaAPI::MP::Engine->TriggerEvent("onVehicleReset", "", c.GetID(), VID, Data)); Network.SendToAll(&c, Packet, false, true); } return;