Skip to content

Commit df390df

Browse files
Optimiziation + aHandleIp2cSetting() call order fix
Co-Authored-By: srslyyyy <51768772+srslyyyy@users.noreply.github.com>
1 parent a34e67a commit df390df

File tree

3 files changed

+87
-33
lines changed

3 files changed

+87
-33
lines changed

[admin]/admin/server/admin_server.lua

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,42 @@ function notifyPlayerLoggedIn(player)
3434
end
3535

3636
function aHandleIP2CUpdate()
37-
local updateAdminPanel = {}
38-
for id, player in ipairs(getElementsByType("player")) do
39-
updatePlayerCountry ( player )
40-
updateAdminPanel[#updateAdminPanel+1] = player
41-
end
42-
if #updateAdminPanel > 0 then
43-
for id, player in ipairs(getElementsByType("player")) do
44-
if ( hasObjectPermissionTo ( player, "general.adminpanel" ) ) then
45-
for _, playerToUpdate in ipairs(updateAdminPanel) do
46-
triggerClientEvent ( player, "aClientPlayerJoin", playerToUpdate, false, false, false, false, aPlayers[playerToUpdate]["country"] )
47-
end
48-
end
49-
end
50-
end
37+
local playersToUpdate = false
38+
local playersTable = getElementsByType("player") -- cache result, save function call
39+
40+
for playerID = 1, #playersTable do
41+
local playerElement = playersTable[playerID]
42+
43+
if not playersToUpdate then
44+
playersToUpdate = {} -- create table only when there are at least one player
45+
end
46+
47+
updatePlayerCountry(playerElement)
48+
playersToUpdate[#playersToUpdate + 1] = playerElement
49+
end
50+
51+
if not playersToUpdate then
52+
return -- if there are no players, stop further code execution
53+
end
54+
55+
for playerID = 1, #playersTable do
56+
local playerElement = playersTable[playerID]
57+
local hasAdminPermission = hasObjectPermissionTo(playerElement, "general.adminpanel")
58+
59+
if hasAdminPermission then
60+
61+
for playerToUpdateID = 1, #playersToUpdate do
62+
local playerToUpdate = playersToUpdate[playerToUpdateID]
63+
64+
triggerClientEvent(playerElement, "aClientPlayerJoin", playerToUpdate,
65+
false, false, false, false,
66+
aPlayers[playerToUpdate]["country"]
67+
)
68+
end
69+
end
70+
end
5171
end
5272

53-
-- Starts resource if setting is true
5473
function aHandleIp2cSetting()
5574
local enabled = get("*useip2c")
5675
if enabled and enabled == "true" then
@@ -59,6 +78,11 @@ function aHandleIp2cSetting()
5978
-- Persistent
6079
startResource(ip2c, true)
6180
end
81+
elseif (not enabled) or (enabled == "false") then
82+
local ip2c = getResourceFromName("ip2c")
83+
if ip2c and getResourceState(ip2c) == "running" then
84+
stopResource(ip2c)
85+
end
6286
end
6387
end
6488

@@ -75,7 +99,6 @@ addEventHandler ( "onResourceStart", root, function ( resource )
7599
end
76100
return
77101
end
78-
aHandleIp2cSetting()
79102
_settings = xmlLoadFile ( "conf\\settings.xml" )
80103
if ( not _settings ) then
81104
_settings = xmlCreateFile ( "conf\\settings.xml", "main" )
@@ -89,6 +112,7 @@ addEventHandler ( "onResourceStart", root, function ( resource )
89112
notifyPlayerLoggedIn(player)
90113
end
91114
end
115+
aHandleIp2cSetting()
92116
local node = xmlLoadFile ( "conf\\interiors.xml" )
93117
if ( node ) then
94118
local interiors = 0

[admin]/admin2/meta.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,5 +139,11 @@
139139
friendlyname="Admin chat command name"
140140
desc="The command name for admin chat."
141141
/>
142+
<setting name="*useip2c" value="true"
143+
friendlyname="useip2c"
144+
group="_Advanced"
145+
accept="true,false"
146+
desc="Displays country flags next to players, set to false to save about 3MB of server RAM."
147+
/>
142148
</settings>
143149
</meta>

[admin]/admin2/server/admin_server.lua

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,43 @@ aReports = {}
1717
aWeathers = {}
1818

1919
function aHandleIP2CUpdate()
20-
local updateAdminPanel = {}
21-
for id, player in ipairs(getElementsByType("player")) do
22-
updatePlayerCountry(player)
23-
updateAdminPanel[#updateAdminPanel+1] = player
24-
end
25-
if #updateAdminPanel > 0 then
26-
for id, player in ipairs(getElementsByType("player")) do
27-
if ( hasObjectPermissionTo ( player, "general.adminpanel" ) ) then
28-
for _, playerToUpdate in ipairs(updateAdminPanel) do
29-
triggerClientEvent ( player, "aClientPlayerJoin", playerToUpdate, false, false, false, false, aPlayers[playerToUpdate].country, aPlayers[playerToUpdate].countryname )
30-
end
31-
end
32-
end
33-
end
20+
local playersToUpdate = false
21+
local playersTable = getElementsByType("player") -- cache result, save function call
22+
23+
for playerID = 1, #playersTable do
24+
local playerElement = playersTable[playerID]
25+
26+
if not playersToUpdate then
27+
playersToUpdate = {} -- create table only when there are at least one player
28+
end
29+
30+
updatePlayerCountry(playerElement)
31+
playersToUpdate[#playersToUpdate + 1] = playerElement
32+
end
33+
34+
if not playersToUpdate then
35+
return -- if there are no players, stop further code execution
36+
end
37+
38+
for playerID = 1, #playersTable do
39+
local playerElement = playersTable[playerID]
40+
local hasAdminPermission = hasObjectPermissionTo(playerElement, "general.adminpanel")
41+
42+
if hasAdminPermission then
43+
44+
for playerToUpdateID = 1, #playersToUpdate do
45+
local playerToUpdate = playersToUpdate[playerToUpdateID]
46+
47+
triggerClientEvent(playerElement, "aClientPlayerJoin", playerToUpdate,
48+
false, false, false, false,
49+
aPlayers[playerToUpdate].country,
50+
aPlayers[playerToUpdate].countryname
51+
)
52+
end
53+
end
54+
end
3455
end
3556

36-
-- Starts resource if setting is true
3757
function aHandleIp2cSetting()
3858
local enabled = get("*useip2c")
3959
if enabled and enabled == "true" then
@@ -42,6 +62,11 @@ function aHandleIp2cSetting()
4262
-- Persistent
4363
startResource(ip2c, true)
4464
end
65+
elseif (not enabled) or (enabled == "false") then
66+
local ip2c = getResourceFromName("ip2c")
67+
if ip2c and getResourceState(ip2c) == "running" then
68+
stopResource(ip2c)
69+
end
4570
end
4671
end
4772

@@ -62,14 +87,13 @@ addEventHandler(
6287
return
6388
end
6489

65-
aHandleIp2cSetting()
6690
aSetupACL()
6791
aSetupCommands()
6892
aSetupStorage()
69-
7093
for id, player in ipairs(getElementsByType("player")) do
7194
aPlayerInitialize(player)
7295
end
96+
aHandleIp2cSetting()
7397
end
7498
)
7599

0 commit comments

Comments
 (0)