Warn System [NON-STEAM + ONLY-STEAM]

Pluginuri pentru modul AmxModX.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

02 Feb 2014, 10:58

Descriere: Cu acest plugin puteti da warn unui jucator (si se salveaza) la 3 warn-uri primeste ban , e ceva gen ca pe forum ..
PS: am creat 2 versiuni 1.4 Only steam testat fara buguri , si non-steam netestat (1.5) dar ar trebui sa naiba buguri !

Descarcare:
NON-STEAM-VERSION | Afiseaza codul
/*
	1.5 Version is for NON-STEAM Servers !
	

*/

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

new const PLUGIN [] = "Warn System";
new const AUTHOR [] = "LordOfNothing";
new const VERSION [] = "1.5";

new g_warns[33];

new g_dede;

new cvars[3];

enum Color
{
	NORMAL = 1, // clients scr_concolor cvar color
	YELLOW = 1, // NORMAL alias
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
}
 
new TeamName[][] =
{
	"",
	"TERRORIST",
	"CT",	
	"SPECTATOR"
}


public plugin_init()
{
	register_plugin(PLUGIN,VERSION,AUTHOR);

        g_dede = nvault_open("warn_vaults");

	register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged") 

	register_concmd("amx_warn","cmd_warn",ADMIN_KICK,"<NUME> <NUMAR DE WARN-URI>");
	register_concmd("amx_unwarn","cmd_unwarn",ADMIN_KICK,"<NUME> <NUMAR DE WARN-URI>");

	cvars[0] = register_cvar("warn_tag","TAG")
	cvars[1] = register_cvar("warn_max","3")
	cvars[2] = register_cvar("warn_bantime","120")

	register_clcmd("say /warns","ShowWrn")
	register_clcmd("say /warn","ShowWrn")
	register_clcmd("say /warnuri","ShowWrn")
	register_clcmd("say /wrn","ShowWrn")

	register_clcmd("say_team /warns","ShowWrn")
	register_clcmd("say_team /warn","ShowWrn")
	register_clcmd("say_team /warnuri","ShowWrn")
	register_clcmd("say_team /wrn","ShowWrn")
}

public ClientUserInfoChanged(id)
{
	static const name[] = "name"
	static szOldName[32], szNewName[32]
	pev(id, pev_netname, szOldName, charsmax(szOldName))
	if( szOldName[0] )
	{
		get_user_info(id, name, szNewName, charsmax(szNewName))

		if( !equal(szOldName, szNewName) )
		{
			set_user_info(id, name, szOldName)
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}


public ShowWrn(id)
{
	new szMsg[60]
	get_pcvar_string(cvars[0], szMsg, charsmax(szMsg) - 1)

	ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] Ai ^4%i^1 warn-uri , ai grija la ^4%i^1 vei primi ban pentru ^4%i^1 minute !", szMsg, g_warns[id], get_pcvar_num(cvars[1]), get_pcvar_num(cvars[2]))
	return 1
}

public cmd_warn(id,level,cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	
	new arg[33], amount[33]
	read_argv(1, arg, charsmax(arg) - 1)
	read_argv(2, amount, charsmax(amount) - 1)
	new target = cmd_target(id, arg, 7)
	new admin_name[35], player_name[35];
	get_user_name(target, player_name, charsmax(player_name) - 1);
	get_user_name(id, admin_name, charsmax(admin_name) - 1);

	new szMsg[60]
	get_pcvar_string(cvars[0], szMsg, charsmax(szMsg) - 1)

	new wors = str_to_num(amount)
	
	
	if(!target)
	{
		return 1
	}
	
	if(g_warns[target] < get_pcvar_num(cvars[1]))
	{
		g_warns[target] = g_warns[target] + wors;
		ColorChat(0, TEAM_COLOR, "^1[ ^3%s^1 ] Adminul ^4%s^1 i-a dat ^4%i^1 avertismente lui ^4%s^1 !",szMsg,admin_name,wors,player_name);
		SaveData(target);
		return 0
	}

	else if(g_warns[target] == get_pcvar_num(cvars[1]))
	{
		server_cmd("amx_ban #%d %i MaxWarn",get_user_userid(target), get_pcvar_num(cvars[2]));
		g_warns[target] = 0;
		return 0
	}

	return 0
}


public cmd_unwarn(id,level,cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	
	new arg[33], amount[33]
	read_argv(1, arg, charsmax(arg) - 1)
	read_argv(2, amount, charsmax(amount) - 1)
	new target = cmd_target(id, arg, 7)
	new admin_name[35], player_name[35];
	get_user_name(target, player_name, charsmax(player_name) - 1);
	get_user_name(id, admin_name, charsmax(admin_name) - 1);

	new szMsg[60]
	get_pcvar_string(cvars[0], szMsg, charsmax(szMsg) - 1)

	new wors = str_to_num(amount)
	
	
	if(!target)
	{
		return 1
	}
	

	g_warns[target] = g_warns[target] - wors;
	ColorChat(0, TEAM_COLOR, "^1[ ^3%s^1 ] Adminul ^4%s^1 i-a scos ^4%i^1 avertismente lui ^4%s^1 !",szMsg,admin_name,wors,player_name);
	SaveData(target);
	return 0
}

public SaveData(id)
{
        new PlayerName[33];
        get_user_name(id,PlayerName,32);
        
        new vaultkey[64],vaultdata[256];
        format(vaultkey,63,"%s",PlayerName);
        format(vaultdata,255,"%i",g_warns[id]);
        nvault_set(g_dede,vaultkey,vaultdata);
        return PLUGIN_CONTINUE;
}
public LoadData(id)
{
        new PlayerName[33];
        get_user_name(id,PlayerName,32);
        
        new vaultkey[64],vaultdata[256];
        format(vaultkey,63,"%s",PlayerName);
        format(vaultdata,255,"%i",g_warns[id]);
        nvault_get(g_dede,vaultkey,vaultdata,255);
        
        replace_all(vaultdata, 255, "`", " ");
        
        new playerw[32]
        
        parse(vaultdata, playerw, 31);
        
        g_warns[id] = str_to_num(playerw);
        
        return PLUGIN_CONTINUE;
}

public client_disconnect(id)
{
	SaveData(id)
}

public client_putinserver(id)
{
	LoadData(id)
}


ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	new message[256];
 
	switch(type)
	{
		case NORMAL: // clients scr_concolor cvar color
		{
			message[0] = 0x01;
		}
		case GREEN: // Green
		{
			message[0] = 0x04;
		}
		default: // White, Red, Blue
		{
			message[0] = 0x03;
		}
	}
	 
	vformat(message[1], 251, msg, 4);
 
	// Make sure message is not longer than 192 character. Will crash the server.
	message[191] = '^0';
 
	new team, ColorChange, index, MSG_Type;
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}

	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);
 

	ShowColorMessage(index, MSG_Type, message);
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}
 
ShowColorMessage(id, type, message[])
{
	static get_user_msgid_saytext;
	if(!get_user_msgid_saytext)
	{
		get_user_msgid_saytext = get_user_msgid("SayText");
	}
	message_begin(type, get_user_msgid_saytext, _, id);
	write_byte(id)	
	write_string(message);
	message_end();	
}
 
Team_Info(id, type, team[])
{
	static bool:teaminfo_used;
	static get_user_msgid_teaminfo;
	if(!teaminfo_used)
	{
		get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
		teaminfo_used = true;
	}
	message_begin(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();
 
	return 1;
}
 
ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}
 
	return 0;
}
 
FindPlayer()
{
	new i = -1;
	static iMaxPlayers;
	if( !iMaxPlayers )
	{
		iMaxPlayers = get_maxplayers( );
	}
	while(i <= iMaxPlayers)
	{
		if(is_user_connected(++i))
			return i;
	}
 
	return -1;
}
ONLY-STEAM-VERSION | Afiseaza codul
/*
	CopyRight @ 2014 by LordOfNothing

	This "Warn Plugin" is public
	plugin and is illegal to sell or
	edit it for money or other things
	With this plugin you can warn a player
	like in a comunnity but direct on your
	server !
	

*/

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


new const PLUGIN [] = "Warn System";
new const AUTHOR [] = "LordOfNothing";
new const VERSION [] = "1.4";

new g_warns[33];

new g_dede;

new cvars[3];

enum Color
{
	NORMAL = 1, // clients scr_concolor cvar color
	YELLOW = 1, // NORMAL alias
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
}
 
new TeamName[][] =
{
	"",
	"TERRORIST",
	"CT",	
	"SPECTATOR"
}


public plugin_init()
{
	register_plugin(PLUGIN,VERSION,AUTHOR);

        g_dede = nvault_open("warn_vaults");

	register_concmd("amx_warn","cmd_warn",ADMIN_KICK,"<NUME>");
	register_concmd("amx_unwarn","cmd_unwarn",ADMIN_KICK,"<NUME>");

	cvars[0] = register_cvar("warn_tag","TAG")
	cvars[1] = register_cvar("warn_max","3")
	cvars[2] = register_cvar("warn_bantime","120")

	register_clcmd("say /warns","ShowWrn")
	register_clcmd("say /warn","ShowWrn")
	register_clcmd("say /warnuri","ShowWrn")
	register_clcmd("say /wrn","ShowWrn")

	register_clcmd("say_team /warns","ShowWrn")
	register_clcmd("say_team /warn","ShowWrn")
	register_clcmd("say_team /warnuri","ShowWrn")
	register_clcmd("say_team /wrn","ShowWrn")
}

public ShowWrn(id)
{
	new szMsg[60]
	get_pcvar_string(cvars[0], szMsg, charsmax(szMsg) - 1)

	ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] Ai ^4%i^1 warn-uri , ai grija la ^4%i^1 vei primi ban pentru ^4%s^1 minute !", szMsg, g_warns[id], get_pcvar_num(cvars[1]), get_pcvar_num(cvars[2]))
	return 1
}

public cmd_warn(id,level,cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	
	new arg[33], amount[33]
	read_argv(1, arg, charsmax(arg) - 1)
	read_argv(2, amount, charsmax(amount) - 1)
	new target = cmd_target(id, arg, 7)
	new admin_name[35], player_name[35];
	get_user_name(target, player_name, charsmax(player_name) - 1);
	get_user_name(id, admin_name, charsmax(admin_name) - 1);

	new szMsg[60]
	get_pcvar_string(cvars[0], szMsg, charsmax(szMsg) - 1)

	new wors = str_to_num(amount)
	
	
	if(!target)
	{
		return 1
	}
	
	if(g_warns[target] < get_pcvar_num(cvars[1]))
	{
		g_warns[target] = g_warns[target] + wors;
		ColorChat(0, TEAM_COLOR, "^1[ ^3%s^1 ] Adminul ^4%s^1 i-a dat ^4%i^1 avertismente lui ^4%s^1 !",szMsg,admin_name,wors,player_name);
		SaveData(target);
		return 0
	}

	else
	{
		server_cmd("amx_ban #%d %i WARN",get_user_userid(target), get_pcvar_num(cvars[2]));
		g_warns[target] = 0;
		return 0
	}

	return 0
}


public cmd_unwarn(id,level,cid)
{
	if(!cmd_access(id,level,cid,3))
		return PLUGIN_HANDLED;
	
	new arg[33], amount[33]
	read_argv(1, arg, charsmax(arg) - 1)
	read_argv(2, amount, charsmax(amount) - 1)
	new target = cmd_target(id, arg, 7)
	new admin_name[35], player_name[35];
	get_user_name(target, player_name, charsmax(player_name) - 1);
	get_user_name(id, admin_name, charsmax(admin_name) - 1);

	new szMsg[60]
	get_pcvar_string(cvars[0], szMsg, charsmax(szMsg) - 1)

	new wors = str_to_num(amount)
	
	
	if(!target)
	{
		return 1
	}
	

	g_warns[target] = g_warns[target] - wors;
	ColorChat(0, TEAM_COLOR, "^1[ ^3%s^1 ] Adminul ^4%s^1 i-a scos ^4%i^1 avertismente lui ^4%s^1 !",szMsg,admin_name,wors,player_name);
	SaveData(target);
	return 0
}

public SaveData(id)
{
        new PlayerName[35];
        get_user_authid(id,PlayerName,34);
        
        new vaultkey[64],vaultdata[256];
        format(vaultkey,63,"%s",PlayerName);
        format(vaultdata,255,"%i",g_warns[id]);
        nvault_set(g_dede,vaultkey,vaultdata);
        return PLUGIN_CONTINUE;
}
public LoadData(id)
{
        new PlayerName[35];
        get_user_authid(id,PlayerName,34);
        
        new vaultkey[64],vaultdata[256];
        format(vaultkey,63,"%s",PlayerName);
        format(vaultdata,255,"%i",g_warns[id]);
        nvault_get(g_dede,vaultkey,vaultdata,255);
        
        replace_all(vaultdata, 255, "`", " ");
        
        new playerw[32]
        
        parse(vaultdata, playerw, 31);
        
        g_warns[id] = str_to_num(playerw);
        
        return PLUGIN_CONTINUE;
}

public client_disconnect(id)
{
	SaveData(id)
}

public client_putinserver(id)
{
	LoadData(id)
}


ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
	new message[256];
 
	switch(type)
	{
		case NORMAL: // clients scr_concolor cvar color
		{
			message[0] = 0x01;
		}
		case GREEN: // Green
		{
			message[0] = 0x04;
		}
		default: // White, Red, Blue
		{
			message[0] = 0x03;
		}
	}
	 
	vformat(message[1], 251, msg, 4);
 
	// Make sure message is not longer than 192 character. Will crash the server.
	message[191] = '^0';
 
	new team, ColorChange, index, MSG_Type;
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}

	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);
 

	ShowColorMessage(index, MSG_Type, message);
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}
 
ShowColorMessage(id, type, message[])
{
	static get_user_msgid_saytext;
	if(!get_user_msgid_saytext)
	{
		get_user_msgid_saytext = get_user_msgid("SayText");
	}
	message_begin(type, get_user_msgid_saytext, _, id);
	write_byte(id)	
	write_string(message);
	message_end();	
}
 
Team_Info(id, type, team[])
{
	static bool:teaminfo_used;
	static get_user_msgid_teaminfo;
	if(!teaminfo_used)
	{
		get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
		teaminfo_used = true;
	}
	message_begin(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();
 
	return 1;
}
 
ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}
 
	return 0;
}
 
FindPlayer()
{
	new i = -1;
	static iMaxPlayers;
	if( !iMaxPlayers )
	{
		iMaxPlayers = get_maxplayers( );
	}
	while(i <= iMaxPlayers)
	{
		if(is_user_connected(++i))
			return i;
	}
 
	return -1;
}

Nume: Warn System
Versiune: 1.5
Link oficial: http://amxmodx-ro.besaba.com/forum/amx- ... e-t39.html

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

Code: Select all

wrn.amxx
Comenzi Chat:
  • /warns - iti arata cate warnuri ai !

Comenzi administrative (se tasteaza in consola si trebuie sa fiti administrator):
  • amx_warn <NUME> <WARN-RUI> - ii dai warn unui jucator !
    amx_unwarn <NUME> <WARN-URI> - ii scoate un warn unui jucator !

Imagini:
Image
Image
Last edited by LordOfNothing on 25 Feb 2014, 21:24, edited 6 times in total.
RoyalServer
User avatar
Adventx
Membru, skill +4
Membru, skill +4
Posts: 1785
Joined: 17 Sep 2013, 21:44
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 128 times
Been thanked: 142 times
Contact:

02 Feb 2014, 11:03

Frumos, Bravo! :P
User avatar
codrutzz
Membru, skill +2
Membru, skill +2
Posts: 539
Joined: 29 Jan 2014, 18:27
Detinator Steam: Da
CS Status: Nu citesc forumu xtreamCS* =]]]
Detinator server CS: In curand
SteamID: Personal
Location: Iasi<3
Has thanked: 68 times
Been thanked: 9 times
Contact:

02 Feb 2014, 11:36

Fain super!!
User avatar
FaTzZu
Fost moderator
Fost moderator
Posts: 1206
Joined: 22 Dec 2012, 18:37
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Has thanked: 114 times
Been thanked: 168 times

02 Feb 2014, 15:05

Asta am vrut si eu sa fac X(
Felicitari.
A fool's brain digests philosophy into folly, science into superstition, and art into pedantry.

#RETIRED.
User avatar
Fantasy1
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 4836
Joined: 05 Jul 2012, 01:26
Detinator Steam: Da
Reputatie: Membru Club eXtreamCS (1 Mar)
Utilizator neserios (TEPAR!)
Has thanked: 278 times
Been thanked: 217 times
Contact:

02 Feb 2014, 16:00

Era jmecher sa ilfaci cu script mysql , era prea beton.

Oricum ,felicitari .
CLICK AICI pentru FORUM
- Un Forum Care Nu Poate Fi Spart -
- Un Forum Care Nu Modifica Topicurile Cu Tepari -
- Vrei Indexare In Google? Posteaza Tzeparii La Noi -

- Daca ai nevoie sa te ajut cu un addons/plugin etc se plateste, nu ajut cu nimic pe GRATIS -
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

02 Feb 2014, 17:08

exista..
gj pentru munca depusa..
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
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

02 Feb 2014, 17:24

nu am vazut dar orcum asta e mai usor de folosit ...

Sugestii cod / Idei ??
Ake
Membru, skill +1
Membru, skill +1
Posts: 126
Joined: 19 Dec 2013, 17:30
Detinator Steam: Da
Has thanked: 88 times
Been thanked: 2 times

02 Feb 2014, 17:32

Pune amx_warn nume motiv timp
Pune amx_unwarn nume motiv
Daca iese si are warn ia ban x minute
Spor !
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

02 Feb 2014, 19:04

Ake wrote: Daca iese si are warn ia ban x minute
Spor !
Nu trebuie pentru ca e cu salvare dac aiese is intra tot atatea warn-uri are

Ake wrote: Pune amx_unwarn nume
Va fi pus
User avatar
sN1kkeRs.
Membru, skill +3
Membru, skill +3
Posts: 1058
Joined: 19 Sep 2013, 19:43
Detinator Steam: Da
Detinator server CS: Da
SteamID: bzk15
Location: Brăila
Has thanked: 124 times
Been thanked: 37 times

02 Feb 2014, 20:30

Oho foarte tare, felicitări :)
User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

02 Feb 2014, 20:44

| 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_iPlayerWarn[ 33 ];


public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "-MoDeR-" );   // mie asa imi place sa-i zic :)) cryuff e autor
	
	/* 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 );
	}
}

public client_putinserver( id )
{
	LoadHours( id );
	
	set_task( 3600.0, "adaugareOra", id, _, _, "b", _ );
	
	static szName[ 32 ];
	get_user_name( id, szName, sizeof( szName ) -1 );
	
	verifyPlayer( id, szName );
	
	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 );
			}
			
			iLine++;
		}
	} 
	
	return 1;
}

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

public adaugareOra( id )
{
	g_iPlayerStats[ id ] += 1;
}

verifyPlayer( id, const szName[ ] )
{
	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 ) );
		
		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, str_to_num( szParseHours ) );			
			}
			
			else
			{
				log_to_file( "activity_admins.log", "%s a stat doar %i/%i ore pe server. A primit 1 warn.", szName, g_iPlayerStats, str_to_num( szParseHours ) );
				
				C_PrintChat( id, "Atentie ! Azi ai facut !v%i!c/!v%i!c ore. Trebuie sa stai minim !v%i!c ore.", g_iPlayerStats, 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!/!v%i!c)", g_iPlayerStats, g_iPlayerStats, str_to_num( szParseHours ) );
				
				g_iPlayerWarn[ id ] += 1;
			}
		}
	}
	
	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", g_iPlayerStats[ 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 ];
	parse( szVaultData, iHours, sizeof( iHours ) -1, iWarn, sizeof( iWarn ) -1 );
	
	g_iPlayerStats[ id ] = str_to_num( iHours );
	g_iPlayerWarn[ id ] = str_to_num( iWarn );
}

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", g_iPlayerStats[ 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%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( );
		}
	}
}
Exista!
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
LordOfNothing
Membru, skill +1
Membru, skill +1
Posts: 387
Joined: 19 Jul 2013, 15:51
Detinator Steam: Nu
Reputatie: Restrictie PM
Has thanked: 11 times
Been thanked: 35 times

02 Feb 2014, 20:48

The YONTU wrote:
| 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_iPlayerWarn[ 33 ];


public plugin_init( )
{
	register_plugin( PLUGIN, VERSION, "-MoDeR-" );   // mie asa imi place sa-i zic :)) cryuff e autor
	
	/* 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 );
	}
}

public client_putinserver( id )
{
	LoadHours( id );
	
	set_task( 3600.0, "adaugareOra", id, _, _, "b", _ );
	
	static szName[ 32 ];
	get_user_name( id, szName, sizeof( szName ) -1 );
	
	verifyPlayer( id, szName );
	
	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 );
			}
			
			iLine++;
		}
	} 
	
	return 1;
}

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

public adaugareOra( id )
{
	g_iPlayerStats[ id ] += 1;
}

verifyPlayer( id, const szName[ ] )
{
	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 ) );
		
		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, str_to_num( szParseHours ) );			
			}
			
			else
			{
				log_to_file( "activity_admins.log", "%s a stat doar %i/%i ore pe server. A primit 1 warn.", szName, g_iPlayerStats, str_to_num( szParseHours ) );
				
				C_PrintChat( id, "Atentie ! Azi ai facut !v%i!c/!v%i!c ore. Trebuie sa stai minim !v%i!c ore.", g_iPlayerStats, 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!/!v%i!c)", g_iPlayerStats, g_iPlayerStats, str_to_num( szParseHours ) );
				
				g_iPlayerWarn[ id ] += 1;
			}
		}
	}
	
	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", g_iPlayerStats[ 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 ];
	parse( szVaultData, iHours, sizeof( iHours ) -1, iWarn, sizeof( iWarn ) -1 );
	
	g_iPlayerStats[ id ] = str_to_num( iHours );
	g_iPlayerWarn[ id ] = str_to_num( iWarn );
}

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", g_iPlayerStats[ 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%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( );
		}
	}
}
Exista!

Code: Select all

#define PLUGIN "Admins activity"
Mda...
Post Reply

Return to “AmxModX”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 13 guests