Skip to content
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9c03b1e
Move admin ip2c code to new resource + Update scoreboard countries
Fernando-A-Rocha Jan 16, 2023
b3fecd9
IP2C fixes (see description)
Fernando-A-Rocha Jan 16, 2023
674bc1c
Merge branch 'master' into ip2c-standalone-resource
Fernando-A-Rocha Jan 16, 2023
99a632d
ammend b3fecd9547455acd27a80a3737f8f4f1780e3441
Fernando-A-Rocha Jan 16, 2023
8c75909
Fix admin2 and admin2 client panel country flags + admin2 detects ip2…
Fernando-A-Rocha Jan 16, 2023
2fec5ef
Add latest IpToCountryCompact.csv
Fernando-A-Rocha Jan 16, 2023
d55ea56
Ignore further updates to the IpToCountryCompact.csv (.gitignore)
Fernando-A-Rocha Jan 16, 2023
9260ab0
Readd "useip2c" setting to automatically start ip2c resource in admin…
Fernando-A-Rocha Jan 16, 2023
ae08755
Add getCountryName (shared) + GUI improvement in admin2/admin
Fernando-A-Rocha Jan 16, 2023
058d7e0
Add /testcheckflags to find missing flag images and invalid flag images
Fernando-A-Rocha Jan 16, 2023
e81c04d
Commented unused country flags in meta.xml + Add test script to check…
Fernando-A-Rocha Jan 16, 2023
1ee9cc2
Del /testcheckcsv (temp cmd)
Fernando-A-Rocha Jan 16, 2023
a34e67a
Update us.png
Fernando-A-Rocha Jan 16, 2023
df390df
Optimiziation + aHandleIp2cSetting() call order fix
Fernando-A-Rocha Jan 17, 2023
63d3eb1
Update ad.png
Fernando-A-Rocha Jan 17, 2023
28991a4
Add 60 missing country flags
Fernando-A-Rocha Jan 17, 2023
0ca562c
ammend 28991a4dd3be7c20a9de8f546e07db5055b8862a
Fernando-A-Rocha Jan 17, 2023
6fb29cb
ammend 28991a4dd3be7c20a9de8f546e07db5055b8862a
Fernando-A-Rocha Jan 17, 2023
639c159
Update setting desc
Fernando-A-Rocha Jan 21, 2023
aeb79eb
ammend cffa943f4e92eb0e300d140d9df4b3323f3c091f
Fernando-A-Rocha Jan 21, 2023
999c1ca
Revert "ammend cffa943f4e92eb0e300d140d9df4b3323f3c091f"
Fernando-A-Rocha Jan 21, 2023
bd1e9c5
Add placeholder getPlayerCountry in admin for BC
Fernando-A-Rocha Jan 23, 2023
3fc924d
admin getPlayerCountry calls ip2c if it actually exists
Fernando-A-Rocha Jan 23, 2023
95e24bf
Merge branch 'master' into ip2c-standalone-resource
Fernando-A-Rocha Jan 24, 2023
438a94e
Update admin/meta.xml useip2c setting desc
Fernando-A-Rocha Jan 25, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

# admin
\[admin\]/admin/conf/reports.xml
\[admin\]/admin/conf/IpToCountryCompact.csv
\[admin\]/ip2c/conf/IpToCountryCompact.csv

# admin2
\[admin\]/admin2/admin.db
Expand Down
16 changes: 4 additions & 12 deletions [admin]/admin/client/gui/admin_main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1427,19 +1427,11 @@ end

function loadFlagImage( guiStaticImage, countryCode )
if countryCode then
local flagFilename = "client\\images\\flags\\"..tostring ( countryCode )..".png"
if getVersion().sortable and getVersion().sortable > "1.1.0" then
-- 1.1
if fileExists( flagFilename ) then
if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then
return
end
local flagFilename = ":ip2c/client/images/flags/"..tostring ( countryCode )..".png"
if fileExists( flagFilename ) then
if guiStaticImageLoadImage ( guiStaticImage, flagFilename ) then
return
end
else
-- 1.0
guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" )
guiStaticImageLoadImage ( guiStaticImage, flagFilename )
return
end
end
guiStaticImageLoadImage ( guiStaticImage, "client\\images\\empty.png" )
Expand Down
205 changes: 3 additions & 202 deletions [admin]/admin/meta.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
<script src="server/admin_server.lua" />
<script src="server/admin_sync.lua" />
<script src="server/admin_commands.lua" />
<script src="server/admin_ip2c.lua" />
<script src="server/admin_servermaps.lua" />
<script src="server/admin_ACL.lua" />
<script src="server/admin_settings.lua" />
Expand Down Expand Up @@ -46,9 +45,6 @@
<script src="client/gui/admin_screenshot.lua" type="client" />
<script src="client/colorpicker/colorpicker.lua" type="client" />

<!--Exported Functions-->
<export function="getPlayerCountry"/>

<!--Required XML configs kept in /conf/ folder-->
<config src="conf/interiors.xml" type="client" />
<config src="conf/weathers.xml" type="client" />
Expand Down Expand Up @@ -76,201 +72,6 @@
<file src="client/colorpicker/blank.png" />
<file src="client/colorpicker/h.png" />

<!--Country flags for IP2C-->
<file src="client/images/flags/ac.png" />
<file src="client/images/flags/ad.png" />
<file src="client/images/flags/ae.png" />
<file src="client/images/flags/af.png" />
<file src="client/images/flags/ag.png" />
<file src="client/images/flags/ai.png" />
<file src="client/images/flags/al.png" />
<file src="client/images/flags/am.png" />
<file src="client/images/flags/an.png" />
<file src="client/images/flags/ao.png" />
<file src="client/images/flags/aq.png" />
<file src="client/images/flags/ar.png" />
<file src="client/images/flags/as.png" />
<file src="client/images/flags/at.png" />
<file src="client/images/flags/au.png" />
<file src="client/images/flags/aw.png" />
<file src="client/images/flags/ax.png" />
<file src="client/images/flags/az.png" />
<file src="client/images/flags/ba.png" />
<file src="client/images/flags/bb.png" />
<file src="client/images/flags/bd.png" />
<file src="client/images/flags/be.png" />
<file src="client/images/flags/bf.png" />
<file src="client/images/flags/bg.png" />
<file src="client/images/flags/bh.png" />
<file src="client/images/flags/bi.png" />
<file src="client/images/flags/bj.png" />
<file src="client/images/flags/bm.png" />
<file src="client/images/flags/bn.png" />
<file src="client/images/flags/bo.png" />
<file src="client/images/flags/br.png" />
<file src="client/images/flags/bs.png" />
<file src="client/images/flags/bt.png" />
<file src="client/images/flags/bv.png" />
<file src="client/images/flags/bw.png" />
<file src="client/images/flags/by.png" />
<file src="client/images/flags/bz.png" />
<file src="client/images/flags/ca.png" />
<file src="client/images/flags/cc.png" />
<file src="client/images/flags/cd.png" />
<file src="client/images/flags/cf.png" />
<file src="client/images/flags/cg.png" />
<file src="client/images/flags/ch.png" />
<file src="client/images/flags/ci.png" />
<file src="client/images/flags/ck.png" />
<file src="client/images/flags/cl.png" />
<file src="client/images/flags/cm.png" />
<file src="client/images/flags/cn.png" />
<file src="client/images/flags/co.png" />
<file src="client/images/flags/cr.png" />
<file src="client/images/flags/cs.png" />
<file src="client/images/flags/cu.png" />
<file src="client/images/flags/cv.png" />
<file src="client/images/flags/cx.png" />
<file src="client/images/flags/cy.png" />
<file src="client/images/flags/cz.png" />
<file src="client/images/flags/de.png" />
<file src="client/images/flags/dj.png" />
<file src="client/images/flags/dk.png" />
<file src="client/images/flags/dm.png" />
<file src="client/images/flags/do.png" />
<file src="client/images/flags/dz.png" />
<file src="client/images/flags/ec.png" />
<file src="client/images/flags/ee.png" />
<file src="client/images/flags/eg.png" />
<file src="client/images/flags/eh.png" />
<file src="client/images/flags/er.png" />
<file src="client/images/flags/es.png" />
<file src="client/images/flags/et.png" />
<file src="client/images/flags/eu.png" />
<file src="client/images/flags/fi.png" />
<file src="client/images/flags/fo.png" />
<file src="client/images/flags/fr.png" />
<file src="client/images/flags/fj.png" />
<file src="client/images/flags/ga.png" />
<file src="client/images/flags/gb.png" />
<file src="client/images/flags/gd.png" />
<file src="client/images/flags/gl.png" />
<file src="client/images/flags/gm.png" />
<file src="client/images/flags/gw.png" />
<file src="client/images/flags/gp.png" />
<file src="client/images/flags/gt.png" />
<file src="client/images/flags/gy.png" />
<file src="client/images/flags/hu.png" />
<file src="client/images/flags/id.png" />
<file src="client/images/flags/ie.png" />
<file src="client/images/flags/il.png" />
<file src="client/images/flags/in.png" />
<file src="client/images/flags/iq.png" />
<file src="client/images/flags/is.png" />
<file src="client/images/flags/it.png" />
<file src="client/images/flags/ja.png" />
<file src="client/images/flags/jm.png" />
<file src="client/images/flags/jp.png" />
<file src="client/images/flags/kw.png" />
<file src="client/images/flags/kp.png" />
<file src="client/images/flags/lt.png" />
<file src="client/images/flags/lu.png" />
<file src="client/images/flags/lv.png" />
<file src="client/images/flags/lk.png" />
<file src="client/images/flags/ly.png" />
<file src="client/images/flags/ma.png" />
<file src="client/images/flags/mc.png" />
<file src="client/images/flags/mg.png" />
<file src="client/images/flags/mh.png" />
<file src="client/images/flags/mt.png" />
<file src="client/images/flags/mu.png" />
<file src="client/images/flags/ng.png" />
<file src="client/images/flags/nl.png" />
<file src="client/images/flags/no.png" />
<file src="client/images/flags/nr.png" />
<file src="client/images/flags/ni.png" />
<file src="client/images/flags/pa.png" />
<file src="client/images/flags/pe.png" />
<file src="client/images/flags/ph.png" />
<file src="client/images/flags/pk.png" />
<file src="client/images/flags/pl.png" />
<file src="client/images/flags/pr.png" />
<file src="client/images/flags/ps.png" />
<file src="client/images/flags/pt.png" />
<file src="client/images/flags/pm.png" />
<file src="client/images/flags/py.png" />
<file src="client/images/flags/qa.png" />
<file src="client/images/flags/re.png" />
<file src="client/images/flags/ro.png" />
<file src="client/images/flags/ru.png" />
<file src="client/images/flags/rw.png" />
<file src="client/images/flags/sd.png" />
<file src="client/images/flags/se.png" />
<file src="client/images/flags/sj.png" />
<file src="client/images/flags/sl.png" />
<file src="client/images/flags/so.png" />
<file src="client/images/flags/sy.png" />
<file src="client/images/flags/td.png" />
<file src="client/images/flags/to.png" />
<file src="client/images/flags/tn.png" />
<file src="client/images/flags/tv.png" />
<file src="client/images/flags/ua.png" />
<file src="client/images/flags/uk.png" />
<file src="client/images/flags/um.png" />
<file src="client/images/flags/us.png" />
<file src="client/images/flags/uy.png" />
<file src="client/images/flags/uz.png" />
<file src="client/images/flags/vn.png" />
<file src="client/images/flags/wf.png" />
<file src="client/images/flags/ws.png" />
<file src="client/images/flags/ye.png" />
<file src="client/images/flags/yt.png" />
<file src="client/images/flags/yu.png" />
<file src="client/images/flags/za.png" />
<file src="client/images/flags/ge.png" />
<file src="client/images/flags/gr.png" />
<file src="client/images/flags/hk.png" />
<file src="client/images/flags/hn.png" />
<file src="client/images/flags/ht.png" />
<file src="client/images/flags/ir.png" />
<file src="client/images/flags/jo.png" />
<file src="client/images/flags/je.png" />
<file src="client/images/flags/kg.png" />
<file src="client/images/flags/kr.png" />
<file src="client/images/flags/kn.png" />
<file src="client/images/flags/kz.png" />
<file src="client/images/flags/lb.png" />
<file src="client/images/flags/md.png" />
<file src="client/images/flags/mv.png" />
<file src="client/images/flags/mz.png" />
<file src="client/images/flags/me.png" />
<file src="client/images/flags/mk.png" />
<file src="client/images/flags/my.png" />
<file src="client/images/flags/mm.png" />
<file src="client/images/flags/mn.png" />
<file src="client/images/flags/mx.png" />
<file src="client/images/flags/np.png" />
<file src="client/images/flags/nc.png" />
<file src="client/images/flags/nz.png" />
<file src="client/images/flags/om.png" />
<file src="client/images/flags/pg.png" />
<file src="client/images/flags/rs.png" />
<file src="client/images/flags/sa.png" />
<file src="client/images/flags/sc.png" />
<file src="client/images/flags/sg.png" />
<file src="client/images/flags/si.png" />
<file src="client/images/flags/sk.png" />
<file src="client/images/flags/sv.png" />
<file src="client/images/flags/th.png" />
<file src="client/images/flags/tk.png" />
<file src="client/images/flags/tr.png" />
<file src="client/images/flags/tw.png" />
<file src="client/images/flags/tt.png" />
<file src="client/images/flags/tj.png" />
<file src="client/images/flags/ve.png" />
<file src="client/images/flags/hr.png" />
<file src="client/images/flags/xk.png" />

<!--HTTP Server Stuff-->
<!--Not finished yet
<export function="httpLoad" http="true" />
Expand Down Expand Up @@ -342,12 +143,12 @@
accept="true,false"
desc="Ban IP's that attempt to send fake admin packets."
/>

<setting name="*useip2c" value="true"
<setting name="*useip2c" value="true"
friendlyname="useip2c"
group="_Advanced"
accept="true,false"
desc="Displays country flags next to players, set to false to save about 3MB of server RAM."
desc="When enabled, ip2c resource runs and fetches player countries by IP."
/>

<setting name="*nickChangeDelay" value="5000"
Expand Down
74 changes: 71 additions & 3 deletions [admin]/admin/server/admin_server.lua
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,70 @@ function notifyPlayerLoggedIn(player)
end
end

function aHandleIP2CUpdate()
local playersToUpdate = false
local playersTable = getElementsByType("player") -- cache result, save function call

for playerID = 1, #playersTable do
local playerElement = playersTable[playerID]

if not playersToUpdate then
playersToUpdate = {} -- create table only when there are at least one player
end

updatePlayerCountry(playerElement)
playersToUpdate[#playersToUpdate + 1] = playerElement
end

if not playersToUpdate then
return -- if there are no players, stop further code execution
end

for playerID = 1, #playersTable do
local playerElement = playersTable[playerID]
local hasAdminPermission = hasObjectPermissionTo(playerElement, "general.adminpanel")

if hasAdminPermission then

for playerToUpdateID = 1, #playersToUpdate do
local playerToUpdate = playersToUpdate[playerToUpdateID]

triggerClientEvent(playerElement, "aClientPlayerJoin", playerToUpdate,
false, false, false, false,
aPlayers[playerToUpdate]["country"]
)
end
end
end
end

function aHandleIp2cSetting()
local enabled = get("*useip2c")
if enabled and enabled == "true" then
local ip2c = getResourceFromName("ip2c")
if ip2c and getResourceState(ip2c) == "loaded" then
-- Persistent
startResource(ip2c, true)
end
elseif (not enabled) or (enabled == "false") then
local ip2c = getResourceFromName("ip2c")
if ip2c and getResourceState(ip2c) == "running" then
stopResource(ip2c)
end
end
end

addEventHandler ( "onResourceStart", root, function ( resource )
if ( resource ~= getThisResource() ) then
local resourceName = getResourceName(resource)
for id, player in ipairs(getElementsByType("player")) do
if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
triggerClientEvent ( player, "aClientResourceStart", root, getResourceName ( resource ) )
triggerClientEvent ( player, "aClientResourceStart", root, resourceName )
end
end
if resourceName == "ip2c" then
aHandleIP2CUpdate()
end
return
end
_settings = xmlLoadFile ( "conf\\settings.xml" )
Expand All @@ -55,6 +112,7 @@ addEventHandler ( "onResourceStart", root, function ( resource )
notifyPlayerLoggedIn(player)
end
end
aHandleIp2cSetting()
local node = xmlLoadFile ( "conf\\interiors.xml" )
if ( node ) then
local interiors = 0
Expand Down Expand Up @@ -202,11 +260,15 @@ addEventHandler ( "onResourceStop", root, function ( resource )
if not stillExists then return end

if ( resource ~= getThisResource() ) then
local resourceName = getResourceName(resource)
for id, player in ipairs(getElementsByType("player")) do
if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
triggerClientEvent ( player, "aClientResourceStop", root, getResourceName ( resource ) )
triggerClientEvent ( player, "aClientResourceStop", root, resourceName )
end
end
if resourceName == "ip2c" then
aHandleIP2CUpdate()
end
else
local node = xmlLoadFile ( "conf\\reports.xml" )
if ( node ) then
Expand Down Expand Up @@ -386,12 +448,18 @@ addEventHandler ( "onPlayerJoin", root, function ()
setPedGravity ( source, getGravity() )
end )

function updatePlayerCountry ( player )
local isIP2CResourceRunning = getResourceFromName( "ip2c" )
isIP2CResourceRunning = isIP2CResourceRunning and getResourceState( isIP2CResourceRunning ) == "running"
aPlayers[player]["country"] = isIP2CResourceRunning and exports.ip2c:getPlayerCountry ( player ) or false
end

function aPlayerInitialize ( player )
bindKey ( player, "p", "down", "admin" )
--callRemote ( "http://community.mtasa.com/mta/verify.php", aPlayerSerialCheck, player, getPlayerSerial ( player ) )
aPlayers[player] = {}
aPlayers[player]["country"] = getPlayerCountry ( player )
aPlayers[player]["money"] = getPlayerMoney ( player )
updatePlayerCountry ( player )
chatHistory[player] = {}
end

Expand Down
Binary file removed [admin]/admin2/client/images/flags/ad.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/ao.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/ar.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/au.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/aw.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/bd.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/be.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/bg.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/bi.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/br.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/by.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/cl.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/cn.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/co.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/de.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/ec.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/ee.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/es.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/fr.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/gb.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/hu.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/id.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/il.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/in.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/it.png
Binary file not shown.
Binary file removed [admin]/admin2/client/images/flags/ly.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/mg.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/nl.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/pe.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/ph.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/pk.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/pl.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/pt.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/ru.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/tn.png
Diff not rendered.
Binary file removed [admin]/admin2/client/images/flags/uk.png
Diff not rendered.
Loading