Cum facem un JoinIP

Tutoriale scripting, cod si portiuni de cod.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
aNNakin
Fost administrator
Fost administrator
Posts: 10464
Joined: 17 Dec 2007, 21:42
Detinator Steam: Da
CS Status: a iubi - necesar si suficient
Detinator server CS: romania.cs16.ro
SteamID: anakin_cstrike16
Reputatie: Membru Club eXtreamCS
Fost Contribuitor
Fost Scripter eXtreamCS
Fost Lider Echipa eXtreamCS
Fost Administrator
Location: di.fm
Has thanked: 230 times
Been thanked: 787 times
Contact:

01 Nov 2008, 13:33

Am facut acest tutorial pentru ca multi utilizatori doresc un joinip personalizat si nu stiu, sau mai bine zis nu vor sa incerce sa modifice.
Sper sa fie clar dupa ce cititi ce am scris mai jos.

Deci incepem.

1. Pentru inceput avem asa:

Code: Select all

#include <amxmodx>

#define COUNTRY

#if defined COUNTRY
#include <geoip>
#endif

#define PLUGIN "JoinIP"
#define VERSION "1.0"
#define AUTHOR "anakin_cstrike"

new g_msgsaytext;
new toggle_plugin, toggle_mode;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	toggle_plugin = register_cvar("joinip", "1");
	toggle_mode = register_cvar("joinip_countrycode", "1");
	g_msgsaytext = get_user_msgid("SayText");
}
- pentru cei care voi sa afiseze si tara jucatorului respectiv:

Code: Select all

#define COUNTRY

#if defined COUNTRY
#include <geoip>
#endif
- daca vrei sa nu fie afisata modificati:

Code: Select all

//#define COUNTRY
- avem 2 cvar-uri: unul pentru dezactivare si altul pentru modul in care va fi afisata tara:
  • 1 - RO
  • 2 - ROU
  • 3 - ROUMANIA
2. Cele 3 forward-uri pentru afisare mesaje:

Code: Select all

client_connect -- cand jucatorul se conecteaza pe server
client_disconnect -- cand jucatorul a iesit de pe server
client_putinserver -- cand jucatorul s-a conectat pe server
3. Incepem prin a verifica daca avem cvar-ul pornit:

Code: Select all

public client_disconnect(id)
{
	if(get_pcvar_num(toggle_plugin) != 1)
		return PLUGIN_CONTINUE;
- verifica daca avem cvar-ul setat pe unu

4. Acum avem nevoie de cateva date in care stocam informatiile despre jucator:

Code: Select all

static name[ 32 ], auth[ 32 ], ip[ 32];
	static code2[ 3 ], code3[ 4 ], country[ 46 ];
- sunt variabile de tip static care cand sunt folosite unde trebuie ofera o 'viteza' mai mare in functionarea pluginului
- acele cifre dintre [] stabilesc variabilei respectiva lungimea de caractere: numele are maxim 31 de caractere. Caractere incep de la 0 pana la 32 - 1

5. Aflarea datelor:

Code: Select all

get_user_name(id, name, sizeof name - 1);
	get_user_authid(id, auth, sizeof auth - 1);
	get_user_ip(id, ip, sizeof ip - 1);
6. Verificam daca avem optiuea pentru afisarea tarii activata:

Code: Select all

#if defined COUNTRY
	switch(get_pcvar_num(toggle_mode))
	{
		case 1: geoip_code2(ip, code2);
		case 2: geoip_code3(ip, code3);
		case 3: geoip_country(ip, country, sizeof country - 1);
		default: geoip_code2(ip, code2);
	}
- schimbam modul de afisare a tarii in functie de cvar: daca e setat 1 va afisa doar primele 2 litere din numele tarii (RO), daca e setat 2 va afisa primele 3 (ROU) iar dac e setat 3 va afisa numele complet (ROUMANIA), daca e setat la alt numar, default, va afisa primele 2 litere.

7. Creem o fuctie pentru a ne fi mai usor si afisam si tara:

Code: Select all

print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] [^x04 %s ^x01] a iesit", name, ip, country);
8. Altfel daca nu avem optiunea pentru tara:

Code: Select all

	#else
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] a iesit", name, ip);
	
	#endif
9. Inchidem publicul prin:

Code: Select all

	return PLUGIN_CONTINUE;
}
10. Functia 'print' care ne ajuta:

Code: Select all

print(const message[],{Float,Sql,Result,_}:...)
{
	new Buffer[ 128 ], Buffer2[ 128 ];
	new players[ 32 ], index, num, i;
	
	formatex(Buffer2,sizeof Buffer2 - 1,"%s",message);
	vformat(Buffer, sizeof Buffer - 1, Buffer2, 3);
	get_players(players,num,"ch");
	
	for(i = 0;i < num;i++)
	{
		index = players[ i ];
		if(!is_user_connected(index)) continue;
		
		message_begin(MSG_ONE, g_msgsaytext, _, index);
		write_byte(index);
		write_string(Buffer);
		message_end();
	}
}
* h -- evita hltv
* c -- evita botii
- daca vrei si fie afisa si la hltv modificati:

Code: Select all

get_players(players,num,"c");
Pluginul complet:

Code: Select all

#include <amxmodx>

#define COUNTRY

#if defined COUNTRY
#include <geoip>
#endif

#define PLUGIN "JoinIP"
#define VERSION "1.0"
#define AUTHOR "anakin_cstrike"

new g_msgsaytext;
new toggle_plugin, toggle_mode;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	toggle_plugin = register_cvar("joinip", "1");
	toggle_plugin = register_cvar("joinip_countrycode", "1");
	g_msgsaytext = get_user_msgid("SayText");
}

public client_connect(id)
{
	if(get_pcvar_num(toggle_plugin) != 1)
		return PLUGIN_CONTINUE;
		
	static name[ 32 ], auth[ 32 ], ip[ 32];
	static code2[ 3 ], code3[ 4 ], country[ 46 ];
	
	get_user_name(id, name, sizeof name - 1);
	get_user_authid(id, auth, sizeof auth - 1);
	get_user_ip(id, ip, sizeof ip - 1);
	
	#if defined COUNTRY
	switch(get_pcvar_num(toggle_mode))
	{
		case 1: geoip_code2(ip, code2);
		case 2: geoip_code3(ip, code3);
		case 3: geoip_country(ip, country, sizeof country - 1);
		default: geoip_code2(ip, code2);
	}
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] [^x04 %s ^x01] se conecteaza", name, ip, country);
	
	#else
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] se conecteaza", name, ip);
	
	#endif
	return PLUGIN_CONTINUE;
}

public client_disconnect(id)
{
	if(get_pcvar_num(toggle_plugin) != 1)
		return PLUGIN_CONTINUE;
		
	static name[ 32 ], auth[ 32 ], ip[ 32];
	static code2[ 3 ], code3[ 4 ], country[ 46 ];
	
	get_user_name(id, name, sizeof name - 1);
	get_user_authid(id, auth, sizeof auth - 1);
	get_user_ip(id, ip, sizeof ip - 1);
	
	#if defined COUNTRY
	switch(get_pcvar_num(toggle_mode))
	{
		case 1: geoip_code2(ip, code2);
		case 2: geoip_code3(ip, code3);
		case 3: geoip_country(ip, country, sizeof country - 1);
		default: geoip_code2(ip, code2);
	}
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] [^x04 %s ^x01] a iesit", name, ip, country);
	
	#else
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] a iesit", name, ip);
	
	#endif
	return PLUGIN_CONTINUE;
}

public client_putinserver(id)
{
	if(get_pcvar_num(toggle_plugin) != 1)
		return PLUGIN_CONTINUE;
		
	static name[ 32 ], auth[ 32 ], ip[ 32];
	static code2[ 3 ], code3[ 4 ], country[ 46 ];
	
	get_user_name(id, name, sizeof name - 1);
	get_user_authid(id, auth, sizeof auth - 1);
	get_user_ip(id, ip, sizeof ip - 1);
	
	#if defined COUNTRY
	switch(get_pcvar_num(toggle_mode))
	{
		case 1: geoip_code2(ip, code2);
		case 2: geoip_code3(ip, code3);
		case 3: geoip_country(ip, country, sizeof country - 1);
		default: geoip_code2(ip, code2);
	}
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] [^x04 %s ^x01] a intrat", name, ip, country);
	
	#else
	
	print("^x01[^x04 %s ^x01 ] [^x04 %s ^x01 ] a intrat", name, ip);
	
	#endif
	return PLUGIN_CONTINUE;
}

print(const message[],{Float,Sql,Result,_}:...)
{
	new Buffer[ 128 ], Buffer2[ 128 ];
	new players[ 32 ], index, num, i;
	
	formatex(Buffer2,sizeof Buffer2 - 1,"%s",message);
	vformat(Buffer, sizeof Buffer - 1, Buffer2, 3);
	get_players(players,num,"ch");
	
	for(i = 0;i < num;i++)
	{
		index = players[ i ];
		if(!is_user_connected(index)) continue;
		
		message_begin(MSG_ONE, g_msgsaytext, _, index);
		write_byte(index);
		write_string(Buffer);
		message_end();
	}
}
RoyalServer
User avatar
RaLpPhY4eVer
Membru, skill +1
Membru, skill +1
Posts: 185
Joined: 24 Jan 2008, 22:34
Detinator Steam: Nu
Been thanked: 1 time

01 Nov 2008, 19:45

Frumos :p ...Bine ca l-ai postat din nou :*
User avatar
bodomania
Membru, skill +1
Membru, skill +1
Posts: 292
Joined: 09 Aug 2008, 05:43
Detinator Steam: Nu
CS Status: SuPerNatuRal :X
Detinator server CS: w0lf-booy.no-ip.org
Location: La tv,la supernatural

07 Nov 2008, 15:13

Nu imi merge imi da in consola de la sv bad load
mplayerexe
Membru, skill +1
Membru, skill +1
Posts: 163
Joined: 07 Sep 2008, 00:08
Detinator Steam: Da
CS Status: O ard Aiurea peste Tot ! ~
Detinator server CS: Da
Reputatie: Restrictie mesaje private!

07 Nov 2008, 22:30

bodomania wrote:Nu imi merge imi da in consola de la sv bad load
punel la modul debug
Image

Image
glaringwolf
Membru, skill 0
Membru, skill 0
Posts: 11
Joined: 20 Dec 2010, 18:17
Detinator Steam: Da
Has thanked: 5 times

09 Aug 2012, 15:15

Cum fac sa apara si orasul ?
Post Reply

Return to “Scripting”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 18 guests