Show GeoIP

Post Reply
greenie
Full Member
Full Member
Posts: 1815
Joined: Sun Nov 21, 2021 4:55 pm
Jucator SA:MP ?: Nu
Nick:: greenie
Jucator CS ?: Nu

Show GeoIP

Post by greenie »

Hi,

here is my second plugin

Require geoip module loaded.
Permission: ADMIN_LEVEL_D

You get two client comands:
amx_whogeo
Is the same as amx_who but include the 2 and 45 length country code instead of the flaggs.
Nice to see where all the players came from.

amy_whostats
Output a HUD to ALL player with a statistic of players per country.
On the left side of the screen it looks like:
080% (08) Deutschland
020% (02) Austria
At the end of the plugin you see a out-commended function which kicks all connecting clients outside DE/AT/CH (=> Means only german speaking player can connect).
You can easly modify this function to match the countries you allaow.
Or convert it to only exclude some countries.
But don't forget to remove the comment lines to activate the function if you want them.
// indy_geoip.sma
// Written by Indiana

#include <amxmodx>
#include <amxmisc>
#include <geoip>

public plugin_init() {
register_plugin("Show GeoIP", "0.2", "Indiana")
register_clcmd("amx_whogeo","cmdWhoGeoIP",ADMIN_LEVEL_D,"- displays all Players with Country")
register_clcmd("amx_whostats","cmdWhoStats",ADMIN_LEVEL_D,"- displays Country Stats")
register_dictionary("adminslots.txt")
return PLUGIN_CONTINUE
}

public cmdWhoStats(id,level,cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new players[32], inum
new ip[17],ccode_a[46]

new StringList[32][46]
new IntList[32]
new ii, icount, inow

icount = 0

get_players(players,inum)
for (new a = 0; a < inum; ++a) {
get_user_ip(players[a],ip,16,1)
geoip_country ( ip, ccode_a , 45 )

inow = -1
for (ii = 0; ii < icount; ++ii) {
if(equal(StringList[ii],ccode_a)) {
inow = ii
}
}

if(inow==-1) {
copy(StringList[icount], 45, ccode_a)
IntList[icount]=1
icount++
} else {
IntList[inow]++
}
}

new message[512], part[128]
copy(message,511,"Countries on the Server:")

for (new b = 0; b < icount; ++b) {
format( part , 127 , "^n %03d%% (%02d) %s",(IntList*100/inum),IntList,StringList)
add(message,511,part)
}

set_hudmessage( 150, 150, 255, 0.02, -1.0 , 0, 1.0, 12.0, 0.1, 0.2,2)
show_hudmessage(0,message)

return PLUGIN_HANDLED
}

public cmdWhoGeoIP(id,level,cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new players[32], inum
new authid[32], name[32]
new ip[17],ccode_a[3],ccode_c[46]

get_players(players,inum)
for (new a = 0; a < inum; ++a) {
get_user_authid(players[a],authid,31)
get_user_name(players[a],name,31)

get_user_ip(players[a],ip,16,1)
geoip_code2 ( ip, ccode_a )
geoip_country ( ip, ccode_c, 45 )

console_print(id,"%2d %-16.16s %-20.20s %s %s", players[a],name,authid,ccode_a,ccode_c)
}
return PLUGIN_HANDLED
}

/*
public client_connect(id) {
new ip[17],ccode_a[3]
get_user_ip(id,ip,16,1)
geoip_code2 ( ip, ccode_a )
if(equali(ccode_a,"DE")) return PLUGIN_CONTINUE
if(equali(ccode_a,"AT")) return PLUGIN_CONTINUE
if(equali(ccode_a,"CH")) return PLUGIN_CONTINUE

new lReason[64]
format(lReason,63,"%L",id,"DROPPED_RES")
server_cmd("kick #%d ^"%s^"", get_user_userid(id), lReason )
return PLUGIN_HANDLED
}
*/


plugin
source
Post Reply

Return to “Statistical”