Plugin stergere admin inactivi!

Cereri de pluginuri noi, skinuri in CS, etc.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Syncron~
Membru, skill 0
Membru, skill 0
Posts: 81
Joined: 06 Nov 2014, 08:53
Detinator Steam: Da
Detinator server CS: DA
SteamID: syncron12
Fond eXtream: 0
Contact:

25 Jan 2019, 23:57

Salut,acum mult timp am incercat sa fac eu singur un plugin care dupa un anumit timp, sa stearga adminii care nu au mai intrat de x zile/saptamani/luni pe server prin metoda nVault,dar nu am reusit, am ceva inceput daca doriti fi-l pot posta nu e nici o problema poate venitii cu idei/modificari asupra lui.
Ceea ce vreau eu sa spun este ca sunt dispus sa platesc o suma acceptabila nu una COLOSALA ,pentru acest plugin,doresc sa raspunda cei, care stiu despre ce este vorba.
Ma gandesc ca ar fii ceva util si pentru altii un asemenea plugin, acum nu stiu ce sa zic poate altii prefera munca manuala.

Note:Nu am postat la Anunturi - vanzare/cumparare,deoarece am crezut ca nu e o sectiune prea vizitata de scripteri, daca este obligatoriu, o postez acolo.
Sper ca s-a inteles ce doresc!
RoyalServer 2
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

26 Jan 2019, 15:14

Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Syncron~
Membru, skill 0
Membru, skill 0
Posts: 81
Joined: 06 Nov 2014, 08:53
Detinator Steam: Da
Detinator server CS: DA
SteamID: syncron12
Fond eXtream: 0
Contact:

27 Jan 2019, 15:50

Nu este ceea ce am dorit sa spun in topic! :)
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

27 Jan 2019, 21:32

atunci vezi pe aici - cereri-pluginuri/plugin-admin-t215315.html
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
nikod1606
Membru, skill +1
Membru, skill +1
Posts: 158
Joined: 04 Jan 2019, 23:40
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

03 Mar 2019, 16:35

Levinn plugin ul ala nu e terminat e 80 la suta am facut si eu cerere pentru ca mi se pare genial si as contribui si eu cu 10 euro pentru al termina
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

03 Mar 2019, 16:48

păi de ce e doar 80%?
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
nikod1606
Membru, skill +1
Membru, skill +1
Posts: 158
Joined: 04 Jan 2019, 23:40
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

03 Mar 2019, 21:33

am inteles ca sunt buguri la el si s-a anulat proiectul , uita te in comentarii explica baietii mai bine .
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

03 Mar 2019, 21:44

nu stau să citesc atâtea pagini,srry
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
nikod1606
Membru, skill +1
Membru, skill +1
Posts: 158
Joined: 04 Jan 2019, 23:40
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

04 Mar 2019, 10:54

asta e sursa
| Afiseaza codul
#include < amxmodx >
#include < amxmisc >
#include < nvault >

#define PLUGIN "Admins activity"
#define VERSION "0.1"


#define MAX_WARN	5 

new g_szFile[ 64 ];
new const g_szFileName[ ] = "admini.ini" 		/* Numele la fisierul de unde sunt incarcate datele fiecarui admin */

new g_iPlayerStats[ 33 ];
new g_iPlayerMinutes[ 33 ];
new g_iPlayerWarn[ 33 ];

new g_iHourPlayer[ 33 ];


public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "falcao" );
	
	/* Verificare fisier */
	
	get_configsdir( g_szFile, sizeof( g_szFile ) -1 );
	format( g_szFile, sizeof( g_szFile ) -1, "%s/%s", g_szFile, g_szFileName );
	
	if( !file_exists( g_szFile ) )
	{
		write_file( g_szFile, "; Activitate admini", -1 );
	}
	
	/* Clcmd */
	
	register_clcmd( "say /warn", "cmdWarn" );
	register_clcmd( "say /program", "cmdProgram" );
}

public client_putinserver( id )
{
	new iHour, iMinute;
	time( iHour, iMinute, _ );

	
		LoadHours( id );
		
		set_task( 60.0, "adaugareMinut", id, _, _, "b", _ );
		
		static szName[ 32 ];
		get_user_name( id, szName, sizeof( szName ) -1 );
		
		set_task( 3.0, "verifyPlayer", id );
		
		if( g_iPlayerWarn[ id ] >= MAX_WARN )
		{
			new szFile = fopen( "addons/amxmodx/configs/users.ini", "r" );
			
			if( !szFile )
				return 1;
			
			new szData[ 512 ], szParseName[ 32 ], szParsePassword[ 32 ], szParseFlags[ 32 ], szParseRFlags[ 32 ], iLine;
			
			while( !feof( szFile ) )
			{
				fgets( szFile, szData, sizeof( szData ) -1 );
				
				if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
					continue;
					
				parse( szData, szParseName, sizeof( szParseName ) -1, szParsePassword, sizeof( szParsePassword ) -1, szParseFlags, sizeof( szParseFlags ) -1, szParseRFlags, sizeof( szParseRFlags ) -1 );
				
				if( equali( szParseName, szName ) )
				{
					new szPlayerInfo[ 256 ];
					format( szPlayerInfo, sizeof( szPlayerInfo ) -1, "; ^"%s^" ^"%s^" ^"%s^" ^"%s^"", szParseName, szParsePassword, szParseFlags, szParseRFlags );
					
					write_file( "addons/amxmodx/configs/users.ini", szPlayerInfo, iLine );
					
					g_iPlayerWarn[ id ] = 0;
					
					set_task( 3.0, "mesajWarn", id );
				}
				
				iLine++;
			}
			
			fclose( szFile );
		} 
	
	return 1;
}

public mesajWarn( id )
{
	C_PrintChat( id, "Ai facut !v5!c/!v5!c warn-uri. Adminul tau a fost oprit." );
}

public cmdWarn( id )
{
	new szFile = fopen( g_szFile, "r" );
	
	if( !szFile )
		return 1;
	
	new szData[ 512 ], szParseName[ 32 ], szParseHours[ 32 ];
	
	while( !feof( szFile ) )
	{
		fgets( szFile, szData, sizeof( szData ) -1 );
		
		if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
			continue;
		
		parse( szData,\
			szParseName, sizeof( szParseName ),\
			szParseHours, sizeof( szParseHours ) );
		
		static szName[ 32 ];
		get_user_name( id, szName, sizeof( szName ) -1 );
		
		if( equali( szParseName, szName ) ) 
		{
			C_PrintChat( id, "Ai !v%i!c/!v%i!c warn-uri, respectati programul zilnic sau primesti remove.", g_iPlayerWarn[ id ], MAX_WARN );
		}
	}
	
	fclose( szFile );
	
	return 1;
}

public cmdProgram( id )
{
	if( get_user_flags( id ) & ADMIN_SLAY )
	{
		new szFile = fopen( g_szFile, "r" );
		
		if( !szFile )
			return 1;
		
		new szData[ 512 ], szParseName[ 32 ], szParseHours[ 32 ];
		
		while( !feof( szFile ) )
		{
			fgets( szFile, szData, sizeof( szData ) -1 );
			
			if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
				continue;
			
			parse( szData, szParseName, sizeof( szParseName ), szParseHours, sizeof( szParseHours ) );
			
			static szName[ 32 ];
			get_user_name( id, szName, sizeof( szName ) -1 );

			if( equali( szParseName, szName ) ) 
			{
				C_PrintChat( id, "Mai ai !v%i!c ore pana iti termini programul de azi.", g_iHourPlayer[ id ] );
			}
		}
		
		fclose( szFile );
	}
	
	else
	{
		C_PrintChat( id, "Ne pare rau, dar nu ai admin pe server." );
	}
	
	return 1;
}

public client_disconnect( id )
{
	new iHour, iMinute;
	time( iHour, iMinute, _ );

	
		SaveHours( id );
	
}

public adaugareMinut( id )
{
	if( is_user_connected( id ) && !is_user_bot( id ) )
	{
		g_iPlayerStats[ id ] += 1;
		
		if( g_iPlayerMinutes[ id ] >= 60 )
		{
			g_iHourPlayer[ id ] -= 1;
			g_iPlayerStats[ id ] += 1;
			g_iPlayerMinutes[ id ] -= 60;
		}
	}
}

public verifyPlayer( id )
{
	new szFile = fopen( g_szFile, "r" );
	
	if( !szFile )
		return 1;
	
	new szData[ 512 ], szParseName[ 32 ], szParseHours[ 32 ];
	
	static szName[ 32 ];
	get_user_name( id, szName, sizeof( szName ) -1 );
	
	while( !feof( szFile ) )
	{
		fgets( szFile, szData, sizeof( szData ) -1 );
		
		if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/' )
			continue;
		
		parse( szData, szParseName, sizeof( szParseName ), szParseHours, sizeof( szParseHours ) );
		
		if( equali( szParseName, szName ) ) 
		{
			if( g_iPlayerStats[ id ] >= str_to_num( szParseHours ) )
			{
				log_to_file( "activity_admins.log", "%s si-a respectat programul cu %i/%i ore.", szName, g_iPlayerStats[ id ], str_to_num( szParseHours ) );	
			}
			
			else
			{
				log_to_file( "activity_admins.log", "%s a stat doar %i minute pe server. A primit 1 warn.", szName, g_iPlayerStats[ id ], str_to_num( szParseHours ), g_iPlayerMinutes[ id ] );
				
				C_PrintChat( id, "Atentie ! Azi ai facut !v%i!c minute. Trebuie sa stai minim !v%i!c ore.", g_iPlayerMinutes[ id ], str_to_num( szParseHours ), str_to_num( szParseHours ) );
				C_PrintChat( id, "Ai primit !v1!c warn, pentru ca nu ai stat !v%i!c ore. (!v%i!c/!v%i!c)", str_to_num( szParseHours ), g_iPlayerStats[ id ], str_to_num( szParseHours ) );
				
				g_iPlayerWarn[ id ] += 1;
			}
			
			g_iHourPlayer[ id ] =  str_to_num( szParseHours );
		}
	}
	
	fclose( szFile );
	
	return 1;
}
		
public LoadHours( id )
{
	new szVaultData[ 256 ], szVaultKey[ 32 ];
	
	static szName[ 32 ];
	get_user_name( id, szName, sizeof( szName ) -1 );
	
	format( szVaultKey, sizeof( szVaultKey ) -1, "%s", szName );
	format( szVaultData, sizeof( szVaultData ) -1, "%i#%i#%i", g_iPlayerStats[ id ], g_iPlayerMinutes[ id ], g_iPlayerWarn[ id ] );	
	
	new szVaultFile = nvault_open( "_file_activity_adm" );
	nvault_get( szVaultFile, szVaultKey, szVaultData, sizeof( szVaultData ) -1 );
	
	replace_all( szVaultData, sizeof( szVaultData ), "#", " " );
	
	new iHours[ 32 ], iWarn[ 33 ], iMinutes[ 33 ];
	parse( szVaultData,\
		iHours, sizeof( iHours ) -1,\
		iWarn, sizeof( iWarn ) -1,\
		iMinutes, sizeof( iMinutes ) -1 );
	
	g_iPlayerStats[ id ] = str_to_num( iHours );
	g_iPlayerWarn[ id ] = str_to_num( iWarn );
	g_iPlayerMinutes[ id ] = str_to_num( iMinutes );
}

public SaveHours( id )
{
	new szVaultData[ 256 ], szVaultKey[ 32 ];
	
	static szName[ 32 ];
	get_user_name( id, szName, sizeof( szName ) -1 );
	
	format( szVaultKey, sizeof( szVaultKey ) -1, "%s", szName );
	format( szVaultData, sizeof( szVaultData ) -1, "%i#%i#%i", g_iPlayerStats[ id ], g_iPlayerMinutes[ id ], g_iPlayerWarn[ id ] );
	
	new szVaultFile = nvault_open( "_file_activity_adm" );
	nvault_set( szVaultFile, szVaultKey, szVaultData );
}

stock C_PrintChat( const id, const szInput[ ], any:... )
{
	new iPlayers[ 32 ], iNum = 1;
	
	static szMsg[ 320 ], szMsg2[ 320 ];
	
	vformat( szMsg, sizeof( szMsg ) -130, szInput, 3 );
	format( szMsg2, sizeof( szMsg2 ) -130, "!c[!vHNS!c] %s", szMsg );
	
	replace_all( szMsg2, sizeof( szMsg ) -130, "!v", "^x04" );
	replace_all( szMsg2, sizeof( szMsg ) -130, "!c", "^x01" );
	replace_all( szMsg2, sizeof( szMsg ) -130, "!e", "^x03" );
	
	if( id )
	{
		iPlayers[ 0 ] = id;
	}
	
	else
	{
		get_players( iPlayers, iNum, "c" );
	}
	
	for( new i = 0; i < iNum; i++ )
	{
		if( is_user_connected( iPlayers[ i ] ) )
		{
			message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, iPlayers[ i ] );
			
			write_byte( iPlayers[ i ] );
			write_string( szMsg2 );
			
			message_end( );
		}
	}
}



probleme , la retry iei warn nu stiu de ce https://i.imgur.com/o3kh53W.png si nu se salveaza minutele warn chestii de genu mai pe scurt nu se salveaza cat stai pe sv .. sper sa poti levin sa-l faci
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

04 Mar 2019, 14:17

eu văd că merge bine, ai luat warn că nu ai stat 4 ore, ci doar 1 minut
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
nikod1606
Membru, skill +1
Membru, skill +1
Posts: 158
Joined: 04 Jan 2019, 23:40
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

04 Mar 2019, 15:56

testeaza cand da-i retry sa vezi ca iti da warn .. si uite logs din admin activity L 03/04/2019 - 10:47:58: Log file started (file "cstrike/addons/amxmodx/logs/activity_admins.log") (game "cstrike") (amx "1.8.2-dev")
L 03/04/2019 - 10:47:58: Nikod a stat doar 1 minute pe server. A primit 1 warn.
L 03/04/2019 - 10:49:24: Nikod a stat doar 2 minute pe server. A primit 1 warn.
L 03/04/2019 - 10:50:41: Nikod a stat doar 2 minute pe server. A primit 1 warn.
L 03/04/2019 - 10:52:12: Nikod si-a respectat programul cu 6/4 ore.
L 03/04/2019 - 10:52:43: Nikod si-a respectat programul cu 7/4 ore.
L 03/04/2019 - 13:18:48: Nikod si-a respectat programul cu 24/4 ore.
L 03/04/2019 - 13:19:29: Nikod si-a respectat programul cu 25/4 ore.
cand s-au inregistrat 25 de ore ? de la 10 la 13 ? ...
el e facut pe ziua respectiva sa nu iesi deloc cred 4 ore incontinu , dar daca da-i retry sa ti se pastreze minutele pe care le-ai jucat in ziua respectiva si poti sa-l faci si fiind un raport saptamanal ..
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

04 Mar 2019, 19:57

Code: Select all

#include < amxmodx >
#include < amxmisc >
#include < nvault >

#define PLUGIN "Admins activity"
#define VERSION "0.1"

#pragma tabsize 0
#define MAX_WARN	5 

new g_szFile[ 128 ];
new const g_szFileName[ ] = "admini.ini" 		/* Numele la fisierul de unde sunt incarcate datele fiecarui admin */

new g_iPlayerWarn[ 33 ];
new g_iPlayerMinutes[ 33 ];
new g_iHourPlayer[ 33 ];
new szName[ 33 ][32];

new szData[ 512 ], szParseName[ 32 ], szParsePassword[ 32 ], szParseFlags[ 32 ], szParseRFlags[ 32 ], iLine,
szParseHours[ 32 ],szFile,szVaultData[ 256 ], szVaultKey[ 32 ];

new const nVault_Name[]="Activitate_Admini"
new g_vault

public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "falcao" );
	
	/* Verificare fisier */
	
	get_configsdir( g_szFile, sizeof( g_szFile ) -1 );
	formatex( g_szFile, sizeof( g_szFile ) -1, "%s/%s", g_szFile, g_szFileName );
	
	if( !file_exists( g_szFile ) )
	{
		write_file( g_szFile, "; Adaugare ^"nume admin^" ^"ore necesare^"^n; Pentru evitarea citirii cuiva pune ^";^" in fata sa.");
	}
	
	/* Clcmd */
	
	register_clcmd( "say /warn", "cmdWarn" );
	register_clcmd( "say /program", "cmdProgram" );
	
	
	g_vault = nvault_open(nVault_Name)
	if(g_vault == INVALID_HANDLE)
		set_fail_state("Eroare la deschiderea bazei de date din vault.")
	
	set_task(5.0,"read_vault",_,_,_,"b")
}

public read_vault() {
	new iPlayers[32],iNum,id,i;
	get_players(iPlayers,iNum,"c");
	for(i = 0; i < iNum; i++)
	{
		id = iPlayers[i];
		if(!is_user_admin(id))	continue;
		SaveHours(id);
	}
}

public client_infochanged(id) {
	SaveHours(id);
	new newname[32];
	get_user_info(id,"name",newname,charsmax(newname));
	if(!equal(newname,szName[id]))
	{
		set_task(0.3,"LoadHours",id);
		copy( szName[ id ], charsmax(szName[]), newname );
	}
}

public client_putinserver( id )
{
	if(is_user_bot(id)||!is_user_admin(id))	return;
	
	get_user_name( id, szName[id], charsmax(szName[]) );
	
	LoadHours( id );
	
	set_task( 3.0, "verifyPlayer", id );
	
	set_task( 60.0, "adaugareMinut", id, _, _, "b");
}

public client_disconnect( id )
{	
	SaveHours( id );
	remove_task(id);
}

public adaugareMinut( id )
{
	if( is_user_connected( id ) )
	{
		g_iPlayerMinutes[ id ]++;
		
		if( g_iPlayerMinutes[ id ] == 60 )
		{
			g_iHourPlayer[ id ] ++;
			g_iPlayerMinutes[ id ] = 0;
		}
	}
}

public verifyPlayer( id )
{
	szFile = fopen( g_szFile, "rt" );
	
	if( !szFile )
		return 1;
	
	while( !feof( szFile ) )
	{
		fgets( szFile, szData, sizeof( szData ) -1 );
		
		if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/'||!szData[0] )
			continue;
		
		parse( szData, szParseName, sizeof( szParseName ), szParseHours, sizeof( szParseHours ) );
		
		if( equal( szParseName, szName[id] ) ) 
		{
			if( g_iHourPlayer[ id ] >= str_to_num( szParseHours ) )
			{
				log_to_file( "activity_admins.log", "%s si-a respectat programul cu %d/%d or%s.", szName[id], g_iHourPlayer[ id ], str_to_num( szParseHours ),str_to_num( szParseHours )==1?"a":"e" );	
			}
			else
			{
				log_to_file( "activity_admins.log", "%s a stat doar %d minut%s pe server. A primit +1 warn.", szName[id], g_iPlayerMinutes[ id ],g_iPlayerMinutes[ id ]==1?"":"e" );
				
				C_PrintChat( id, "Atentie ! Azi ai facut !v%d!c minut%s. Trebuie sa stai minim !v%d!c or%s.", g_iPlayerMinutes[ id ],g_iPlayerMinutes[ id ]==1?"":"e", str_to_num( szParseHours ), str_to_num( szParseHours )==1?"a":"e" );
				C_PrintChat( id, "Ai primit !v+1!c warn, pentru ca nu ai stat !v%d!c or%s. (!v%d!c/!v%d!c)", str_to_num( szParseHours ),str_to_num( szParseHours )==1?"a":"e", g_iHourPlayer[ id ], str_to_num( szParseHours ) );
				
				if(++g_iPlayerWarn[ id ]>=MAX_WARN)	check_access(id)
				else	g_iPlayerWarn[ id ] ++;
			}
			
			break;
		}
	}
	
	fclose( szFile );
	
	return 1;
}

public mesajWarn( id )
{
	C_PrintChat( id, "Ai facut !v%d!c/!v%d!v warn!c-uri.!e Adminul tau a fost oprit!c.",MAX_WARN,MAX_WARN );
	//remove_task(id);
	return PLUGIN_HANDLED;
}

public check_access(id)
{
	if( g_iPlayerWarn[ id ] >= MAX_WARN )
	{
		szFile = fopen( "addons/amxmodx/configs/users.ini", "rt" );
		
		if( !szFile )
			return;
		
		while( !feof( szFile ) )
		{
			fgets( szFile, szData, sizeof( szData ) -1 );
			
			if( szData[ 0 ] == ';' || !szData[0])
				continue;
			
			parse( szData, szParseName, sizeof( szParseName ) -1, szParsePassword, sizeof( szParsePassword ) -1, szParseFlags, sizeof( szParseFlags ) -1, szParseRFlags, sizeof( szParseRFlags ) -1 );
			
			if( equal( szParseName, szName[id] ) )
			{
				new szPlayerInfo[ 256 ];
				formatex( szPlayerInfo, sizeof( szPlayerInfo ) -1, "; ^"%s^" ^"%s^" ^"%s^" ^"%s^"", szParseName, szParsePassword, szParseFlags, szParseRFlags );
				
				write_file( "addons/amxmodx/configs/users.ini", szPlayerInfo, iLine );
				
				g_iPlayerWarn[ id ] = 0;
				
				log_to_file( "activity_admins.log", "%s a primit remove pentru nerespectarea programului impus.", szName[id] );
				
				set_task( 3.0, "mesajWarn", id );
				
				break;
			}
			
			iLine++;
		}
		
		fclose( szFile );
	}
}

public cmdWarn( id )
{
	szFile = fopen( g_szFile, "rt" );
	
	if( !szFile )
		return 1;
	
	while( !feof( szFile ) )
	{
		fgets( szFile, szData, sizeof( szData ) -1 );
		
		if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/'||!szData[0] )
			continue;
		
		parse( szData,\
		szParseName, sizeof( szParseName ),\
		szParseHours, sizeof( szParseHours ) );
		
		if( equal( szParseName, szName[id] ) ) 
		{
			if(g_iPlayerWarn[ id ]<MAX_WARN)	C_PrintChat( id, "Ai !v%d!c/!v%d!c warn-uri, respectati programul zilnic sau primesti!e remove!c.", g_iPlayerWarn[ id ], MAX_WARN );
			else if(g_iPlayerWarn[ id ]>=MAX_WARN)	C_PrintChat( id, "Ai primit!v remove!c din cauza acumularii a!v %d!c/!v%d!e WARN!c-uri.", MAX_WARN,MAX_WARN );
				break
		}
	}
	
	fclose( szFile );
	
	return 1;
}

public cmdProgram( id )
{
	if( is_user_admin(id) )
	{
		szFile = fopen( g_szFile, "rt" );
		
		if( !szFile )
			return 1;
		
		while( !feof( szFile ) )
		{
			fgets( szFile, szData, sizeof( szData ) -1 );
			
			if( szData[ 0 ] == ';' || szData[ 0 ] == '!' || szData[ 0 ] == '/' && szData[ 1 ] == '/'||!szData[0] )
				continue;
			
			parse( szData, szParseName, sizeof( szParseName ), szParseHours, sizeof( szParseHours ) );
			
			if( equal( szParseName, szName[id] ) ) 
			{
				C_PrintChat( id, "Mai ai !v%i!c or%s pana iti termini programul de azi.", g_iHourPlayer[ id ],g_iHourPlayer[ id ]==1?"a":"e" );
				break;
			}
		}
		
		fclose( szFile );
	}
	else
	{
		C_PrintChat( id, "Ne pare rau, dar nu ai admin pe server." );
	}
	
	return 1;
}

public LoadHours( id )
{	
	formatex( szVaultKey, sizeof( szVaultKey ) -1, "%s", szName[id] );
	formatex( szVaultData, sizeof( szVaultData ) -1, "%d %d %d", g_iHourPlayer[ id ], g_iPlayerMinutes[ id ], g_iPlayerWarn[ id ] );	
	
	nvault_get( g_vault, szVaultKey, szVaultData, sizeof( szVaultData ) -1 );
	
	new iHours[ 32 ], iWarn[ 33 ], iMinutes[ 33 ];
	parse( szVaultData,\
	iHours, sizeof( iHours ) -1,\
	iWarn, sizeof( iWarn ) -1,\
	iMinutes, sizeof( iMinutes ) -1 );
	
	g_iHourPlayer[ id ] = str_to_num( iHours );
	g_iPlayerWarn[ id ] = str_to_num( iWarn );
	g_iPlayerMinutes[ id ] = str_to_num( iMinutes );
}

public SaveHours( id )
{
	formatex( szVaultKey, sizeof( szVaultKey ) -1, "%s", szName[id] );
	formatex( szVaultData, sizeof( szVaultData ) -1, "%d %d %d", g_iHourPlayer[ id ], g_iPlayerMinutes[ id ], g_iPlayerWarn[ id ] );
	
	nvault_set( g_vault, szVaultKey, szVaultData );
}

public plugin_end() nvault_close(g_vault)

stock C_PrintChat( const id, const szInput[ ], any:... )
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), szInput, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!c", "^1");
	replace_all(szMesage, charsmax(szMesage), "!e", "^3");
	replace_all(szMesage, charsmax(szMesage), "!v", "^4");
	replace_all(szMesage, charsmax(szMesage), "!e2", "^0");
	
	static g_msg_SayText = 0;
	if(!g_msg_SayText)	g_msg_SayText = get_user_msgid("SayText");
	
	new Players[32], iNum = 1, i;
	
	if(id) Players[0] = id;
	else get_players(Players, iNum, "ch");
	
	for(--iNum; iNum >= 0; iNum--) 
	{
		i = Players[iNum];
		
		message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i);
		write_byte(i);
		write_string(szMesage);
		message_end();
	}
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 2 guests