Skip to content
Open
Show file tree
Hide file tree
Changes from 3 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
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