Pagina 1 din 1

[GOLDSRC] VIPTEST!

Scris: Joi Noi 28, 2024 9:20 pm
de Diliul
Descriere: Plugin ca sa poata sa testeze playeri vip timp de 24 ore!

Nume: GOLDSRC: VIPTEST!
Versiune: 1.0

Cod: Selectaţi tot

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

#define PLUGIN "GOLDSRC: VIPTEST"
#define VERSION "1.0"
#define AUTHOR "wannacry"

#define Flaga ADMIN_LEVEL_H

new use[33] = 0
new czas_gracza[33]
new prefix[33]
new g_vault
new czas
new zapis

getFormatedTime(iTime, szTime[], size)
{
	new hours = iTime/3600
	formatex(szTime, size, "%d ore si %d minute", hours, iTime%3600/60)
}
public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	g_vault = nvault_open("24h_vip")
	register_clcmd("say /testvip","vip_test")
	register_clcmd("say_team /testvip","vip_test")
	register_clcmd("say /viptest","vip_test")
	register_clcmd("say_team /viptest","vip_test")
	
	register_cvars()
}
public register_cvars()
{
	czas = register_cvar("goldsrc_viptest_ore","24")
	zapis = register_cvar("goldsrc_viptest_save","1")
	register_cvar("goldsrc_viptest_prefix","^1[^4GOLDSRC^1]")
}
public plugin_cfg()
{
	get_cvar_string("amx_viptest_prefix", prefix, 32)
}
public vip_test(id)
{
	if(is_user_connected(id))
	{
		if(get_user_flags(id) & Flaga || use[id] == 1)
		{
			ColorChat(id, NORMAL, "%s Tu esti deja ^3vip^1 sau ai folosit ^3viptest^!!",prefix)
		}
		else
		{
			use[id] = 1
			czas_gracza[id] = get_pcvar_num(czas)*3600
			set_task(1.0,"sprawdz",id,_,_,"b")
			set_task(30.0,"timer",id,_,_,"b")
			set_user_flags(id, get_user_flags(id) | Flaga)
			save(id)
		}
	}
}
public sprawdz(id)
{
	czas_gracza[id]--
	if(czas_gracza[id] <= 0)
	{
		if(task_exists(id))
		{
			remove_task(id)
		}
		remove_user_flags(id, Flaga)
	}
}
public client_disconnect(id)
{
	if(task_exists(id))
	{
		remove_task(id)
	}
	if(use[id] == 1)
	{
		save(id)
	}
}
public client_connect(id)
{
	use[id] = 0
	czas_gracza[id] = 0
	set_task(2.0,"load",id)
}
public save(id)
{
	new name[64]
	switch(get_pcvar_num(zapis))
	{
		case 1:
		{
			get_user_name(id,name,63)
		}
		case 2:
		{
			if(is_user_steam(id))
			{
				get_user_authid(id, name, 63)
			}
			else
			{
				get_user_name(id,name,63)
			}
		}
	}
	
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-vip",name)
	format(vaultdata,255,"%d#%d",czas_gracza[id],use[id])
	nvault_set(g_vault,vaultkey,vaultdata)
}
public load(id)
{
	new name[64]
	switch(get_pcvar_num(zapis))
	{
		case 1:
		{
			get_user_name(id,name,63)
		}
		case 2:
		{
			if(is_user_steam(id))
			{
				get_user_authid(id, name, 63)
			}
			else
			{
				get_user_name(id,name,63)
			}
		}
	}
	
	new vaultkey[64],vaultdata[256]
	get_user_name(id,name,63)
	format(vaultkey,63,"%s-vip",name)
	format(vaultdata,255,"%d#%d",czas_gracza[id], use[id])
	nvault_get(g_vault,vaultkey,vaultdata,255)
	replace_all(vaultdata, 255, "#", " ")
	
	new zmienna[33], zmienna1[33]
	parse(vaultdata, zmienna, 32, zmienna1, 32)	
	
	czas_gracza[id] = str_to_num(zmienna)
	use[id] = str_to_num(zmienna1)
	
	if(czas_gracza[id] > 0)
	{
		set_task(30.0,"timer",id,_,_,"b")
		set_task(1.0,"sprawdz",id,_,_,"b")
		set_user_flags(id, get_user_flags(id) | Flaga)
	}
	else
	{
		set_task(30.0,"reclama",id,_,_,"b")
	}
}
public timer(id)
{
	new szTime[32]
	getFormatedTime(czas_gracza[id], szTime, 31)
	ColorChat(id, NORMAL, "%s ^3VIPTEST^1 se expira peste: ^4%s^1!",prefix,szTime)
}
public reclama(id)
{
	ColorChat(id, NORMAL, "%s Vrei sa incerci vip pe ^4%d^1 ore?",prefix, get_pcvar_num(czas))
	ColorChat(id, NORMAL, "%s Scrie ^4/testvip^1 sau ^4/viptest^1",prefix)
}

stock bool:is_user_steam(id) {
	new authid[32]; get_user_authid(id, authid, 31);
	return bool:(contain(authid, "STEAM_0:0:") != -1 || contain(authid, "STEAM_0:1:") != -1);
}
Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):

Cod: Selectaţi tot

- goldsrc_viptest_ore "24"
- goldsrc_viptest_save "1"
- goldsrc_viptest_prefix "^1[^4GOLDSRC^1]"
Module necesare (se sterge ; din fata modulului de mai jos; acestea le gasiti in fisierul amxmodx\configs\modules.ini):

Cod: Selectaţi tot

- nvault