Raised This Month: $ Target: $400
 0% 

Country Welcome


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
[WbOF]LuZiFeR
AlliedModders Donor
Join Date: Jun 2004
Old 04-10-2005 , 09:56   Country Welcome
Reply With Quote #1

I have taken the country-kicker from EKS to make my first trials in scripting. (Hope, that this is no problem )

Now i have change some things to use the Kicker as a Welcome-Plugin. The players or admins on the server see, who connects from which country....

Code:
/* Country Welcome

About:
This plugin shows, from which country a player is connecting
It is possible to configurate countrys that are not shown, 
and who will became the message (Admins or all Players)

Modules required: geoip

Credits:
EKS for the plugin country_kicker, because the basic-code is from him :)

Setting up plugin:
sv_message
 1 Players 
 2 Admins

sv_country_name use commas to seperate country names
like:
sv_country_name "NOR,DEN,DEU"

Changelog
0.9 ( 02.04.2005 ) first try
*/ 

#include <amxmodx> 
#include <geoip>

#define MAX_COUNTRYS 15

new g_Mode
new g_CC[MAX_COUNTRYS+1][4]
new g_Countries
new CountyList[128]

public plugin_init()
{ 
	register_plugin("Country Welcome","0.9.0","LuZi")
	register_cvar("sv_country_name","DEU")
	register_cvar("sv_message","1")
}

public plugin_cfg()
{
	g_Mode = get_cvar_num("sv_message")
	
	new CvarInfo[MAX_COUNTRYS*3+MAX_COUNTRYS+2]
	get_cvar_string("sv_country_name",CvarInfo,MAX_COUNTRYS*3+MAX_COUNTRYS+2)
	
	g_Countries = ExplodeString( g_CC, MAX_COUNTRYS, 3, CvarInfo, ',' )
	
	for(new i=0;i<=g_Countries;i++)
		format(CountyList,127,"%s %s",CountyList,g_CC[i])
}
stock ExplodeString( p_szOutput[][], p_nMax, p_nSize, p_szInput[], p_szDelimiter ) 
{ 
    new nIdx = 0, l = strlen(p_szInput) 
    new nLen = (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput, p_szDelimiter )) 
    while( (nLen < l) && (++nIdx < p_nMax) ) 
        nLen += (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput[nLen], p_szDelimiter )) 
    return nIdx
} 
stock IsConInArray(Con[4])
{
	for(new i=0;i<=g_Countries;i++)
	{
		if(equal(Con,g_CC[i]))
			return 1
	}
	return 0
}
stock IsLocalIp(IP[32])
{
	new tIP[32]
	
	copy(tIP,3,IP)
	if(equal(tIP,"10.") || equal(tIP,"127"))
		return 1
	copy(tIP,7,IP)
	if(equal(tIP,"192.168"))
		return 1

	return 0
}
public client_connect(id)
{
	new userip[32]
	new CC[4]
	get_user_ip(id,userip,31,1)

	geoip_code3(userip,CC)
	if(strlen(userip) == 0)
	{
		get_user_ip(id,userip,31,1)		
		if(!IsLocalIp(userip))
			log_amx("%s made a error when passed though geoip",userip)
		return PLUGIN_HANDLED
	}

        if(g_Mode == 1 && !IsConInArray(CC))
        {
                new Name[32]
                get_user_name(id,Name,31)
                server_cmd("say Wir begruessen %s aus %s !",Name,CC)
        }                 
	
	else if(g_Mode == 2 && !IsConInArray(CC))
	{
		new Name[32]
		get_user_name(id,Name,31)
		server_cmd("amx_chat Es verbindet sich %s aus %s !",Name,CC)
	}
	return PLUGIN_HANDLED
}
Now i have 2 questions:

Are the if-statements working in this way ? (Maybe no one connects from another country then germany until now.. )

Is it possible to show the whole countryname (Germany instead of DEU) ? I don't know the function of geoip in details...

Sorry about my english And maybe it is a noob-question, but somewhere i must begin with this....

regards LuZi
[WbOF]LuZiFeR is offline
Send a message via AIM to [WbOF]LuZiFeR
 


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:00.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode