Intelligent Report 2.0 (+meniu admin) [17Aug2013]

Pluginuri facute de utilizatorii forumului eXtream.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

15 Aug 2013, 15:21

Descriere: Raportati jucatori tastand in chat "/report".Imediat se va deschide un meniu ce contine numele tuturor jucatorilor conectati pe server.Alegeti un jucator si un raport (mesaj ce contine numele jucatorului care a raportat si cel al jucatorului raportat) este trimis tuturor adminilor conectati.

Descarcare: http://www.girlshare.ro/32766515.1
Sursa:
.SMA | Afiseaza codul
/*
	Plugin: Intelligent Report
	Versiunea: 2.0
	Autor: KronoS # GG

	http://www.eXtreamCS.com

	Changelog:

	v2.0: -Modificari la nivelul meniului
	      -Am adaugat optiunea de a vizualiza raporturile (doar pentru admini)
	      -Optimizare: am unit doua functii ce construiau meniuri
	      -Am adaugat o variabila ce numara de cate ori a fost raportat fiecare jucator
	      -Mici optimizari la nivelul functiei Func_Report
	      -In meniul adminilor, langa numelui unui jucator, apare si de cate ori a fost raportat acesta

	v1.1: -Am adaugat userid-ul jucatorului in raport
	      -Numele jucatorului care vrea sa raporteze nu mai apare in meniu
	      -Filtru spam: un jucator poate raporta o data la X secunde (cvar)

	v1.0: -Initial release

*/

#include < amxmodx >
#include < amxmisc >

new g_CanReport[ 33 ], g_CountReports[ 33 ], g_ReportDelay;

public plugin_init( )
{
	register_plugin( "Intelligent Report", "2.0", "KronoS # GG" );

	register_clcmd( "say /report", "Func_BuildMenu" );
	register_clcmd( "say_team /report", "Func_BuildMenu" );

	g_ReportDelay = register_cvar( "ireport_delay", "30.0" );
}

public Func_BuildMenu( index )
{
	new iMenu = menu_create( "\y[Intelligent Report]^nAlege o optiune:", "Func_Action" );

	menu_additem( iMenu, "\wRaporteaza un jucator", "", 0 );

	if ( get_user_flags( index ) & ADMIN_BAN )
		menu_additem( iMenu, "\wVerifica rapoartele", "", 0 );
	else
		menu_additem( iMenu, "\dVerifica rapoartele", "", 0 );	

	menu_setprop( iMenu, MPROP_EXIT, MEXIT_ALL );

	menu_display( index, iMenu, 0 );

        return PLUGIN_HANDLED;
}

public Func_Action( index, iMenu, item )
{
	if ( item == MENU_EXIT )
    	{
        	menu_destroy( iMenu );

        	return PLUGIN_HANDLED;
    	}

	switch( item )
	{
		case 0: Func_Report( index, 0 );
		case 1: Func_Report( index, 1 );
	}

        menu_destroy( iMenu );

        return PLUGIN_HANDLED;	
}


public Func_Report( index, mode )
{
	new iMenu, iPlayers[ 32 ], iNum, szName[ 32 ], szId[ 6 ], aux, szFormatRep[ 53 ];

	get_players( iPlayers, iNum, "c" );

	if ( mode == 0 )
	{
		if ( !g_CanReport[ index ] )
		{
			client_print( index, print_chat, "[Intelligent Report] Poti raporta un jucator o data la %i de secunde!", floatround( get_pcvar_float( g_ReportDelay ) ) );
			return PLUGIN_HANDLED;
		}

		iMenu = menu_create( "\yRaporteaza un jucator:", "Func_CreateAction" );
	}
	else if ( mode == 1 )
	{
		if ( ~get_user_flags( index ) & ADMIN_BAN )
		{
			client_print( index, print_chat, "[Intelligent Report] Doar adminii pot viziona rapoartele facute!" );
			return PLUGIN_HANDLED;
		}

		iMenu = menu_create( "\yRapoarte facute:", "Func_DisplayAction" );
	}

	for ( new i = 0 ; i < iNum ; i++ )
	{
		aux = iPlayers[ i ];

		if ( mode == 0 && aux != index )
		{
			get_user_name( aux, szName, charsmax( szName ) );

			/* Fix pentru evitarea 'argument type mismatch' in timpul compilarii */
			formatex( szId, charsmax( szId ), "%d", get_user_userid( aux ) );

			menu_additem( iMenu, szName, szId, 0 );
		}
		else if ( mode == 1 )
		{
			get_user_name( aux, szName, charsmax( szName ) );

			/* Fix pentru evitarea 'argument type mismatch' in timpul compilarii */
			formatex( szId, charsmax( szId ), "%d", get_user_userid( aux ) );

			formatex( szFormatRep, charsmax( szFormatRep ), "%s [Raportat de %i ori]", szName, g_CountReports[ aux ] );

			menu_additem( iMenu, szFormatRep, szId, 0 );
		}
	}

	menu_display( index, iMenu, 0 );

	return PLUGIN_HANDLED;
}

public Func_CreateAction( index, iMenu, item )
{
	if ( item == MENU_EXIT )
	{
		menu_destroy( iMenu );

		return PLUGIN_HANDLED;
	}

	new szId[ 6 ], szName[ 64 ], iAccess, iCallback, iId, iPlayer;

	menu_item_getinfo( iMenu, item, iAccess, szId, charsmax( szId ), szName, charsmax( szName ), iCallback );

	iId = str_to_num( szId );

	iPlayer = find_player( "k", iId );

	if ( iPlayer )
		Func_Print( index, iPlayer );

	menu_destroy( iMenu );

	return PLUGIN_HANDLED;
}

public Func_DisplayAction( index, iMenu, item )
{
	menu_destroy( iMenu );

	return PLUGIN_HANDLED;
}

public Func_Print( index, iPlayer )
{
	new iPlayers[ 32 ], iNum, aux, szName1[ 32 ], szName2[ 32 ], szId[ 6 ];

	g_CountReports[ iPlayer ]++;

	get_user_name( index, szName1, charsmax( szName1 ) );
	get_user_name( iPlayer, szName2, charsmax( szName2 ) );

	formatex( szId, charsmax( szId ), "%d", get_user_userid( iPlayer ) );

	get_players( iPlayers, iNum, "c" );

	for ( new i = 0 ; i < iNum ; i ++ )
	{
		aux = iPlayers[ i ];

		if ( is_user_admin( aux ) )
			client_print( aux, print_chat, "[Intelligent Report] %s l-a raportat pe %s (#%d)", szName1, szName2, szId );
	}

	g_CanReport[ index ] = 0;

	set_task( get_pcvar_float( g_ReportDelay ), "Func_Reset", index );
}

public Func_Reset( index )
{
	if ( is_user_connected( index ) )
		g_CanReport[ index ] = 1;
}

public client_putinserver( index )
{
	g_CanReport[ index ] = 1;
	g_CountReports[ index ] = 0;
}
Nume: Intelligent Report
Versiune: 2.0
Autor: KronoS # GG

Instalare:
1. Fisierul intelligent_report_2.0.sma il puneti in addons/amxmodx/scripting
2. Fisierul intelligent_report_2.0.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

Code: Select all

intelligent_report_2.0.amxx
Info:
Comanda este:

Code: Select all

/report
si nu apare in chat (in screenshot apare deoarece testam pluginul, intre timp am modificat eu)

Pentru ca meniul sa apara, trebuie sa fie si alti jucatori conectati pe server in afara de voi.
Accesul necesar pentru a putea vizualiza rapoartele facute este ADMIN_BAN (litera d).

Cvar-uri:

Code: Select all

ireport_delay 30.0 ;dupa cat timp fata de raportul anterior se poate face unul nou
Changelog:
| Afiseaza codul
v2.0: -Modificari la nivelul meniului
        -Am adaugat optiunea de a vizualiza raporturile (doar pentru admini)
        -Optimizare: am unit doua functii ce construiau meniuri
        -Am adaugat o variabila ce numara de cate ori a fost raportat fiecare jucator
        -Mici optimizari la nivelul functiei Func_Report
        -In meniul adminilor, langa numelui unui jucator, apare si de cate ori a fost raportat acesta

v1.1: -Am adaugat userid-ul jucatorului in raport
        -Numele jucatorului care vrea sa raporteze nu mai apare in meniu
        -Filtru spam: un jucator poate raporta o data la X secunde (cvar)

v1.0: -Initial release
Imagini:
| Afiseaza codul
Image

Image

Image

Image

Image

Image
Astept idei din partea voastra :)
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
RoyalServer 2
User avatar
sound
Membrul anului 2018
Membrul anului 2018
Posts: 5807
Joined: 23 Jan 2013, 22:52
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: Nu
SteamID: sou_nd
Reputatie: Fost membru Club eXtreamCS (4 luni)
Nume anterioare: s o u n d -, snd
Fost Moderator
Fost Super Moderator
Moderatorul anului 2017
Membrul anului 2018
Fond eXtream: 0
Location: Romania
Has thanked: 91 times
Been thanked: 80 times
Contact:

15 Aug 2013, 15:23

frumos, gj :D
User avatar
Mădălin
Administrator
Administrator
Posts: 5295
Joined: 06 Mar 2013, 21:40
Detinator Steam: Nu
Reputatie: Administrator
Fost manager cs.extream.ro
Web designer
Administratorul anului 2023
Has thanked: 45 times
Been thanked: 310 times
Contact:

15 Aug 2013, 15:48

s o u n d - wrote:frumos, gj :D
mast3rwap
Membru, skill +1
Membru, skill +1
Posts: 324
Joined: 11 Feb 2012, 21:32
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Detinator server CS: da
SteamID: berlo1990
Location: italia
Has thanked: 30 times
Been thanked: 5 times
Contact:

15 Aug 2013, 17:12

Nice..
User avatar
CryWolf
Administrator
Administrator
Posts: 6505
Joined: 07 Aug 2008, 16:33
Detinator Steam: Da
Reputatie: Administrator
Fost Scripter
Manager CS2.eXtream.Ro
Fost Detinator ZM.eXtream.Ro
Fost manager CS.eXtream.Ro
Fost manager CSGO.eXtream.Ro
Fost manager global
Location: Botosani
Discord: crywolf1989
Has thanked: 202 times
Been thanked: 850 times
Contact:

15 Aug 2013, 17:15

Kronos, acest plugin va deveni public buna ideea dar as spune sa ascunzi comanda din chat /report pentru ca cei conectati cu ceva sa nu isi dea seama si sa scoata sau sa iasa.

Ideea in sine este foarte buna
NU IMI MAI DA-TI PM CU CERERE AJUTOR/SAMD, FOLOSITI FORUMUL, CITESC MAJORITATEA TOPICURILOR.
www.dark-arena.com , SERVERE CS / CS2 / L4D AU REVENIT ONLINE.
www.diasporaiptv.ro - SERVICII PREMIUM IPTV

Image

Image
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

15 Aug 2013, 17:16

CryWolf wrote:Kronos, acest plugin va deveni public buna ideea dar as spune sa ascunzi comanda din chat /report pentru ca cei conectati cu ceva sa nu isi dea seama si sa scoata sau sa iasa.

Ideea in sine este foarte buna
Este scoasa :P
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
munir
Membru eXtream
Membru eXtream
Posts: 3193
Joined: 30 Aug 2012, 22:16
Detinator Steam: Da
CS Status: Fost scripter
Detinator server CS: Nu
SteamID: -
Reputatie: Fost super moderator
Restrictie schimbare nume
Nume anterior: falseq, cruyff
Location: Bucuresti
Has thanked: 342 times
Been thanked: 571 times
Contact:

15 Aug 2013, 17:16

Foarte buna ideea, apreciez mult :). Si codul arata bine. :P
P.S: Sper sa nu te superi, ti-am adaugat eu sursa in primul post.. multi nu pot descarca de pe girlshare. >:D<
Last edited by KronoS eXtream on 15 Aug 2013, 17:17, edited 1 time in total.
Reason: Merci, ma gandeam si eu sa pun sursa dar mi-a fost lene :))
Retras
User avatar
Ulquiorra
Fost moderator
Fost moderator
Posts: 2053
Joined: 25 Jul 2010, 17:29
Detinator Steam: Da
CS Status: A mai trecut o zi asteptand una mai buna
Detinator server CS: Retras.
SteamID: STEAM_0:1:318247XX
Reputatie: Fost Scripter eXtreamCS
Fost Moderator ajutator
Nick anterior: Askhanar
Location: Braila, Romania.
Has thanked: 215 times
Been thanked: 1132 times

15 Aug 2013, 23:22

frumos codat si idee unica :)

btw dupa ce alegi jucatorul.. poti face sa scrie si motivul.. ( in messagemode.. )

de asemenea ai putea trece de pe new pe static ( acolo unde iei playerii sau functiile des chemate ).
ai exemplu de messagemode aici | Afiseaza codul
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <CC_ColorChat>

#define PLUGIN "Nick Registration"
#define VERSION "0.0.1"

new const g_szInfoKey[ ] = "_nr";
new const g_szNoneWord[ ] = "None";
new const g_szTag[ ] = "^x04| Nick Registration:";
new g_szRegisterFile[ 64 ];

enum _:eRegisterInfos
{
	Nick[ 32 ],
	Password[ 15 ],
	Mail[ 64 ]
}


new Array:g_aData;

new g_szLoginInfo[ 33 ][ eRegisterInfos ];
new g_iRegistrations = 0;

public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "Askhanar" );
	
	register_clcmd( "say /registernick", "ClCmdSayRegisterNick" );
	register_clcmd( "RN_SetPassword", "__RN_SetPassword" );
	register_clcmd( "RN_SetMail", "__RN_SetMail" );
	
	register_forward( FM_ClientUserInfoChanged, "fwd_ClientUserInfoChangedPost", false  );
	g_aData = ArrayCreate( eRegisterInfos );
	
	
	// Add your code here...
}

public plugin_cfg( )	LoadRegistrations( );

public client_authorized( id )
{
	static szNick[ 32 ];
	get_user_name( id, szNick, sizeof ( szNick ) -1 );
	
	if( CheckRegistration( id, szNick ) )
	{
		static szPassword[ 15 ], szIp[ 22 ];
		get_user_info( id, g_szInfoKey, szPassword, sizeof ( szPassword ) -1 );
		get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
		
		if( equal( szPassword, g_szLoginInfo[ id ][ Password ] ) )
		{
			client_print( id, print_console, "Ai fost logat cu succes!^nNick: %s^nParola: %s^nE-Mail:%s",
				g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a logat cu succes( Parola: %s, E-Mail: %s )",
				szNick, szIp, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			
			return PLUGIN_HANDLED;
		}
		else
		{
		
			server_cmd( "kick #%i ^"Nick rezervat! Model de introducere a parolei: setinfo %s parola^"",
				get_user_userid( id ), g_szInfoKey );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) Parola gresita! ( %s, Parola corecta: %s )",
				szNick, szIp, szPassword, g_szLoginInfo[ id ][ Password ] );
		}
	}
	
	return PLUGIN_CONTINUE;
}

public fwd_ClientUserInfoChangedPost( id, InfoKey )
{
	if( !is_user_connected( id ) || is_user_connecting( id ) )
		return FMRES_IGNORED;
	
	new szName[ 32 ];
	get_user_name( id, szName, sizeof ( szName ) -1 );
	
	new szNewName[ 32 ];
	engfunc( EngFunc_InfoKeyValue, InfoKey, "name", szNewName, sizeof ( szNewName ) -1 );
	
	if( equali( szName, szNewName ) )
		return FMRES_IGNORED;
		
	if( CheckRegistration( id, szNewName ) )
	{
		static szPassword[ 15 ], szIp[ 22 ];
		get_user_info( id, g_szInfoKey, szPassword, sizeof ( szPassword ) -1 );
		get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
		
		if( equal( szPassword, g_szLoginInfo[ id ][ Password ] ) )
		{
			client_print( id, print_console, "Ai fost logat cu succes!^nNick: %s^nParola: %s^nE-Mail:%s",
				g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a logat cu succes( Parola: %s, E-Mail: %s )",
				szNewName, szIp, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
		}
		{
			server_cmd( "kick #%i ^"Acest nick este rezervat iar tu ai gresit parola^nModel de introducere a parolei: setinfo %s parola^"",
				get_user_userid( id ), g_szInfoKey );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) Parola gresita! ( %s, Parola corecta: %s )",
				szNewName, szIp, szPassword, g_szLoginInfo[ id ][ Password ] );
		}
	}
	
	return FMRES_IGNORED;
}

public ClCmdSayRegisterNick(  id  )
{
	new szName[ 32 ];
	get_user_name( id, szName, sizeof ( szName ) -1 );
	if( UserIsRegistered( szName ) )
	{
		ColorChat( id, RED, "%s^x03 %s^x01, acest nick este deja inregistrat!", g_szTag, szName );
		return PLUGIN_HANDLED;
	}
	
	new szMenuName[ 128 ];
	formatex( szMenuName, sizeof ( szMenuName ) -1, "\r  Rezervare Nume^n^n\wNick:\y %s  \r|\w Parola:\y %s^n\wE-Mail:\y %s^n^n",
		szName, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
	
	new iMenu  =  menu_create(  szMenuName, "NR_RegisterMenu" );
	menu_additem( iMenu, "\wSeteaza parola", "1", 0 );
	menu_additem( iMenu, "\wSeteaza e-mail^n", "2", 0 );
	menu_additem( iMenu, "\rConfirma rezervarea", "3", 0 );
	
	menu_setprop( iMenu, MPROP_EXITNAME, "\wIesire" );
	
	menu_display( id, iMenu );
	
	return PLUGIN_CONTINUE;
}

public NR_RegisterMenu( id, iMenu, iItem)
{
	if( iItem == MENU_EXIT )
	{
		menu_destroy( iMenu );
		return PLUGIN_HANDLED;
	}
	
	static _access, szInfo[ 4 ], iCallback;
	menu_item_getinfo( iMenu, iItem, _access, szInfo, sizeof ( szInfo ) -1, _, _, iCallback );
	menu_destroy( iMenu );
	
	new iKey = str_to_num( szInfo );
	switch( iKey )
	{
		case 1:
		{
			ColorChat( id, RED, "%s^x01 Esti rugat sa scrii o parola, apoi sa apesi^x03 ENTER^x01.", g_szTag );
			client_cmd( id, "messagemode RN_SetPassword" );
			ClCmdSayRegisterNick(  id  );
		}
		case 2:
		{
			ColorChat( id, RED, "%s^x01 Esti rugat sa scrii un e-mail, apoi sa apesi^x03 ENTER^x01.", g_szTag );
			client_cmd( id, "messagemode RN_SetMail" );
			ClCmdSayRegisterNick(  id  );
		}
		case 3:
		{
			if( !equal( g_szLoginInfo[ id ][ Password ], g_szNoneWord ) &&
				!equal( g_szLoginInfo[ id ][ Mail ], g_szNoneWord ) )
			{
				new szName[ 32 ];
				get_user_name( id, szName, sizeof ( szName ) -1 );
				
				ColorChat( id, RED, "%s^x01 Ai fost inregistrat cu succes, datele fiind urmatoarele:", g_szTag );
				ColorChat( id, RED, "%s^x01 Nick:^x03 %s^x04 |^x01  Parola:^x03 %s", g_szTag, szName, g_szLoginInfo[ id ][ Password ] );
				ColorChat( id, RED, "%s^x01 E-Mail:^x03 %s", g_szTag, g_szLoginInfo[ id ][ Mail ] );
				ColorChat( id, RED, "%s^x01 Pentru a te loga foloseste: ^"^x03setinfo %s %s^"^x01", g_szTag, g_szInfoKey, g_szLoginInfo[ id ][ Password ] );
				
				new eData[ eRegisterInfos ];
				copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, szName );
				copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, g_szLoginInfo[ id ][ Password ] );
				copy( eData[ Mail ], sizeof ( eData[ Mail ] ) -1, g_szLoginInfo[ id ][ Mail ] );
				
				ArrayPushArray( g_aData, eData );
				g_iRegistrations++;
				
				CheckRegistration( id, szName );
				
				new szIp[ 22 ];
				get_user_ip( id, szIp, sizeof ( szIp ) -1 );
				log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a inregistrat cu succes[ Nick: %s | Parola: %s | E-Mail: %s ]",
					szName, szIp, eData[ Nick ], eData[ Password ], eData[ Mail ] );
					
				SaveRegistrations( );
			}
			else
			{
				ColorChat( id, RED,"%s^x03 Datele pentru inregistrare sunt incomplete!", g_szTag );
				ClCmdSayRegisterNick(  id  );
			}
			
		}
	}
	
	return PLUGIN_CONTINUE;
}

public __RN_SetPassword( id )
{
	static szArg[ 15 ];
	read_argv( 1, szArg, sizeof ( szArg ) -1 );
	
	if ( !strlen( szArg ) || strlen( szArg ) < 6 )
	{
		ColorChat( id, RED, "%s^x01Parola NU poate fi mai mica de 6 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetPassword");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	else if( strlen( szArg ) > 15 )
	{
		ColorChat( id, RED, "%s^x01Parola NU poate fi mai mare de 15 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetPassword");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	
	copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, szArg );
	ClCmdSayRegisterNick(  id  );
	return PLUGIN_HANDLED;
	
}

public __RN_SetMail( id )
{
	static szArg[ 64 ];
	read_argv( 1, szArg, sizeof ( szArg ) -1 );
	
	if( containi( szArg, "@" ) == -1 && containi( szArg, "yahoo" ) == -1
		&& containi( szArg, "gmail" ) == -1 && containi( szArg, "hotmail" ) == -1 )
	{
		ColorChat( id, RED, "%s^x03 %s^x01 nu este un e-mail valid!!", g_szTag, szArg );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	else if( strlen( szArg ) < 9 )
	{
		ColorChat( id, RED, "%s^x01 un e-mail NU poate avea mai putin de 9 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	
	copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, szArg );
	ClCmdSayRegisterNick(  id  );
	return PLUGIN_HANDLED;
	
}

CheckRegistration( id, const szNick[ ] )
{
	new bool:bRegistered = false;
	new eData[ eRegisterInfos ];
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );
		
		if( equali( szNick, eData[ Nick ] ) )
		{
			copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, eData[ Nick ] );
			copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, eData[ Password ] );
			copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, eData[ Mail ] );
			bRegistered = true;
			break;
		}
	}
	
	if( !bRegistered )
	{
		copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, g_szNoneWord );
		copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -11, g_szNoneWord );
		copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -11, g_szNoneWord );
	}
			
	return bRegistered;
}

LoadRegistrations( )
{
	get_localinfo( "amxx_datadir", g_szRegisterFile, sizeof ( g_szRegisterFile ) -1 );
	format( g_szRegisterFile, sizeof ( g_szRegisterFile ) -1, "%s/NickRegistrations.txt", g_szRegisterFile );
	
	if( g_iRegistrations )
	{
		ArrayClear( g_aData );
		g_iRegistrations = 0;
	}
	
	if( file_exists( g_szRegisterFile ) )
	{
		
		new iFile = fopen( g_szRegisterFile, "rt" );
		
		new szNick[ 32 ], szPassword[ 15 ], szMail[ 64 ];
		new szFileData[ 128 ], eData[ eRegisterInfos ];
		
		while( !feof( iFile ) )
		{
			fgets( iFile, szFileData, sizeof ( szFileData ) - 1);
			
			if( !szFileData[ 0 ] || szFileData[ 0 ] == ';'
				|| ( szFileData[ 0 ] == '/' && szFileData[ 1 ] == '/' ) )
				continue;
			
			parse( szFileData, szNick, sizeof ( szNick ) -1,
				szPassword, sizeof ( szPassword ) -1,
				szMail, sizeof ( szMail ) -1 );
				
			copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, szNick );
			copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, szPassword );
			copy( eData[ Mail ], sizeof ( eData[ Mail ] ) -1, szMail );
			
			ArrayPushArray( g_aData, eData );
			g_iRegistrations++;
		}
		
		fclose( iFile );
		
	}
	
	log_to_file( "NickRegistrations.log", "Am incarcat cu succes %i nick-uri inregistrate!", g_iRegistrations );
	
}

SaveRegistrations( )
{
	
	if( file_exists( g_szRegisterFile ) )
		delete_file( g_szRegisterFile );
		
	new iFile = fopen( g_szRegisterFile, "wt" );
	new eData[ eRegisterInfos ];
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );

		fprintf( iFile, "^"%s^" ^"%s^" ^"%s^"^n",
			eData[ Nick ], eData[ Password ], eData[ Mail ] );
	}
	
	fclose( iFile );
	
}

UserIsRegistered( const szName[ ] )
{
	new eData[ eRegisterInfos ];
	new bool:bRegistered = false;
	
	for( new i = 0; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );
		
		if( equali( szName, eData[ Nick ] ) )
		{
			bRegistered = true;
			break;
		}
	}
	
	return bRegistered;
}

public plugin_end( )
{
	SaveRegistrations( );
	ArrayDestroy( g_aData );
}
Caut o persoana dedicata care se pricepe si stie ce face.
Vreau sa creeze si sa se ocupe de administrarea unui server de MU, da e vorba de vechiul joc..ma gandesc undeva la un season 3 ep1/2.

O sa achizitionez un domeniu .ro.
Totodata sponsorizez absolut orice este necesar.
Ma puteti contacta prin: http://solo.to/stfrzv
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

15 Aug 2013, 23:28

Askhanar wrote:frumos codat si idee unica :)

btw dupa ce alegi jucatorul.. poti face sa scrie si motivul.. ( in messagemode.. )

de asemenea ai putea trece de pe new pe static ( acolo unde iei playerii sau functiile des chemate ).
ai exemplu de messagemode aici | Afiseaza codul
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <CC_ColorChat>

#define PLUGIN "Nick Registration"
#define VERSION "0.0.1"

new const g_szInfoKey[ ] = "_nr";
new const g_szNoneWord[ ] = "None";
new const g_szTag[ ] = "^x04| Nick Registration:";
new g_szRegisterFile[ 64 ];

enum _:eRegisterInfos
{
	Nick[ 32 ],
	Password[ 15 ],
	Mail[ 64 ]
}


new Array:g_aData;

new g_szLoginInfo[ 33 ][ eRegisterInfos ];
new g_iRegistrations = 0;

public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "Askhanar" );
	
	register_clcmd( "say /registernick", "ClCmdSayRegisterNick" );
	register_clcmd( "RN_SetPassword", "__RN_SetPassword" );
	register_clcmd( "RN_SetMail", "__RN_SetMail" );
	
	register_forward( FM_ClientUserInfoChanged, "fwd_ClientUserInfoChangedPost", false  );
	g_aData = ArrayCreate( eRegisterInfos );
	
	
	// Add your code here...
}

public plugin_cfg( )	LoadRegistrations( );

public client_authorized( id )
{
	static szNick[ 32 ];
	get_user_name( id, szNick, sizeof ( szNick ) -1 );
	
	if( CheckRegistration( id, szNick ) )
	{
		static szPassword[ 15 ], szIp[ 22 ];
		get_user_info( id, g_szInfoKey, szPassword, sizeof ( szPassword ) -1 );
		get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
		
		if( equal( szPassword, g_szLoginInfo[ id ][ Password ] ) )
		{
			client_print( id, print_console, "Ai fost logat cu succes!^nNick: %s^nParola: %s^nE-Mail:%s",
				g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a logat cu succes( Parola: %s, E-Mail: %s )",
				szNick, szIp, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			
			return PLUGIN_HANDLED;
		}
		else
		{
		
			server_cmd( "kick #%i ^"Nick rezervat! Model de introducere a parolei: setinfo %s parola^"",
				get_user_userid( id ), g_szInfoKey );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) Parola gresita! ( %s, Parola corecta: %s )",
				szNick, szIp, szPassword, g_szLoginInfo[ id ][ Password ] );
		}
	}
	
	return PLUGIN_CONTINUE;
}

public fwd_ClientUserInfoChangedPost( id, InfoKey )
{
	if( !is_user_connected( id ) || is_user_connecting( id ) )
		return FMRES_IGNORED;
	
	new szName[ 32 ];
	get_user_name( id, szName, sizeof ( szName ) -1 );
	
	new szNewName[ 32 ];
	engfunc( EngFunc_InfoKeyValue, InfoKey, "name", szNewName, sizeof ( szNewName ) -1 );
	
	if( equali( szName, szNewName ) )
		return FMRES_IGNORED;
		
	if( CheckRegistration( id, szNewName ) )
	{
		static szPassword[ 15 ], szIp[ 22 ];
		get_user_info( id, g_szInfoKey, szPassword, sizeof ( szPassword ) -1 );
		get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
		
		if( equal( szPassword, g_szLoginInfo[ id ][ Password ] ) )
		{
			client_print( id, print_console, "Ai fost logat cu succes!^nNick: %s^nParola: %s^nE-Mail:%s",
				g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a logat cu succes( Parola: %s, E-Mail: %s )",
				szNewName, szIp, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
		}
		{
			server_cmd( "kick #%i ^"Acest nick este rezervat iar tu ai gresit parola^nModel de introducere a parolei: setinfo %s parola^"",
				get_user_userid( id ), g_szInfoKey );
			log_to_file( "NickRegistrations.log", "--| %s ( %s ) Parola gresita! ( %s, Parola corecta: %s )",
				szNewName, szIp, szPassword, g_szLoginInfo[ id ][ Password ] );
		}
	}
	
	return FMRES_IGNORED;
}

public ClCmdSayRegisterNick(  id  )
{
	new szName[ 32 ];
	get_user_name( id, szName, sizeof ( szName ) -1 );
	if( UserIsRegistered( szName ) )
	{
		ColorChat( id, RED, "%s^x03 %s^x01, acest nick este deja inregistrat!", g_szTag, szName );
		return PLUGIN_HANDLED;
	}
	
	new szMenuName[ 128 ];
	formatex( szMenuName, sizeof ( szMenuName ) -1, "\r  Rezervare Nume^n^n\wNick:\y %s  \r|\w Parola:\y %s^n\wE-Mail:\y %s^n^n",
		szName, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
	
	new iMenu  =  menu_create(  szMenuName, "NR_RegisterMenu" );
	menu_additem( iMenu, "\wSeteaza parola", "1", 0 );
	menu_additem( iMenu, "\wSeteaza e-mail^n", "2", 0 );
	menu_additem( iMenu, "\rConfirma rezervarea", "3", 0 );
	
	menu_setprop( iMenu, MPROP_EXITNAME, "\wIesire" );
	
	menu_display( id, iMenu );
	
	return PLUGIN_CONTINUE;
}

public NR_RegisterMenu( id, iMenu, iItem)
{
	if( iItem == MENU_EXIT )
	{
		menu_destroy( iMenu );
		return PLUGIN_HANDLED;
	}
	
	static _access, szInfo[ 4 ], iCallback;
	menu_item_getinfo( iMenu, iItem, _access, szInfo, sizeof ( szInfo ) -1, _, _, iCallback );
	menu_destroy( iMenu );
	
	new iKey = str_to_num( szInfo );
	switch( iKey )
	{
		case 1:
		{
			ColorChat( id, RED, "%s^x01 Esti rugat sa scrii o parola, apoi sa apesi^x03 ENTER^x01.", g_szTag );
			client_cmd( id, "messagemode RN_SetPassword" );
			ClCmdSayRegisterNick(  id  );
		}
		case 2:
		{
			ColorChat( id, RED, "%s^x01 Esti rugat sa scrii un e-mail, apoi sa apesi^x03 ENTER^x01.", g_szTag );
			client_cmd( id, "messagemode RN_SetMail" );
			ClCmdSayRegisterNick(  id  );
		}
		case 3:
		{
			if( !equal( g_szLoginInfo[ id ][ Password ], g_szNoneWord ) &&
				!equal( g_szLoginInfo[ id ][ Mail ], g_szNoneWord ) )
			{
				new szName[ 32 ];
				get_user_name( id, szName, sizeof ( szName ) -1 );
				
				ColorChat( id, RED, "%s^x01 Ai fost inregistrat cu succes, datele fiind urmatoarele:", g_szTag );
				ColorChat( id, RED, "%s^x01 Nick:^x03 %s^x04 |^x01  Parola:^x03 %s", g_szTag, szName, g_szLoginInfo[ id ][ Password ] );
				ColorChat( id, RED, "%s^x01 E-Mail:^x03 %s", g_szTag, g_szLoginInfo[ id ][ Mail ] );
				ColorChat( id, RED, "%s^x01 Pentru a te loga foloseste: ^"^x03setinfo %s %s^"^x01", g_szTag, g_szInfoKey, g_szLoginInfo[ id ][ Password ] );
				
				new eData[ eRegisterInfos ];
				copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, szName );
				copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, g_szLoginInfo[ id ][ Password ] );
				copy( eData[ Mail ], sizeof ( eData[ Mail ] ) -1, g_szLoginInfo[ id ][ Mail ] );
				
				ArrayPushArray( g_aData, eData );
				g_iRegistrations++;
				
				CheckRegistration( id, szName );
				
				new szIp[ 22 ];
				get_user_ip( id, szIp, sizeof ( szIp ) -1 );
				log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a inregistrat cu succes[ Nick: %s | Parola: %s | E-Mail: %s ]",
					szName, szIp, eData[ Nick ], eData[ Password ], eData[ Mail ] );
					
				SaveRegistrations( );
			}
			else
			{
				ColorChat( id, RED,"%s^x03 Datele pentru inregistrare sunt incomplete!", g_szTag );
				ClCmdSayRegisterNick(  id  );
			}
			
		}
	}
	
	return PLUGIN_CONTINUE;
}

public __RN_SetPassword( id )
{
	static szArg[ 15 ];
	read_argv( 1, szArg, sizeof ( szArg ) -1 );
	
	if ( !strlen( szArg ) || strlen( szArg ) < 6 )
	{
		ColorChat( id, RED, "%s^x01Parola NU poate fi mai mica de 6 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetPassword");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	else if( strlen( szArg ) > 15 )
	{
		ColorChat( id, RED, "%s^x01Parola NU poate fi mai mare de 15 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetPassword");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	
	copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, szArg );
	ClCmdSayRegisterNick(  id  );
	return PLUGIN_HANDLED;
	
}

public __RN_SetMail( id )
{
	static szArg[ 64 ];
	read_argv( 1, szArg, sizeof ( szArg ) -1 );
	
	if( containi( szArg, "@" ) == -1 && containi( szArg, "yahoo" ) == -1
		&& containi( szArg, "gmail" ) == -1 && containi( szArg, "hotmail" ) == -1 )
	{
		ColorChat( id, RED, "%s^x03 %s^x01 nu este un e-mail valid!!", g_szTag, szArg );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	else if( strlen( szArg ) < 9 )
	{
		ColorChat( id, RED, "%s^x01 un e-mail NU poate avea mai putin de 9 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	
	copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, szArg );
	ClCmdSayRegisterNick(  id  );
	return PLUGIN_HANDLED;
	
}

CheckRegistration( id, const szNick[ ] )
{
	new bool:bRegistered = false;
	new eData[ eRegisterInfos ];
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );
		
		if( equali( szNick, eData[ Nick ] ) )
		{
			copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, eData[ Nick ] );
			copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, eData[ Password ] );
			copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, eData[ Mail ] );
			bRegistered = true;
			break;
		}
	}
	
	if( !bRegistered )
	{
		copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, g_szNoneWord );
		copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -11, g_szNoneWord );
		copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -11, g_szNoneWord );
	}
			
	return bRegistered;
}

LoadRegistrations( )
{
	get_localinfo( "amxx_datadir", g_szRegisterFile, sizeof ( g_szRegisterFile ) -1 );
	format( g_szRegisterFile, sizeof ( g_szRegisterFile ) -1, "%s/NickRegistrations.txt", g_szRegisterFile );
	
	if( g_iRegistrations )
	{
		ArrayClear( g_aData );
		g_iRegistrations = 0;
	}
	
	if( file_exists( g_szRegisterFile ) )
	{
		
		new iFile = fopen( g_szRegisterFile, "rt" );
		
		new szNick[ 32 ], szPassword[ 15 ], szMail[ 64 ];
		new szFileData[ 128 ], eData[ eRegisterInfos ];
		
		while( !feof( iFile ) )
		{
			fgets( iFile, szFileData, sizeof ( szFileData ) - 1);
			
			if( !szFileData[ 0 ] || szFileData[ 0 ] == ';'
				|| ( szFileData[ 0 ] == '/' && szFileData[ 1 ] == '/' ) )
				continue;
			
			parse( szFileData, szNick, sizeof ( szNick ) -1,
				szPassword, sizeof ( szPassword ) -1,
				szMail, sizeof ( szMail ) -1 );
				
			copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, szNick );
			copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, szPassword );
			copy( eData[ Mail ], sizeof ( eData[ Mail ] ) -1, szMail );
			
			ArrayPushArray( g_aData, eData );
			g_iRegistrations++;
		}
		
		fclose( iFile );
		
	}
	
	log_to_file( "NickRegistrations.log", "Am incarcat cu succes %i nick-uri inregistrate!", g_iRegistrations );
	
}

SaveRegistrations( )
{
	
	if( file_exists( g_szRegisterFile ) )
		delete_file( g_szRegisterFile );
		
	new iFile = fopen( g_szRegisterFile, "wt" );
	new eData[ eRegisterInfos ];
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );

		fprintf( iFile, "^"%s^" ^"%s^" ^"%s^"^n",
			eData[ Nick ], eData[ Password ], eData[ Mail ] );
	}
	
	fclose( iFile );
	
}

UserIsRegistered( const szName[ ] )
{
	new eData[ eRegisterInfos ];
	new bool:bRegistered = false;
	
	for( new i = 0; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );
		
		if( equali( szName, eData[ Nick ] ) )
		{
			bRegistered = true;
			break;
		}
	}
	
	return bRegistered;
}

public plugin_end( )
{
	SaveRegistrations( );
	ArrayDestroy( g_aData );
}
M-as complica prea mult cu messagemode si unii nu stiu exact ce trebuie sa faca.Prefer sa-l las simplu la partea asta.Eventual ii mai adaug un meniu din care sa selecteze un motiv :)
O sa revin maine cu o versiune noua.
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
User avatar
Ulquiorra
Fost moderator
Fost moderator
Posts: 2053
Joined: 25 Jul 2010, 17:29
Detinator Steam: Da
CS Status: A mai trecut o zi asteptand una mai buna
Detinator server CS: Retras.
SteamID: STEAM_0:1:318247XX
Reputatie: Fost Scripter eXtreamCS
Fost Moderator ajutator
Nick anterior: Askhanar
Location: Braila, Romania.
Has thanked: 215 times
Been thanked: 1132 times

15 Aug 2013, 23:36

cum crezi :P e bine si ce ai zis tu.. un meniu ce apare dupa ce alegi un player.. si sa fie vreo 4 5 motive.. cod, reclama, injurii sau eu stiu..


OFF: urata poza!:)) <3
Caut o persoana dedicata care se pricepe si stie ce face.
Vreau sa creeze si sa se ocupe de administrarea unui server de MU, da e vorba de vechiul joc..ma gandesc undeva la un season 3 ep1/2.

O sa achizitionez un domeniu .ro.
Totodata sponsorizez absolut orice este necesar.
Ma puteti contacta prin: http://solo.to/stfrzv
ReaD1nG
Membru, skill +1
Membru, skill +1
Posts: 237
Joined: 26 Jul 2013, 17:48
Detinator Steam: Da
Has thanked: 65 times
Been thanked: 13 times

16 Aug 2013, 00:21

bun !
Last edited by munir on 16 Aug 2013, 08:53, edited 1 time in total.
Reason: +1
Image
User avatar
KronoS eXtream
Fost administrator
Fost administrator
Posts: 4378
Joined: 02 Apr 2009, 19:18
Detinator Steam: Da
Reputatie: Fost administrator
Fost detinator Zombie-Land.eXtream.Ro
Contribuitor
Fost Scripter eXtreamCS
Dezvoltator al listei de seriozitate eXtreamCS
Location: Bucharest
Has thanked: 551 times
Been thanked: 820 times
Contact:

16 Aug 2013, 10:44

Askhanar wrote:cum crezi :P e bine si ce ai zis tu.. un meniu ce apare dupa ce alegi un player.. si sa fie vreo 4 5 motive.. cod, reclama, injurii sau eu stiu..


OFF: urata poza!:)) <3
Off: Nu e urata >:P E mumoasa <3

On: Versiune noua

Code: Select all

v1.1-beta: -Am adaugat userid-ul jucatorului in raport
		-Numele jucatorului care vrea sa raporteze nu mai apare in meniu
		-Filtru spam: un jucator poate raporta o data la X secunde (cvar)
Nu efectuez tranzactii pe mess, skype etc. Aveti grija la indivizii care se dau drept mine!
Nu mai ofer suport asa ca nu imi mai trimiteti mesaje in legatura cu asta!


Zombie Plague Shade 1.2-debug1 [with Item Limiter] (12 September 2015) - Bombardier Branch
Post Reply

Return to “Pluginuri eXtream”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 16 guests