#EVENT #NET

* On a MP server, added IniPlayerUCID and TgtPlayerUCID to the EventData structure (filled in applicable Events)
This commit is contained in:
Applevangelist
2023-11-08 11:08:38 +01:00
parent fbf2c4c721
commit 9fafdea0bb
4 changed files with 71 additions and 19 deletions

View File

@@ -5,7 +5,7 @@
-- ===
--
-- ### Author: **Applevangelist**
-- # Last Update June 2023
-- # Last Update Oct 2023
--
-- ===
--
@@ -35,6 +35,7 @@ do
-- @field #number id
-- @field #number side
-- @field #number slot
-- @field #numner timestamp
--- Encapsules multiplayer environment scripting functions from [net](https://wiki.hoggitworld.com/view/DCS_singleton_net)
-- with some added FSM functions and options to block/unblock players in MP environments.
@@ -42,7 +43,7 @@ do
-- @field #NET
NET = {
ClassName = "NET",
Version = "0.1.2",
Version = "0.1.3",
BlockTime = 600,
BlockedPilots = {},
BlockedUCIDs = {},
@@ -205,7 +206,7 @@ function NET:_EventHandler(EventData)
-- Joining
if data.id == EVENTS.PlayerEnterUnit or data.id == EVENTS.PlayerEnterAircraft then
self:T(self.lid.."Pilot Joining: "..name.." | UCID: "..ucid)
self:T(self.lid.."Pilot Joining: "..name.." | UCID: "..ucid.." | Event ID: "..data.id)
-- Check for blockages
local blocked = self:IsAnyBlocked(ucid,name,PlayerID,PlayerSide,PlayerSlot)
@@ -213,15 +214,18 @@ function NET:_EventHandler(EventData)
-- block pilot
local outcome = net.force_player_slot(tonumber(PlayerID), 0, '' )
else
self.KnownPilots[name] = {
name = name,
ucid = ucid,
id = PlayerID,
side = PlayerSide,
slot = PlayerSlot,
}
local client = CLIENT:FindByPlayerName(name) or data.IniUnit
self:__PlayerJoined(1,client,name)
if not self.KnownPilots[name] or (self.KnownPilots[name] and TNow-self.KnownPilots[name].timestamp > 3) then
self:__PlayerJoined(1,client,name)
self.KnownPilots[name] = {
name = name,
ucid = ucid,
id = PlayerID,
side = PlayerSide,
slot = PlayerSlot,
timestamp = TNow,
}
end
return self
end
end
@@ -466,11 +470,9 @@ end
-- @return #number PlayerID or nil
function NET:GetPlayerIDByName(Name)
if not Name then return nil end
local playerList = self:GetPlayerList()
self:T({playerList})
local playerList = net.get_player_list()
for i=1,#playerList do
local playerName = net.get_name(i)
self:T({playerName})
if playerName == Name then
return playerList[i]
end