mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-09-04 16:23:21 +00:00
Add files
This commit is contained in:
+128
@@ -0,0 +1,128 @@
|
||||
local Instances = {}
|
||||
|
||||
function GetInstancedPlayers()
|
||||
|
||||
local players = {}
|
||||
|
||||
for k,v in pairs(Instances) do
|
||||
for i=1, #v.players, 1 do
|
||||
table.insert(players, v.players[i])
|
||||
end
|
||||
end
|
||||
|
||||
return players
|
||||
|
||||
end
|
||||
|
||||
function CreateInstance(player)
|
||||
|
||||
Instances[player] = {
|
||||
host = player,
|
||||
players = {player}
|
||||
}
|
||||
|
||||
TriggerClientEvent('instance:onData', player, Instances[player])
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
|
||||
end
|
||||
|
||||
function CloseInstance(instance)
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
TriggerClientEvent('instance:onData', Instances[instance].players[i], {})
|
||||
end
|
||||
|
||||
Instances[instance] = nil
|
||||
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
|
||||
end
|
||||
|
||||
function AddPlayerToInstance(instance, player)
|
||||
|
||||
local found = false
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] == player then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not found then
|
||||
table.insert(Instances[instance].players, player)
|
||||
end
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
TriggerClientEvent('instance:onData', Instances[instance].players[i], Instances[instance])
|
||||
end
|
||||
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
|
||||
end
|
||||
|
||||
function RemovePlayerFromInstance(instance, player)
|
||||
|
||||
if Instances[instance].host == player then
|
||||
|
||||
CloseInstance(instance)
|
||||
|
||||
else
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
if Instances[instance].players[i] == player then
|
||||
Instances[instance].players[i] = nil
|
||||
end
|
||||
end
|
||||
|
||||
TriggerClientEvent('instance:onData', player, {})
|
||||
|
||||
for i=1, #Instances[instance].players, 1 do
|
||||
TriggerClientEvent('instance:onData', Instances[instance].players[i], Instances[instance])
|
||||
end
|
||||
|
||||
TriggerClientEvent('instance:onInstancedPlayersData', -1, GetInstancedPlayers())
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function InvitePlayerToInstance(instance, player, pos)
|
||||
TriggerClientEvent('instance:onInvite', player, instance, pos)
|
||||
end
|
||||
|
||||
RegisterServerEvent('instance:create')
|
||||
AddEventHandler('instance:create', function()
|
||||
CreateInstance(source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('instance:enter')
|
||||
AddEventHandler('instance:enter', function(instance)
|
||||
AddPlayerToInstance(instance, source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('instance:leave')
|
||||
AddEventHandler('instance:leave', function(instance)
|
||||
RemovePlayerFromInstance(instance, source)
|
||||
end)
|
||||
|
||||
RegisterServerEvent('instance:invite')
|
||||
AddEventHandler('instance:invite', function(instance, player, pos)
|
||||
InvitePlayerToInstance(instance, player, pos)
|
||||
end)
|
||||
|
||||
TriggerEvent('es:addCommand', 'instance_create', function(source, args, user)
|
||||
CreateInstance(source)
|
||||
end)
|
||||
|
||||
TriggerEvent('es:addCommand', 'instance_invite', function(source, args, user)
|
||||
InvitePlayerToInstance(tonumber(args[2]), tonumber(args[3]), {
|
||||
x = tonumber(args[4]),
|
||||
y = tonumber(args[5]),
|
||||
z = tonumber(args[6]),
|
||||
})
|
||||
end)
|
||||
|
||||
TriggerEvent('es:addCommand', 'instance_enter', function(source, args, user)
|
||||
AddPlayerToInstance(source, tonumber(args[2]))
|
||||
end)
|
||||
Reference in New Issue
Block a user