Ore jucate pe server in total.

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
User avatar
Alexandru
Fost moderator
Fost moderator
Posts: 1283
Joined: 09 Sep 2008, 00:41
Detinator Steam: Nu
CS Status: Nu mă vedeţi, nu sunt aici.
Reputatie: Fost moderator
Nume anterior: Al3s5uL
1.3 / 3
Location: Moş Crăciun şi prietenii săi!
Has thanked: 41 times
Been thanked: 89 times

18 Dec 2009, 14:24

Vreau si eu un plugin care, daca tastezi in chat o comanda, sa-ti arate totalul de ore jucate pe server. Chestia e ca am gasit un plugin pentru asa ceva aici, dar este numai pe IP sau SteamID. Eu il vreau sa salveze pe nick, cum eu nu stiu sa modific plugin-uri, m-am gandit sa va cer ajutorul pentru asta.

Multumesc anticipat.
Va astept personal pe MNX Counter Strike Community, nu veti regreta! Va garantez!

Image
User avatar
Ciprian
Fost administrator
Fost administrator
Posts: 5172
Joined: 10 May 2008, 21:29
Detinator Steam: Da
CS Status: ^^
SteamID: crazycipry
Reputatie: Fost administrator
Fost Scripter eXtreamCS
Fost Supervizor CS.eXtreamCS.com
Fost Unbanner ZM.eXtreamCS.com
Fost Contribuitor
Nume anterior: crazy.cipry
Location: Baia Mare
Has thanked: 177 times
Been thanked: 405 times

18 Dec 2009, 14:59

Vezi asta:
PlayedTime | Afiseaza codul
/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < nvault >

#define PLUGIN "PlayedTime"
#define VERSION "1.0"
#define AUTHOR "crazy.cipry"

new const g_Commands[ ] [ ] = {
	"say /orejucate",
	"say_team /orejucate"
}

new g_Nvault;

public plugin_init ( ) {
	register_plugin ( PLUGIN, VERSION, AUTHOR );
	
	for ( new i = 0; i < sizeof ( g_Commands ); i++ )
		register_clcmd ( g_Commands[ i ], "cmdOreJucate" );

	g_Nvault = nvault_open ( "Played_Time" );
}

public client_disconnect ( id ){
	new name[ 32 ], vaultkey[ 64 ], vaultdata[ 64 ], TimeStamp, szTime[ 8 ], CurrentTime, TotalPlayedTime;
	
	get_user_name ( id, name, charsmax ( name ) );
	formatex ( vaultkey, charsmax ( vaultkey ), "%s", name );
	
	CurrentTime = get_user_time ( id, 1 );
	TotalPlayedTime = 0;
	
	if ( nvault_lookup ( g_Nvault, vaultkey, szTime, charsmax ( szTime ), TimeStamp ) ) {
		TotalPlayedTime = str_to_num ( szTime ) + CurrentTime;
		formatex ( vaultdata, charsmax ( vaultdata ), "%d", TotalPlayedTime );
	}
	else 
		formatex ( vaultdata, charsmax ( vaultdata ), "%d", CurrentTime );
	
	nvault_set ( g_Nvault, vaultkey, vaultdata );
	nvault_close ( g_Nvault );
}

public cmdOreJucate ( id ) {
	new OreJucate, name[ 32 ], szTime[ 8 ], TimeStamp;
	
	get_user_name ( id, name, charsmax ( name ) );
	
	if ( nvault_lookup ( g_Nvault, name, szTime, charsmax ( szTime ), TimeStamp ) )
		OreJucate = str_to_num ( szTime ) + get_user_time ( id );
	else
		OreJucate = get_user_time ( id );
	
	client_print ( id, print_chat, "You have played on this server for %d h.", OreJucate );
	
	return PLUGIN_CONTINUE;
}
Sau iti inscrii serverul pe gametracker.
User avatar
Alexandru
Fost moderator
Fost moderator
Posts: 1283
Joined: 09 Sep 2008, 00:41
Detinator Steam: Nu
CS Status: Nu mă vedeţi, nu sunt aici.
Reputatie: Fost moderator
Nume anterior: Al3s5uL
1.3 / 3
Location: Moş Crăciun şi prietenii săi!
Has thanked: 41 times
Been thanked: 89 times

18 Dec 2009, 15:20

L-am pus, contorizeaza doar pentru sesiunea cand m-am conectat pe server. Daca dau retry o ia de la capat. Am pus debug in dreptul lui si imi da eroarea asta:

Code: Select all

[AMXX] Run time error 10: native error (native "nvault_lookup")
[AMXX]    [0] ore.sma::cmdOreJucate (line 51)
IP dinamic, deci optiunea asta cade.
Va astept personal pe MNX Counter Strike Community, nu veti regreta! Va garantez!

Image
User avatar
burn09
Membru, skill +2
Membru, skill +2
Posts: 549
Joined: 16 Dec 2008, 23:02
Detinator Steam: Da
CS Status: CSDM Project
Detinator server CS: Inchis din 2011.
SteamID: burnnn669
Location: Bucuresti
Has thanked: 27 times
Been thanked: 47 times

18 Dec 2009, 19:06

ai activat modulul nvault?
User avatar
Alexandru
Fost moderator
Fost moderator
Posts: 1283
Joined: 09 Sep 2008, 00:41
Detinator Steam: Nu
CS Status: Nu mă vedeţi, nu sunt aici.
Reputatie: Fost moderator
Nume anterior: Al3s5uL
1.3 / 3
Location: Moş Crăciun şi prietenii săi!
Has thanked: 41 times
Been thanked: 89 times

18 Dec 2009, 19:25

Da, am verificat asta.
Va astept personal pe MNX Counter Strike Community, nu veti regreta! Va garantez!

Image
User avatar
Ciprian
Fost administrator
Fost administrator
Posts: 5172
Joined: 10 May 2008, 21:29
Detinator Steam: Da
CS Status: ^^
SteamID: crazycipry
Reputatie: Fost administrator
Fost Scripter eXtreamCS
Fost Supervizor CS.eXtreamCS.com
Fost Unbanner ZM.eXtreamCS.com
Fost Contribuitor
Nume anterior: crazy.cipry
Location: Baia Mare
Has thanked: 177 times
Been thanked: 405 times

18 Dec 2009, 19:54

burn09 wrote:ai activat modulul nvault?
Oricum se activeaza singur daca nu e activat. Alesule, imi pare rau, dar nu am reusit sa-i dau de cap erorii aleia.
User avatar
Alexandru
Fost moderator
Fost moderator
Posts: 1283
Joined: 09 Sep 2008, 00:41
Detinator Steam: Nu
CS Status: Nu mă vedeţi, nu sunt aici.
Reputatie: Fost moderator
Nume anterior: Al3s5uL
1.3 / 3
Location: Moş Crăciun şi prietenii săi!
Has thanked: 41 times
Been thanked: 89 times

19 Dec 2009, 13:28

Nu-i nimic, e altcineva care ma poate ajuta pe aici?:D
Va astept personal pe MNX Counter Strike Community, nu veti regreta! Va garantez!

Image
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:

19 Dec 2009, 23:07

Vezi asta + nu mai trebuie modul
| Afiseaza codul
[code]#include < amxmodx >

#define PLUGIN "Played Time"
#define VERSION "1.0"
#define AUTHOR "aNNakin"

#define _vault_dir "addons/amxmodx/data/file_vault"

// - - -
new const gs_VaultName[ ] = "PlayedTime";
// - - -

new gi_PlayedTime[ 33 ];

public plugin_init ( )
{
	register_plugin ( PLUGIN, VERSION, AUTHOR );
	register_clcmd ( "say /playedtime", "playedtime_cmd" );
}

public client_disconnect ( id )
	SaveTime ( id );
public client_putinserver ( id )
	LoadTime ( id );
	
public SaveTime ( id )
{
	gi_PlayedTime[ id ] += get_user_time ( id );
	
	new s_Name[ 32 ], s_Data[ 16 ];
	get_user_name ( id, s_Name, 31 );
	num_to_str ( gi_PlayedTime[ id ], s_Data, charsmax ( s_Data ) );
    
	fvault_set_data ( gs_VaultName, s_Name, s_Data );
}

public LoadTime ( id )
{
	new s_Name[ 32 ], s_Data[ 16 ];
	get_user_name ( id, s_Name, 31 );
    
	if ( fvault_get_data ( gs_VaultName, s_Name, s_Data, charsmax ( s_Data ) ) )
		gi_PlayedTime[ id ] = str_to_num ( s_Data );
	else
		gi_PlayedTime[ id ] = 0;
}

public playedtime_cmd ( id )
{
	new i_Total = gi_PlayedTime[ id ] + get_user_time ( id );
	
	if ( i_Total < 60 )
		client_print ( id, print_chat, "Timp total: %d secunde", i_Total );
	else if ( i_Total >= 60 && i_Total < 3600 )
		client_print ( id, print_chat, "Timp total: %d minute", ( i_Total / 60 ) );
	else if ( i_Total >= 3600 )
		client_print ( id, print_chat, "Timp total: %d ore si %d minute", ( i_Total / 3600 ), ( i_Total % 3600 ) );
	
	return 0;
}

// - - -

fvault_set_data(const vaultname[], const key[], const data[])
{
	static const temp_vault_name[] = "fvault_set_data.txt";
	
	new file = fopen(temp_vault_name, "wt");
	
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64], _other[3];
	
	new bool:replaced = false;
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, _other, sizeof(_other) - 1);
		
		if( equal(_key, key) && !replaced )
		{
			fprintf(file, "^"%s^" ^"%s^"^n", key, data);
			
			replaced = true;
		}
		else
		{
			fputs(file, _data);
		}
	}
	
	if( !replaced )
	{
		fprintf(file, "^"%s^" ^"%s^"^n", key, data);
	}
	
	fclose(file);
	fclose(vault);
	
	delete_file(filename);
	
	while( !rename_file(temp_vault_name, filename, 1) ) { }
	
	//delete_file(temp_vault_name);
}

fvault_get_data(const vaultname[], const key[], data[], len)
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64];
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, data, len);
		
		if( equal(_key, key) )
		{
			fclose(vault);
			
			return 1;
		}
	}
	
	fclose(vault);
	
	copy(data, len, "");
	
	return 0;
}

_FormatVaultName(const vaultname[], filename[], len)
{
	static const invalid_chars[][] =
	{
		"/", "\", "*", ":", "?", "^"", "<", ">", "|"
	};
	
	static tempvault[128], i;
	copy(tempvault, sizeof(tempvault) - 1, vaultname);
	
	for( i = 0; i < sizeof(invalid_chars); i++ )
	{
		replace(tempvault, sizeof(tempvault) - 1, invalid_chars, "");
	}
	
	if( !dir_exists(_vault_dir) )
	{
		mkdir(_vault_dir);
	}
	
	formatex(filename, len, "%s/%s.txt", _vault_dir, tempvault);
}[/code]
User avatar
Alexandru
Fost moderator
Fost moderator
Posts: 1283
Joined: 09 Sep 2008, 00:41
Detinator Steam: Nu
CS Status: Nu mă vedeţi, nu sunt aici.
Reputatie: Fost moderator
Nume anterior: Al3s5uL
1.3 / 3
Location: Moş Crăciun şi prietenii săi!
Has thanked: 41 times
Been thanked: 89 times

20 Dec 2009, 18:46

Multumesc frumos, merge. Dar mai am o mica cerinta la el, daca se poate. Atunci cand scriu /playedtime nume, sa apara timpul acelui jucator.
Iar optional, daca stii si nu-ti ia prea mult timp, sa faci un top 15 al celor mai activi jucatori pe server.
Va astept personal pe MNX Counter Strike Community, nu veti regreta! Va garantez!

Image
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:

20 Dec 2009, 19:50

| Afiseaza codul
[code]#include < amxmodx >
#include < amxmisc >

#define PLUGIN "Played Time"
#define VERSION "1.0"
#define AUTHOR "aNNakin"

#define _vault_dir "addons/amxmodx/data/file_vault"

// - - - - - - - - -

// * numele fisierului unde se salveaza timpuljucat
new const gs_VaultName[ ] = "PlayedTime";

// * comanda say /timeplayed nume
new const gs_Command[ ] = "/timeplayed";

//* caracterul din fata comenzii
new const gs_Char[ ] = "/";

// * primii x jucatori care vor fi afisati in top
#define TOP_PLAYERS	15

// - - - - - - - - -

new gi_PlayedTime[ 33 ];
new g_Sort[ 33 ][ 2 ];

public plugin_init ( )
{
	register_plugin ( PLUGIN, VERSION, AUTHOR );
	register_clcmd ( "say /playedtime", "playedtime_cmd" );
	register_clcmd ( "say /topplayedtime", "show_top" );
	
	register_clcmd ( "say", "hook_say" );
	
	new s_Console[ 32 ], s_Command[ 32 ];
	copy ( s_Console, charsmax ( s_Console ), gs_Command );
	replace ( s_Console, charsmax ( s_Console ), gs_Char, "" );
	formatex ( s_Command, charsmax ( s_Command ),"amx_%s", s_Console );
	register_concmd ( s_Command, "playedtime_console" );
}

public client_disconnect ( id )
	SaveTime ( id );
public client_putinserver ( id )
	LoadTime ( id );
	
public SaveTime ( id )
{
	gi_PlayedTime[ id ] += get_user_time ( id );
	
	new s_Name[ 32 ], s_Data[ 16 ];
	get_user_name ( id, s_Name, 31 );
	num_to_str ( gi_PlayedTime[ id ], s_Data, charsmax ( s_Data ) );
    
	fvault_set_data ( gs_VaultName, s_Name, s_Data );
}

public LoadTime ( id )
{
	new s_Name[ 32 ], s_Data[ 16 ];
	get_user_name ( id, s_Name, 31 );
    
	if ( fvault_get_data ( gs_VaultName, s_Name, s_Data, charsmax ( s_Data ) ) )
		gi_PlayedTime[ id ] = str_to_num ( s_Data );
	else
		gi_PlayedTime[ id ] = 0;
}

public playedtime_cmd ( id )
{
	new i_Total = gi_PlayedTime[ id ] + get_user_time ( id );
	
	if ( i_Total < 60 )
		client_print ( id, print_chat, "Timp total: %d secunde", i_Total );
	else if ( i_Total >= 60 && i_Total < 3600 )
		client_print ( id, print_chat, "Timp total: %d minute", ( i_Total / 60 ) );
	else if ( i_Total >= 3600 )
		client_print ( id, print_chat, "Timp total: %d ore si %d minute", ( i_Total / 3600 ), ( i_Total % 3600 ) );
	
	return 0;
}

public hook_say ( e_Index )
{
	static s_Args[ 192 ], s_Command[ 192 ];
	read_args ( s_Args, charsmax ( s_Args ) );
	
	remove_quotes ( s_Args[ 0 ] );
	if ( ! s_Args[ 0 ] )
		return PLUGIN_CONTINUE;
		
	if ( equal ( s_Args, gs_Command, strlen ( gs_Command ) ) )
	{
		replace ( s_Args, charsmax ( s_Args ), gs_Char, "" );
		formatex ( s_Command, charsmax ( s_Command ),"amx_%s", s_Args );
		client_cmd ( e_Index, s_Command );
	}
	
	return PLUGIN_CONTINUE;
}
	
public playedtime_console ( id )
{
	new s_Arg[ 32 ];
	read_argv ( 1, s_Arg, 31 );
	
	new e_Target = cmd_target ( id, s_Arg, 31 );
	if ( ! e_Target )
		return PLUGIN_HANDLED;
	
	new s_Name[ 32 ];
	get_user_name ( e_Target, s_Name, 31 );
	
	new i_Total = gi_PlayedTime[ e_Target ] + get_user_time ( e_Target );
	
	if ( i_Total < 60 )
		client_print ( id, print_chat, "Timp total %s: %d secunde", s_Name, i_Total );
	else if ( i_Total >= 60 && i_Total < 3600 )
		client_print ( id, print_chat, "Timp total %s: %d minute", s_Name, ( i_Total / 60 ) );
	else if ( i_Total >= 3600 )
		client_print ( id, print_chat, "Timp total %s: %d ore si %d minute", s_Name, ( i_Total / 3600 ), ( i_Total % 3600 ) );
		
	return PLUGIN_HANDLED;
}

public show_top ( id )
{
	new players[ 32 ], index, count, num, i;
	get_players( players, num );
	
	for( ; i < num; i++ )
	{
		index = players[ i ];
		
		g_Sort[ count ][ 0 ] = index;
		g_Sort[ count ][ 1 ] = gi_PlayedTime[ index ];
		
		count++;
	}
	
	SortCustom2D( g_Sort, count, "time_compare" );
	
	new Motd[ 1024 ], Len;	
	
	Len = format( Motd, charsmax( Motd ),"<body bgcolor=#000000><font color=#98f5ff><pre>" );
	Len += format( Motd[ Len ], charsmax( Motd ) - Len,"%s %-22.22s %3s^n", "#", "Name", "Time Played" );
	
	
	new b = clamp( count, 0, TOP_PLAYERS );
	
	new name[ 32 ], player, j;
	
	for ( ; j < b; j++ )
	{
		player = g_Sort[ j ][ 0 ];
		
		get_user_name ( player, name, 31 );		
		Len += format ( Motd[ Len ], charsmax( Motd )-Len,"%d %-22.22s %d^n", j+1, name, g_Sort[ j ][ 1 ] );
	}
	Len += format ( Motd[ Len ], charsmax( Motd )-Len,"</body></font></pre>" );
	
	show_motd ( id, Motd, "Playedtime Top" );
	return PLUGIN_CONTINUE;
}

public time_compare ( elem1[ ], elem2[ ] )
{
	if ( elem1[ 1 ] > elem2[ 1 ] )
		return -1;
	else if ( elem1[ 1 ] < elem2[ 1 ] )
		return 1;
		
	return 0;
}
// - - -

fvault_set_data(const vaultname[], const key[], const data[])
{
	static const temp_vault_name[] = "fvault_set_data.txt";
	
	new file = fopen(temp_vault_name, "wt");
	
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64], _other[3];
	
	new bool:replaced = false;
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, _other, sizeof(_other) - 1);
		
		if( equal(_key, key) && !replaced )
		{
			fprintf(file, "^"%s^" ^"%s^"^n", key, data);
			
			replaced = true;
		}
		else
		{
			fputs(file, _data);
		}
	}
	
	if( !replaced )
	{
		fprintf(file, "^"%s^" ^"%s^"^n", key, data);
	}
	
	fclose(file);
	fclose(vault);
	
	delete_file(filename);
	
	while( !rename_file(temp_vault_name, filename, 1) ) { }
	
	//delete_file(temp_vault_name);
}

fvault_get_data(const vaultname[], const key[], data[], len)
{
	new filename[128];
	_FormatVaultName(vaultname, filename, sizeof(filename) - 1);
	
	new vault = fopen(filename, "rt");
	
	new _data[512], _key[64];
	
	while( !feof(vault) )
	{
		fgets(vault, _data, sizeof(_data) - 1);
		parse(_data, _key, sizeof(_key) - 1, data, len);
		
		if( equal(_key, key) )
		{
			fclose(vault);
			
			return 1;
		}
	}
	
	fclose(vault);
	
	copy(data, len, "");
	
	return 0;
}

_FormatVaultName(const vaultname[], filename[], len)
{
	static const invalid_chars[][] =
	{
		"/", "\", "*", ":", "?", "^"", "<", ">", "|"
	};
	
	static tempvault[128], i;
	copy(tempvault, sizeof(tempvault) - 1, vaultname);
	
	for( i = 0; i < sizeof(invalid_chars); i++ )
	{
		replace(tempvault, sizeof(tempvault) - 1, invalid_chars, "");
	}
	
	if( !dir_exists(_vault_dir) )
	{
		mkdir(_vault_dir);
	}
	
	formatex(filename, len, "%s/%s.txt", _vault_dir, tempvault);
}[/code]

Modificari:
| Afiseaza codul
[code]// - - - - - - - - -

// * numele fisierului unde se salveaza timpuljucat
new const gs_VaultName[ ] = "PlayedTime";

// * comanda say /timeplayed nume
new const gs_Command[ ] = "/timeplayed";

//* caracterul din fata comenzii
new const gs_Char[ ] = "/";

// * primii x jucatori care vor fi afisati in top
#define TOP_PLAYERS	15

// - - - - - - - - -[/code]
Comanda pentru top:
| Afiseaza codul
register_clcmd ( "say /topplayedtime", "show_top" );
pirvu
Membru, skill +2
Membru, skill +2
Posts: 582
Joined: 07 Apr 2009, 11:12
Detinator Steam: Nu
CS Status: C++ Rullz
Detinator server CS: Da :)
Has thanked: 75 times
Been thanked: 22 times

20 Dec 2009, 21:56

Len += format( Motd[ Len ], charsmax( Motd ) - Len,"%s %-22.22s %3s^n", "#", "Name", "Zoomless Kills" );


??? HEH Zoomless Kills :-o !?
Lupta-te cu bruta mea !>---Click----<

>:D< Respect aNNakin , crazy.cipry, compaq , Digi si tuty :x >:D<

Counter Strike Passion of War
PraF!? wrote:Multumesc ca ai pus (c) dar eu ascult muzica de toate tipurile: Rock, HipHop, Dance si Manele etc.
Sper sa fi inteles mesajul meu. ciao ciao :)
Cum sa asculti si Rock si manele !?!?!? Adica AcDc si Gutza :-o
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:

20 Dec 2009, 21:57

pirvu wrote:Len += format( Motd[ Len ], charsmax( Motd ) - Len,"%s %-22.22s %3s^n", "#", "Name", "Zoomless Kills" );


??? HEH Zoomless Kills :-o !?
Opss...luasem codul din pluginul meu Zoomless Announcer si acolo am uitat sa modific, done.
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 15 guests