Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ bool CStaticFunctionDefinitions::TriggerServerEvent(const char* szName, CClientE
return false;
}

bool CStaticFunctionDefinitions::TriggerLatentServerEvent(const char* szName, CClientEntity& CallWithEntity, CLuaArguments& Arguments, int iBandwidth,
uint CStaticFunctionDefinitions::TriggerLatentServerEvent(const char* szName, CClientEntity& CallWithEntity, CLuaArguments& Arguments, int iBandwidth,
CLuaMain* pLuaMain, ushort usResourceNetId)
{
assert(szName);
Expand All @@ -214,11 +214,11 @@ bool CStaticFunctionDefinitions::TriggerLatentServerEvent(const char* szName, CC
return false;
}
g_pClientGame->GetLatentTransferManager()->AddSendBatchBegin(PACKET_ID_LUA_EVENT, pBitStream);
g_pClientGame->GetLatentTransferManager()->AddSend(0, pBitStream->Version(), iBandwidth, pLuaMain, usResourceNetId);
SSendHandle handle = g_pClientGame->GetLatentTransferManager()->AddSend(0, pBitStream->Version(), iBandwidth, pLuaMain, usResourceNetId);
g_pClientGame->GetLatentTransferManager()->AddSendBatchEnd();
g_pNet->DeallocateNetBitStream(pBitStream);

return true;
return handle;
}

return false;
Expand Down
2 changes: 1 addition & 1 deletion Client/mods/deathmatch/logic/CStaticFunctionDefinitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class CStaticFunctionDefinitions
static bool RemoveEventHandler(CLuaMain& LuaMain, const char* szName, CClientEntity& Entity, const CLuaFunctionRef& iLuaFunction);
static bool TriggerEvent(const char* szName, CClientEntity& Entity, const CLuaArguments& Arguments, bool& bWasCancelled);
static bool TriggerServerEvent(const char* szName, CClientEntity& CallWithEntity, CLuaArguments& Arguments);
static bool TriggerLatentServerEvent(const char* szName, CClientEntity& CallWithEntity, CLuaArguments& Arguments, int bandwidth, CLuaMain* pLuaMain,
static uint TriggerLatentServerEvent(const char* szName, CClientEntity& CallWithEntity, CLuaArguments& Arguments, int bandwidth, CLuaMain* pLuaMain,
ushort usResourceNetId);
static bool CancelEvent(bool bCancel);
static bool WasEventCancelled();
Expand Down
5 changes: 3 additions & 2 deletions Client/mods/deathmatch/logic/lua/CLuaFunctionDefs.Event.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -323,9 +323,10 @@ int CLuaFunctionDefs::TriggerLatentServerEvent(lua_State* luaVM)
}

// Trigger it
if (CStaticFunctionDefinitions::TriggerLatentServerEvent(strName, *pCallWithEntity, Arguments, iBandwidth, pLuaMain, usResourceNetId))
SSendHandle eventID = CStaticFunctionDefinitions::TriggerLatentServerEvent(strName, *pCallWithEntity, Arguments, iBandwidth, pLuaMain, usResourceNetId);
if (eventID >= 0)
{
lua_pushboolean(luaVM, true);
lua_pushnumber(luaVM, eventID);
return 1;
}
}
Expand Down
5 changes: 4 additions & 1 deletion Server/mods/deathmatch/logic/CGame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4697,7 +4697,10 @@ bool CGame::SendPacket(unsigned char ucPacketID, const NetServerPlayerID& player
return g_pNetServer->SendPacket(ucPacketID, playerID, pBitStream, bBroadcast, packetPriority, packetReliability, packetOrdering);
}
else
GetLatentTransferManager()->AddSend(playerID, pBitStream->Version(), m_iLatentSendsBandwidth, m_pLatentSendsLuaMain, m_usLatentSendsResourceNetId);
{
SSendHandle handle = GetLatentTransferManager()->AddSend(playerID, pBitStream->Version(), m_iLatentSendsBandwidth, m_pLatentSendsLuaMain, m_usLatentSendsResourceNetId);
m_LastSentHandle = handle;
}
return true;
}

Expand Down
2 changes: 2 additions & 0 deletions Server/mods/deathmatch/logic/CGame.h
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,7 @@ class CGame
NetServerPacketPriority packetPriority, NetServerPacketReliability packetReliability,
ePacketOrdering packetOrdering = PACKET_ORDERING_DEFAULT);
void SendPacketBatchEnd();
uint GetLastSentHandle() const { return m_LastSentHandle; }

bool IsBulletSyncActive();
void SendSyncSettings(CPlayer* pPlayer = NULL);
Expand Down Expand Up @@ -671,6 +672,7 @@ class CGame
int m_iLatentSendsBandwidth;
CLuaMain* m_pLatentSendsLuaMain;
ushort m_usLatentSendsResourceNetId;
uint m_LastSentHandle;

CMtaVersion m_strPrevMinClientKickRequirement;
CMtaVersion m_strPrevMinClientConnectRequirement;
Expand Down
5 changes: 3 additions & 2 deletions Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,8 @@ bool CStaticFunctionDefinitions::TriggerClientEvent(const std::vector<CPlayer*>&
return true;
}

bool CStaticFunctionDefinitions::TriggerLatentClientEvent(const std::vector<CPlayer*>& sendList, const char* szName, CElement* pCallWithElement,
uint CStaticFunctionDefinitions::TriggerLatentClientEvent(const std::vector<CPlayer*>& sendList, const char* szName,
CElement* pCallWithElement,
CLuaArguments& Arguments, int iBandwidth, CLuaMain* pLuaMain, ushort usResourceNetId)
{
assert(szName);
Expand All @@ -246,7 +247,7 @@ bool CStaticFunctionDefinitions::TriggerLatentClientEvent(const std::vector<CPla
g_pGame->EnableLatentSends(false);

CPerfStatEventPacketUsage::GetSingleton()->UpdateEventUsageOut(szName, sendList.size());
return true;
return g_pGame->GetLastSentHandle();
}

bool CStaticFunctionDefinitions::CancelEvent(bool bCancel, const char* szReason)
Expand Down
4 changes: 2 additions & 2 deletions Server/mods/deathmatch/logic/CStaticFunctionDefinitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ class CStaticFunctionDefinitions
static bool RemoveEventHandler(CLuaMain* pLuaMain, const char* szName, CElement* pElement, const CLuaFunctionRef& iLuaFunction);
static bool TriggerEvent(const char* szName, CElement* pElement, const CLuaArguments& Arguments, bool& bWasCancelled);
static bool TriggerClientEvent(const std::vector<CPlayer*>& sendList, const char* szName, CElement* pCallWithElement, CLuaArguments& Arguments);
static bool TriggerLatentClientEvent(const std::vector<CPlayer*>& sendList, const char* szName, CElement* pCallWithElement, CLuaArguments& Arguments,
int iBandwidth, CLuaMain* pLuaMain, ushort usResourceNetId);
static uint TriggerLatentClientEvent(const std::vector<CPlayer*>& sendList, const char* szName, CElement* pCallWithElement,
CLuaArguments& Arguments, int iBandwidth, CLuaMain* pLuaMain, ushort usResourceNetId);

static bool CancelEvent(bool bCancel, const char* szReason);
static const char* GetCancelReason();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,15 +310,17 @@ int CLuaFunctionDefs::TriggerLatentClientEvent(lua_State* luaVM)
markerLatentEvent.SetAndStoreString(SString("Get args (%d,%s)", sendList.size(), *strName));

// Trigger it
if (CStaticFunctionDefinitions::TriggerLatentClientEvent(sendList, strName, pCallWithElement, Arguments, iBandwidth, pLuaMain, usResourceNetId))
uint handle = CStaticFunctionDefinitions::TriggerLatentClientEvent(sendList, strName, pCallWithElement, Arguments, iBandwidth, pLuaMain, usResourceNetId);
if (handle >= 0)
{
markerLatentEvent.Set("End");

// Add debug info if wanted
if (CPerfStatDebugInfo::GetSingleton()->IsActive("TriggerLatentClientEvent"))
CPerfStatDebugInfo::GetSingleton()->AddLine("TriggerLatentClientEvent", markerLatentEvent.GetString());

lua_pushboolean(luaVM, true);
// Return the handle id
lua_pushnumber(luaVM, handle);
return 1;
}
}
Expand Down