Vrei un plugin VIP? Aici îl găsești

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

13 Aug 2018, 12:35

edit
„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.
RoyalServer
User avatar
NeedlessDM
Membru, skill 0
Membru, skill 0
Posts: 54
Joined: 25 Dec 2017, 16:05
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

18 Aug 2018, 16:01

Salut, nu merge ala de event vip
imi da eroare la complimare MX Mod X Compiler 1.8.3-manual
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

Modified for www.Freakz.ro / amx.freakz.ro

event.sma(1) : error 010: invalid function or declaration
event.sma(25) : error 017: undefined symbol "register_plugin"
event.sma(27) : error 017: undefined symbol "set_task"
event.sma(28) : error 017: undefined symbol "set_task"
event.sma(30) : error 017: undefined symbol "register_cvar"
event.sma(35) : error 017: undefined symbol "register_cvar"
event.sma(36) : error 017: undefined symbol "register_cvar"
event.sma(41) : error 017: undefined symbol "get_user_msgid"
event.sma(42) : error 017: undefined symbol "get_maxplayers"
event.sma(43) : error 017: undefined symbol "CreateHudSyncObj"
event.sma(45) : error 017: undefined symbol "set_task"
event.sma(53) : error 017: undefined symbol "set_user_flags"
event.sma(53) : error 088: number of arguments does not match definition
event.sma(57) : error 017: undefined symbol "get_pcvar_num"
event.sma(62) : error 017: undefined symbol "time"
event.sma(66) : error 017: undefined symbol "get_pcvar_num"
event.sma(69) : error 017: undefined symbol "set_pcvar_num"
event.sma(73) : error 017: undefined symbol "is_user_connected"
event.sma(76) : error 017: undefined symbol "set_user_flags"
event.sma(76) : error 088: number of arguments does not match definition
event.sma(82) : error 017: undefined symbol "get_pcvar_num"
event.sma(85) : error 017: undefined symbol "set_pcvar_num"
event.sma(89) : error 017: undefined symbol "is_user_connected"
event.sma(92) : error 017: undefined symbol "remove_user_flags"
event.sma(92) : error 088: number of arguments does not match definition
event.sma(93) : error 017: undefined symbol "server_cmd"

Compilation aborted.
26 Errors.
Done.
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2548
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 61 times
Contact:

18 Aug 2018, 17:30

Compileaza-l local cu amxmodx 1.8.2 si o sa functioneze
no...
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:

20 Aug 2018, 22:50

Plugin VIP EVENT FUNCTIONAL
vip_event_v2.sma | Afiseaza codul
#include <amxmodx>

/*
ADMIN_IMMUNITY = flag "a"
ADMIN_RESERVATION = flag "b"
ADMIN_KICK = flag "c"
ADMIN_BAN = flag "d"
ADMIN_SLAY = flag "e"
ADMIN_MAP = flag "f"
ADMIN_CVAR = flag "g"
ADMIN_CFG = flag "h"
ADMIN_CHAT = flag "i"
ADMIN_VOTE = flag "j"
ADMIN_PASSWORD = flag "k"
ADMIN_RCON = flag "l"
ADMIN_LEVEL_A = flag "m"
ADMIN_LEVEL_B = flag "n"
ADMIN_LEVEL_C = flag "o"
ADMIN_LEVEL_D = flag "p"
ADMIN_LEVEL_E = flag "q"
ADMIN_LEVEL_F = flag "r"
ADMIN_LEVEL_G = flag "s"
ADMIN_LEVEL_H = flag "t"
ADMIN_MENU = flag "u"
ADMIN_ADMIN = flag "y"
*/

new ora = -1, bool:event_on, bool:prima_data, este_conectat[33] = {0}, are_vip[33] = {0}, are_vip2[33] = {0}, g_sync_hudmsg;

#define PLUGIN_NAME "VIP EVENT"
#define PLUGIN_VERSION "2.0"
#define PLUGIN_AUTHOR "YONTU"
#define TASK_VERIFICARE	129891


// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
#define VIP_FLAG	"t"		// FLAGUL VIPULUI (vezi mai sus lista flagurilor)
#define ORA_INCEPUT	21	// INTERVALUL ORAR (INCEPUT)
#define ORA_SFARSIT	23	// INTERVALUL ORAR (SFARSIT)
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------


public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
	register_cvar("vipfree_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("vipfree_", PLUGIN_VERSION);

	time(ora, _, _);
	event_on = (ora >= ORA_INCEPUT && ora < ORA_SFARSIT) ? true : false;
	prima_data = true;
	arrayset(este_conectat, 0, 33);
	arrayset(are_vip, 0, 33);
	arrayset(are_vip2, 0, 33);

	g_sync_hudmsg = CreateHudSyncObj();

	set_task(60.0, "verifica_ora", TASK_VERIFICARE);
	set_task(3.0, "anunta_jucatori", TASK_VERIFICARE/random_num(2, 10));
}

public verifica_ora(task)
{
	time(ora, _, _);
	event_on = (ora >= ORA_INCEPUT && ora < ORA_SFARSIT) ? true : false;

	new jucatori[32], numar = 0, i, id;
	if(event_on)
	{
		if(prima_data)
		{
			ColorChat(id, "!4--------------------------------------------------------");
			ColorChat(id, "!4***!1 EVENTUL!3 VIP FREE!1 A FOST ACTIVAT.");
			ColorChat(id, "!4***!1 Acesta va fi dezactivat la ora!4 %d!1.", ORA_SFARSIT);
			ColorChat(id, "!4--------------------------------------------------------");

			prima_data = false;
		}

		get_players(jucatori, numar);
		for(i = 0; i < numar; i++)
		{
			id = jucatori;
			if(!este_conectat[id])
				continue;
			if(are_vip[id])
				continue;
			if(are_vip2[id])
				continue;

			are_vip2[id] = 1;
			set_user_flags(id, read_flags(VIP_FLAG));
		}
	}
	else
	{
		if(!prima_data)
		{
			get_players(jucatori, numar);
			for(i = 0; i < numar; i++)
			{
				id = jucatori;
				if(!este_conectat[id])
					continue;

				remove_user_flags(id, read_flags(VIP_FLAG));
				ColorChat(id, "!4-------------------------------------------------------------");
				ColorChat(id, "!4***!1 EVENTUL!3 VIP FREE!1 A FOST DEZACTIVAT.");
				ColorChat(id, "!4***!1 Acesta va reincepe la ora!4 %d!1.", ORA_INCEPUT);
				ColorChat(id, "!4-------------------------------------------------------------");
			}
			server_cmd("amx_default_access ^"z^"");
			server_cmd("amx_reloadadmins");
			arrayset(are_vip, 0, 33);
			arrayset(are_vip2, 0, 33);
			prima_data = true;
		}
	}

	set_task(60.0, "verifica_ora", TASK_VERIFICARE);
}

public client_disconnect(id)
{
	if(event_on)
		remove_user_flags(id, read_flags(VIP_FLAG));
}

public client_putinserver(id)
{
	este_conectat[id]++;
	set_task(3.0, "verifica_event", id);
}

public verifica_event(id)
{
	if(!event_on)
		return;

	if(este_conectat[id] == 1)
		client_print(id, print_center, "AI NIMERIT FIX LA TANC!  ESTE EVENT VIP FREE.");

	if(get_user_flags(id) & read_flags(VIP_FLAG))
		are_vip[id] = true;
	else
	{
		are_vip2[id] = true;
		set_user_flags(id, read_flags(VIP_FLAG));
	}
}

public anunta_jucatori()
{
	if(!event_on)
		return;

	set_hudmessage(0, random(256), 0, -1.0, 0.12, 1, 3.0, 3.0);
	ShowSyncHudMsg(0, g_sync_hudmsg, "~~ Event VIP ON ~~");

	set_task(3.0, "anunta_jucatori", TASK_VERIFICARE/random_num(2, 10));
}

stock ColorChat(id, String[], any:...)
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	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();
	}
}


Timp estimativ de lucru: 2 ore + teste
Orele se modifica din sursa, de asemenea si flagul vip-ului.
Sa va explic cum functioneaza. Intre orele setate de voi, pluginul va aplica flagul setat de asemenea de voi tuturor jucatorilor. La fiecare minut se verifica daca jucatorul respectiv a primit flagul. Daca nu, i se va seta.
Pluginul este facut de la 0, nu foloseste resurse prea multe, conditiile sunt verificate si testate.
Multi m-au rugat sa fac unul asa ca sper sa-l folositi.
Orice nelamurire provocata de plugin va rog sa mi-o spuneti.
Daca apar erori in consola, postati-le aici.

EDIT:
Au fost aduse modificari pluginului, permitand tuturor jucatorilor, inclusiv userilor din fisierul users.ini care au acces de vip sa primeasca vip in timpul eventului.
Folositi cu incredere.


@NeedlessDM: compileaza pluginul local, nu pe un site anume.
„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.
User avatar
Myty CSG
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 770
Joined: 27 Aug 2013, 11:44
Detinator Steam: Da
Detinator server CS: Nu.
SteamID: PM.
Reputatie: Utilizator neserios ( tepar )
Been thanked: 1 time

21 Aug 2018, 10:50

NICK: Myty CSG
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <fun>

#define ADMIN_FLAG ADMIN_LEVEL_H
#define GRAVITY 0.5
#define SPEED 800.0


new bool: gravity[33];
new bool: speed[33];

public plugin_init()
    register_clcmd("say /vip", "clcmd_vip", ADMIN_FLAG);

public clcmd_vip(id, level, cid){
    if(is_user_alive(id) && cmd_access(id, level, cid, 3))
        return 0;

    new menu = menu_create("VIP Menu", "handler");

    new formatex_gravity[20], formatex_speed[20];
    formatex(formatex_gravity, charsmax(formatex_gravity), "Gravity [%s]", gravity[id] ? "ON" : "\rOFF\w");

    formatex(formatex_speed, charsmax(formatex_speed), "Speed [%s]", speed[id] ? "ON" : "\rOFF\w");

    menu_additem(menu, formatex_gravity);
    menu_additem(menu, formatex_speed);
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu);
    return 0;
}

public handler(id, menu, item){
    switch(item){
        case MENU_EXIT: menu_destroy(menu);

        case 0: {
            if(gravity[id]){
                set_user_gravity(id, 1.0)
                gravity[id] = false;
            }

            else {
                set_user_gravity(id, GRAVITY);
                gravity[id] = true;
            }
        }
        
        case 1: {
            if(speed[id]){
                set_user_maxspeed(id, 400.0)
                speed[id] = false;
            }

            else {
                set_user_maxspeed(id, SPEED);
                speed[id] = true;
            }
        }
    }
    return 1;
}
MODIFICARI: - sa se mentina viteza si gravitatia cand schimb arma
- /vips vipii online
- /vreauvip - lista beneficii
- sa aiba skin Smith
- Sa apara VIP pe TAB
-Flagul sa fie t
Image
User avatar
Jucks
Membru, skill +3
Membru, skill +3
Posts: 1141
Joined: 20 May 2016, 16:28
Detinator Steam: Da
Fond eXtream: 0
Contact:

24 Aug 2018, 21:50

Nick : jucks
Plugin : vip
Flag : t
Cerințe :
1.Sa primești 10 HP + 10 AP + 800$ pe kill
2.Sa începi runda cu 110 HP - 110 AP - 1000$
Meniu arme :
https://m.imgur.com/cj8CKt3
Dacă poți face sa fie designe ul la fel e perfect în legătură cu meniul + tot în meniul vip sa faci atunci când ia armele de acolo sa îi dea și un he + un flash
VIP ul sa fie imun la flash
Sa poți sari de 2 ori
Sa faci ca pe unele mape vipul sa nu mai primească beneficiile
Meniul sa fie disponibil doar după ce trec 3 runde
Acces la chatul adminilor
Sa apară ca VIP în tab
Maxim HP : 150 / AP : 150 / Money : 16000
Sa aiba șansă de respawn de 10%
Mesaj când primește Respawn
[Respawn] Ai primit Respawn în aceasta runda !!!
VIP FREE intre orele : 07-10 ( sa primească beneficiile vip ului dar sa nu conțină vreun mesaj doar Da beneficiile și atat )
VIP ul sa se afle prin comanda /vips
Detinator : # Go.Tried.Ro #
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:

27 Aug 2018, 13:02

Myty CSG wrote:NICK: Myty CSG
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <fun>

#define ADMIN_FLAG ADMIN_LEVEL_H
#define GRAVITY 0.5
#define SPEED 800.0


new bool: gravity[33];
new bool: speed[33];

public plugin_init()
    register_clcmd("say /vip", "clcmd_vip", ADMIN_FLAG);

public clcmd_vip(id, level, cid){
    if(is_user_alive(id) && cmd_access(id, level, cid, 3))
        return 0;

    new menu = menu_create("VIP Menu", "handler");

    new formatex_gravity[20], formatex_speed[20];
    formatex(formatex_gravity, charsmax(formatex_gravity), "Gravity [%s]", gravity[id] ? "ON" : "\rOFF\w");

    formatex(formatex_speed, charsmax(formatex_speed), "Speed [%s]", speed[id] ? "ON" : "\rOFF\w");

    menu_additem(menu, formatex_gravity);
    menu_additem(menu, formatex_speed);
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu);
    return 0;
}

public handler(id, menu, item){
    switch(item){
        case MENU_EXIT: menu_destroy(menu);

        case 0: {
            if(gravity[id]){
                set_user_gravity(id, 1.0)
                gravity[id] = false;
            }

            else {
                set_user_gravity(id, GRAVITY);
                gravity[id] = true;
            }
        }
        
        case 1: {
            if(speed[id]){
                set_user_maxspeed(id, 400.0)
                speed[id] = false;
            }

            else {
                set_user_maxspeed(id, SPEED);
                speed[id] = true;
            }
        }
    }
    return 1;
}
MODIFICARI: - sa se mentina viteza si gravitatia cand schimb arma
- /vips vipii online
- /vreauvip - lista beneficii
- sa aiba skin Smith
- Sa apara VIP pe TAB
-Flagul sa fie t
| Afiseaza codul
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <fakemeta>

// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))

#define VITEZA		800.0
#define GRAVITATIE	0.5
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

#define PLUGIN_NAME "VIP System"
#define PLUGIN_NAME_PAUSED "VIP System [OPRIT]"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"

new max_players;
new bool:atribut[33][2];

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

public plugin_init()
{	
	new path[64];
	get_localinfo("amxx_configsdir", path, charsmax(path));
	formatex(path, charsmax(path), "%s/vip_maps.ini", path);
	
	new file = fopen(path, "r+");
	
	if(!file_exists(path))
	{
		write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
		write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
	}
	
	new mapname[32];
	get_mapname(mapname, charsmax(mapname));
	
	new text[121], maptext[32], bool:remove_vip = false;
	while(!feof(file))
	{
		fgets(file, text, charsmax(text));
		trim(text);
		
		if(text[0] == ';' || !strlen(text)) 
		{
			continue; 
		}
		
		parse(text, maptext, charsmax(maptext));
		
		if(equal(maptext, mapname))
		{
			log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
			remove_vip = true;
			break;
		}
		
	}
	fclose(file);
	
	if(!remove_vip)
	{
		register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

		//RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);
		RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);
		register_event("CurWeapon", "event_CurWeapon", "be", "1=1");
		register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
		
		register_clcmd("say /vips", "CmdVipsOnline");
		register_clcmd("say_team /vips", "CmdVipsOnline");
		register_clcmd("say vips", "CmdVipsOnline");
		register_clcmd("say_team vips", "CmdVipsOnline");
		
		register_clcmd("say vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team vreauvip", "CmdPrintAttributes");
		register_clcmd("say /vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team /vreauvip", "CmdPrintAttributes");

		register_clcmd("say vip", "ShowVipMenu");
		register_clcmd("say_team vip", "ShowVipMenu");
		register_clcmd("say /vip", "ShowVipMenu");
		register_clcmd("say_team /vip", "ShowVipMenu");

		max_players = get_maxplayers();
	}
	else
	{
		register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
		pause("ade");
	}
	
	register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("vip_", PLUGIN_VERSION);
}

public client_putinserver(id)
{
	if(is_user_vip(id))
	{
		atribut[id][0] = false;
		atribut[id][1] = false;
	}
}

public CmdVipsOnline(id)
{
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;

	new adminnames[33][32], message[256], i, count, len;
	len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
	for(i = 1 ; i <= max_players; i++)
	{
		if(is_user_connected(i) && is_user_vip(i))
			get_user_name(i, adminnames[count++], charsmax(adminnames[]));
	}
	
	if(count > 0)
	{
		for(i = 0; i < count; i++)
		{
			len += format(message[len], 255 -len, "!4%s!1%s ", adminnames, i < (count -1) ? " | " : "");
		}
		ColorChat(id, message);
	}
	else
	{
		len += format(message[len], 255 -len, "!4No one !")
		ColorChat(id, message);
	}

	return PLUGIN_CONTINUE;
}

public CmdPrintAttributes(id)
{
	if(!is_user_connected(id)) return;
	show_motd(id, "vip.txt", "Beneficii VIP");
}

public fw_PlayerSpawnPost(id)
{
	if(is_user_vip(id) && is_user_alive(id))
	{
		set_task(0.25, "give_items", id + 212);
		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id) && is_user_vip(id))
	{
		new Float:fViteza = atribut[id][1] ? 400.0 : VITEZA;
		engfunc(EngFunc_SetClientMaxspeed, id, fViteza);
		set_pev(id, pev_maxspeed, fViteza);
	}
	return HAM_IGNORED;
}

public event_CurWeapon(id)
{
	if(is_user_alive(id) && is_user_vip(id))
		set_user_gravity(id, atribut[id][0] ? 1.0 : GRAVITATIE);
}

public msg_ScoreAttrib(msgid, dest, id)
{
	new id = get_msg_arg_int(1);
	if(is_user_connected(id) && is_user_vip(id))
		set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
	
	return PLUGIN_CONTINUE;
}

public ShowVipMenu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;

	if(!is_user_vip(id))
	{
		ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
		ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
		return PLUGIN_HANDLED;
	}

	new menu = menu_create("\rMeniu VIP", "VipMenuHandler");

	new text[64];
	formatex(text, charsmax(text), "Gravitatie [%s]", atribut[id][0] == false ? "\rOFF\w" : "\yON\w");
	menu_additem(menu, text, "1");

	formatex(text, charsmax(text), "Viteza [%s]", atribut[id][1] == false ? "\rOFF\w" : "\yON\w");
	menu_additem(menu, text, "2");
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public VipMenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	switch(item)
	{
		case 0: atribut[id][0] = !atribut[id][0];
		case 1: atribut[id][1] = !atribut[id][1];
	}

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

stock ColorChat(id, String[], any:...) 
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	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();
	}
}


In fisierul configs se va creea automat un fisier numit vip_maps.ini. Acolo vei trece hartile unde pluginul de vip se va dezactiva.
Nu are cvar-uri
Am facut cum ai vrut tu.
Cauti in sursa si modifici urmatoarele dupa bunul plac:
| Afiseaza codul
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))

#define VITEZA		800.0
#define GRAVITATIE	0.5
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
„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.
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:

27 Aug 2018, 14:15

Jucks wrote:Nick : jucks
Plugin : vip
Flag : t
Cerințe :
1.Sa primești 10 HP + 10 AP + 800$ pe kill
2.Sa începi runda cu 110 HP - 110 AP - 1000$
Meniu arme :
https://m.imgur.com/cj8CKt3
Dacă poți face sa fie designe ul la fel e perfect în legătură cu meniul + tot în meniul vip sa faci atunci când ia armele de acolo sa îi dea și un he + un flash
VIP ul sa fie imun la flash
Sa poți sari de 2 ori
Sa faci ca pe unele mape vipul sa nu mai primească beneficiile
Meniul sa fie disponibil doar după ce trec 3 runde
Acces la chatul adminilor
Sa apară ca VIP în tab
Maxim HP : 150 / AP : 150 / Money : 16000
Sa aiba șansă de respawn de 10%
Mesaj când primește Respawn
[Respawn] Ai primit Respawn în aceasta runda !!!
VIP FREE intre orele : 07-10 ( sa primească beneficiile vip ului dar sa nu conțină vreun mesaj doar Da beneficiile și atat )
VIP ul sa se afle prin comanda /vips
vip_system.sma | Afiseaza codul
/*
CREDITE:
ConnorMcLeod - pentru bullet damage
twistedeuphoria - pentru multi jump
cheap_suit - cateva bucati de cod extrase din biohazard
*/

#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <fakemeta>

// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

#define PLUGIN_NAME "VIP System"
#define PLUGIN_NAME_PAUSED "VIP System [OPRIT]"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"

#define is_user_valid(%1) (1 <= %1 <= max_players)

enum cvars
{
	hp_spawn = 0,
	ap_spawn,
	money_spawn,
	hp_kill,
	hp_hs,
	ap_kill,
	ap_hs,
	hp_max,
	money_kill,
	money_hs,
	show_vip_tab,
	show_bullet_dmg,
	multi_jump,
	noflash,
	sansa_respawn
}

new cvar[cvars], rounds = 0;
new max_players;
new bool:g_bJump[33] = false, g_JumpNum[33] = 0;
new g_iPlayerPos[33], g_iPlayerCol[33];

// NU SCHIMBA
new const Float:g_flCoords[][] =  
{ 
	{0.50, 0.40}, 
	{0.56, 0.44}, 
	{0.60, 0.50}, 
	{0.56, 0.56}, 
	{0.50, 0.60}, 
	{0.44, 0.56}, 
	{0.40, 0.50}, 
	{0.44, 0.44} 
}

// NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea
new const g_iColors[][] = 
{ 
	{0, 127, 255}, // blue 
	{255, 127, 0}, // orange 
	{127, 0, 255}, // purple 
	{255, 0, 0}, // red 
	{255, 100, 150}, // pink
	{0, 255, 0} // green
}

public plugin_init()
{	
	new path[64];
	get_localinfo("amxx_configsdir", path, charsmax(path));
	formatex(path, charsmax(path), "%s/vip_maps.ini", path);
	
	new file = fopen(path, "r+");
	
	if(!file_exists(path))
	{
		write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
		write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
	}
	
	new mapname[32];
	get_mapname(mapname, charsmax(mapname));
	
	new text[121], maptext[32], bool:remove_vip = false;
	while(!feof(file))
	{
		fgets(file, text, charsmax(text));
		trim(text);
		
		if(text[0] == ';' || !strlen(text)) 
		{
			continue; 
		}
		
		parse(text, maptext, charsmax(maptext));
		
		if(equal(maptext, mapname))
		{
			log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
			remove_vip = true;
			break;
		}
		
	}
	fclose(file);
	
	if(!remove_vip)
	{
		register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

		register_event("DeathMsg", "event_DeathMsg", "a");
		register_event("Damage", "event_Damage", "b", "2>0", "3=0");
		//register_event("CurWeapon", "event_CurWeapon", "be", "1=1");
		//register_event("WeapPickup", "event_WeapPickup", "b");
		register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
		register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in")

		RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);

		register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
		register_message(get_user_msgid("ScreenFade"), "msg_ScreenFade");

		register_clcmd("say /vips", "CmdVipsOnline");
		register_clcmd("say_team /vips", "CmdVipsOnline");
		register_clcmd("say vips", "CmdVipsOnline");
		register_clcmd("say_team vips", "CmdVipsOnline");
		
		register_clcmd("say vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team vreauvip", "CmdPrintAttributes");
		register_clcmd("say /vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team /vreauvip", "CmdPrintAttributes");

		cvar[hp_spawn] = register_cvar("vip_hp_spawn", "110");			// 0 = dezactivat
		cvar[ap_spawn] = register_cvar("vip_ap_spawn", "110");			// 0 = dezactivat
		cvar[money_spawn] = register_cvar("vip_money_spawn", "1000");		// 0 = dezactivat
		cvar[show_vip_tab] = register_cvar("vip_show_tab", "1");			// 0 = dezactivat
		cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "0");		// 0 = dezactivat
		cvar[multi_jump] = register_cvar("vip_multijump", "1");			// 0 = dezactivat. Daca valoarea cvar-ului este 1, vei sari de 2 ori. Orice valoare pui, va fi +1 jump
		cvar[hp_kill] = register_cvar("vip_hp_kill", "10");				// 0 = dezactivat
		cvar[hp_hs] = register_cvar("vip_hp_hs", "10");				// 0 = dezactivat
		cvar[ap_kill] = register_cvar("vip_ap_kill", "10");				// 0 = dezactivat
		cvar[ap_hs] = register_cvar("vip_ap_hs", "10");				// 0 = dezactivat
		cvar[hp_max] = register_cvar("vip_hp_max", "150");			// 0 = viata infinita
		cvar[money_kill] = register_cvar("vip_money_kill", "800");			// 0 = dezactivat
		cvar[money_hs] = register_cvar("vip_money_hs", "800");			// 0 = dezactivat
		cvar[noflash] = register_cvar("vip_noflash", "1");				// 0 = dezactivat
		cvar[sansa_respawn] = register_cvar("vip_sansa_respawn", "10");		// 0 = dezactivat | valoare cuprinsa intre [1 - 100] | 20 = 20% sansa respawn etc...

		max_players = get_maxplayers();
	}
	else
	{
		register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
		pause("ade");
	}
	
	register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("vip_", PLUGIN_VERSION);
}

public client_putinserver(id)
{
	g_JumpNum[id] = 0;
	g_bJump[id] = false;
}

public CmdVipsOnline(id)
{
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;

	new adminnames[33][32], message[256], i, count, len;
	len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
	for(i = 1 ; i <= max_players; i++)
	{
		if(is_user_connected(i) && is_user_vip(i))
			get_user_name(i, adminnames[count++], charsmax(adminnames[]));
	}
	
	if(count > 0)
	{
		for(i = 0; i < count; i++)
		{
			len += format(message[len], 255 -len, "!4%s!1%s ", adminnames, i < (count -1) ? " | " : "");
		}
		ColorChat(id, message);
	}
	else
	{
		len += format(message[len], 255 -len, "!4No one !")
		ColorChat(id, message);
	}

	return PLUGIN_CONTINUE;
}

public CmdPrintAttributes(id)
{
	if(!is_user_connected(id)) return;
	show_motd(id, "vip.txt", "Beneficii VIP");
}

public client_PreThink(id)
{
	new cache = get_pcvar_num(cvar[multi_jump]);
	if(is_user_alive(id) && !is_user_vip(id))
		return PLUGIN_CONTINUE;

	new nbut = get_user_button(id);
	new obut = get_user_oldbutton(id);

	if(cache != 0)
	{	
		if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
		{
			if(g_JumpNum[id] < cache)
			{
				g_bJump[id] = true;
				g_JumpNum[id]++;
				return PLUGIN_CONTINUE;
			}
		}
	
		if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
		{
			g_JumpNum[id] = 0;
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

public client_PostThink(id)
{
	new jump_num = get_pcvar_num(cvar[multi_jump]);
	if(!jump_num)
		return PLUGIN_CONTINUE;
		
	if(is_user_alive(id) && !is_user_vip(id))
		return PLUGIN_CONTINUE;
	
	if(g_bJump[id])
	{
		new Float:fVelocity[3];
		entity_get_vector(id, EV_VEC_velocity, fVelocity);
		fVelocity[2] = random_float(265.0, 285.0);
		entity_set_vector(id, EV_VEC_velocity, fVelocity);
		
		g_bJump[id] = false;
		return PLUGIN_CONTINUE;
	}
	
	return PLUGIN_CONTINUE;
}

public event_DeathMsg()
{
	new killer = read_data(1), victim = read_data(2), hs = read_data(3), cache;	
	if(is_user_alive(killer) && is_user_vip(killer))
	{
		if(killer == victim) return PLUGIN_HANDLED;

		cache = hs ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]);
		if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max])));

		cache = hs ? get_pcvar_num(cvar[ap_hs]) : get_pcvar_num(cvar[ap_kill]);
		if(cache != 0) set_user_armor(killer, min(get_user_armor(killer) + cache, get_pcvar_num(cvar[hp_max])));

		cache = hs ? get_pcvar_num(cvar[money_hs]) : get_pcvar_num(cvar[money_kill]);
		if(cache != 0) cs_set_user_money(killer, min(cs_get_user_money(killer) + cache, 16000));
	}

	if(is_user_vip(victim) && is_user_alive(killer))
	{
		cache = get_pcvar_num(cvar[sansa_respawn]);
		if(cache != 0)
		{
			new sansa = random_num(1, 100);
			sansa = (sansa <= cache) ? 1 : 0;
			if(sansa) set_task(1.0, "task_respawn", victim + 3910);
		}
	}

	return PLUGIN_CONTINUE;
}

public task_respawn(victim)
{
	victim -= 3910;
	if(!is_user_connected(victim))
		return;
	if(is_user_alive(victim))
		return;
	if(!is_user_vip(victim))
		return;

	ExecuteHamB(Ham_CS_RoundRespawn, victim);
	ColorChat(victim, "!3%s!1 Ai primit!4 Respawn!1 in aceasta runda !!! Mult noroc.", TAG);
}

public event_Damage(victim)
{
	if(!get_pcvar_num(cvar[show_bullet_dmg]))
		return PLUGIN_CONTINUE;
		
	new id = get_user_attacker(victim);
	if(is_user_valid(id))
	{
		if(is_user_alive(id) && !is_user_vip(id))
			return PLUGIN_HANDLED;
		
		if(read_data(4) || read_data(5) || read_data(6))
		{		
			new iPos = ++g_iPlayerPos[id];
			if(iPos == sizeof(g_flCoords))
				iPos = g_iPlayerPos[id] = 0;
			
			new iCol = ++g_iPlayerCol[id];
			if(iCol == sizeof(g_iColors))
				iCol = g_iPlayerCol[id] = 0;
			
			set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1);
			show_hudmessage(id, "%d", read_data(2));
		}
	}
	
	return PLUGIN_CONTINUE;
}

public event_NewRound()
{
	rounds++;
}

public event_textmsg()
{
	rounds = 0;
}

public fw_PlayerSpawnPost(id)
{
	if(is_user_vip(id) && is_user_alive(id))
	{
		set_task(0.25, "give_items", id + 212);
		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public give_items(taskid)
{
	new id = taskid - 212;
	if(!is_user_alive(id))
		return;

	new cache = get_pcvar_num(cvar[hp_spawn])
	if(cache != 0) set_user_health(id, cache);

	cache = get_pcvar_num(cvar[ap_spawn]);
	if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM);

	cache = get_pcvar_num(cvar[money_spawn]);
	if(cache != 0) cs_set_user_money(id, min(cs_get_user_money(id) + cache, 16000));

	// meniu disponibil doar dupa ce trec 3 runde, adica din a 4a va fi disponibil
	if(rounds >= 4) ShowVipMenu(id);
}

public msg_ScoreAttrib(msgid, dest, id)
{
	if(!get_pcvar_num(cvar[show_vip_tab]))
		return PLUGIN_CONTINUE;
		
	new id = get_msg_arg_int(1);
	if(is_user_connected(id) && is_user_vip(id))
		set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
	
	return PLUGIN_CONTINUE;
}

public msg_ScreenFade(msgid, dest, id)
{
	if(!get_pcvar_num(cvar[noflash]))
		return PLUGIN_HANDLED;

	if(is_user_connected(id) && is_user_vip(id))
	{
		static data[4];
		data[0] = get_msg_arg_int(4);
		data[1] = get_msg_arg_int(5);
		data[2] = get_msg_arg_int(6);
		data[3] = get_msg_arg_int(7);
		
		if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
			return PLUGIN_HANDLED;
	}

	return PLUGIN_CONTINUE;
}

public ShowVipMenu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;

	if(!is_user_vip(id))
	{
		ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
		ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
		return PLUGIN_HANDLED;
	}

	give_item(id, "weapon_hegrenade");
	give_item(id, "weapon_flashbang");
	drop_weapons(id, 2);
	give_item(id, "weapon_deagle");
	cs_set_user_bpammo(id, CSW_DEAGLE, 35);

	new menu = menu_create("\rMeniu VIP", "VipMenuHandler");
	menu_additem(menu, "Vreau \yM4A1 + Deagle", "1");
	menu_additem(menu, "Vreau \yAK-47 + Deagle", "2");
	menu_additem(menu, "Vreau \yAWP + Deagle", "3");
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public VipMenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	switch(item)
	{
		case 0:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_m4a1");
			cs_set_user_bpammo(id, CSW_M4A1, 120);
			
			ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
		case 1:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_ak47");
			cs_set_user_bpammo(id, CSW_AK47, 120);
			
			ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
		case 2:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_awp");
			cs_set_user_bpammo(id, CSW_AWP, 30);
			
			ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
	}

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

// Drop primary/secondary weapons
stock drop_weapons(id, dropwhat)
{
	// Get user weapons
	static weapons[32], num, i, weaponid, wname[32];
	num = 0; // reset passed weapons count (bugfix)
	get_user_weapons(id, weapons, num);
	
	// Loop through them and drop primaries or secondaries
	for (i = 0; i < num; i++)
	{
		// Prevent re-indexing the array
		weaponid = weapons;
		
		if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			// Get weapon entity
			get_weaponname(weaponid, wname, charsmax(wname));
			engclient_cmd(id, "drop", wname);
		}
	}
}

stock ColorChat(id, String[], any:...) 
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	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();
	}
}


Am facut cum ai cerut. Pluginul are si cvar-uri astfel incat sa-l modifici dupa bunul plac. Ti le-am modificat eu exact cum ai precizat, te-am scapat de o treaba.
Se va creea un fisier automat in configs, vip_maps.ini, in el o sa treci hartile unde pluginul va fi dezactivat.
Presupun ca stii sa modifici si singur cvar-urile, daca nu, lasa mesaj mai jos.

Cauti in sma liniile urmatoare:
| Afiseaza codul
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

Modifici dupa bunul plac.
Daca intampini erori la functioanarea lui, precizeaza-le mai jos.


Pluginul de vip event il iei din primul topic.
„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.
User avatar
Jucks
Membru, skill +3
Membru, skill +3
Posts: 1141
Joined: 20 May 2016, 16:28
Detinator Steam: Da
Fond eXtream: 0
Contact:

28 Aug 2018, 12:21

YONTU wrote:
Jucks wrote:Nick : jucks
Plugin : vip
Flag : t
Cerințe :
1.Sa primești 10 HP + 10 AP + 800$ pe kill
2.Sa începi runda cu 110 HP - 110 AP - 1000$
Meniu arme :
https://m.imgur.com/cj8CKt3
Dacă poți face sa fie designe ul la fel e perfect în legătură cu meniul + tot în meniul vip sa faci atunci când ia armele de acolo sa îi dea și un he + un flash
VIP ul sa fie imun la flash
Sa poți sari de 2 ori
Sa faci ca pe unele mape vipul sa nu mai primească beneficiile
Meniul sa fie disponibil doar după ce trec 3 runde
Acces la chatul adminilor
Sa apară ca VIP în tab
Maxim HP : 150 / AP : 150 / Money : 16000
Sa aiba șansă de respawn de 10%
Mesaj când primește Respawn
[Respawn] Ai primit Respawn în aceasta runda !!!
VIP FREE intre orele : 07-10 ( sa primească beneficiile vip ului dar sa nu conțină vreun mesaj doar Da beneficiile și atat )
VIP ul sa se afle prin comanda /vips
vip_system.sma | Afiseaza codul
/*
CREDITE:
ConnorMcLeod - pentru bullet damage
twistedeuphoria - pentru multi jump
cheap_suit - cateva bucati de cod extrase din biohazard
*/

#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <fakemeta>

// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

#define PLUGIN_NAME "VIP System"
#define PLUGIN_NAME_PAUSED "VIP System [OPRIT]"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"

#define is_user_valid(%1) (1 <= %1 <= max_players)

enum cvars
{
	hp_spawn = 0,
	ap_spawn,
	money_spawn,
	hp_kill,
	hp_hs,
	ap_kill,
	ap_hs,
	hp_max,
	money_kill,
	money_hs,
	show_vip_tab,
	show_bullet_dmg,
	multi_jump,
	noflash,
	sansa_respawn
}

new cvar[cvars], rounds = 0;
new max_players;
new bool:g_bJump[33] = false, g_JumpNum[33] = 0;
new g_iPlayerPos[33], g_iPlayerCol[33];

// NU SCHIMBA
new const Float:g_flCoords[][] =  
{ 
	{0.50, 0.40}, 
	{0.56, 0.44}, 
	{0.60, 0.50}, 
	{0.56, 0.56}, 
	{0.50, 0.60}, 
	{0.44, 0.56}, 
	{0.40, 0.50}, 
	{0.44, 0.44} 
}

// NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea
new const g_iColors[][] = 
{ 
	{0, 127, 255}, // blue 
	{255, 127, 0}, // orange 
	{127, 0, 255}, // purple 
	{255, 0, 0}, // red 
	{255, 100, 150}, // pink
	{0, 255, 0} // green
}

public plugin_init()
{	
	new path[64];
	get_localinfo("amxx_configsdir", path, charsmax(path));
	formatex(path, charsmax(path), "%s/vip_maps.ini", path);
	
	new file = fopen(path, "r+");
	
	if(!file_exists(path))
	{
		write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
		write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
	}
	
	new mapname[32];
	get_mapname(mapname, charsmax(mapname));
	
	new text[121], maptext[32], bool:remove_vip = false;
	while(!feof(file))
	{
		fgets(file, text, charsmax(text));
		trim(text);
		
		if(text[0] == ';' || !strlen(text)) 
		{
			continue; 
		}
		
		parse(text, maptext, charsmax(maptext));
		
		if(equal(maptext, mapname))
		{
			log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
			remove_vip = true;
			break;
		}
		
	}
	fclose(file);
	
	if(!remove_vip)
	{
		register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

		register_event("DeathMsg", "event_DeathMsg", "a");
		register_event("Damage", "event_Damage", "b", "2>0", "3=0");
		//register_event("CurWeapon", "event_CurWeapon", "be", "1=1");
		//register_event("WeapPickup", "event_WeapPickup", "b");
		register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
		register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in")

		RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);

		register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
		register_message(get_user_msgid("ScreenFade"), "msg_ScreenFade");

		register_clcmd("say /vips", "CmdVipsOnline");
		register_clcmd("say_team /vips", "CmdVipsOnline");
		register_clcmd("say vips", "CmdVipsOnline");
		register_clcmd("say_team vips", "CmdVipsOnline");
		
		register_clcmd("say vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team vreauvip", "CmdPrintAttributes");
		register_clcmd("say /vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team /vreauvip", "CmdPrintAttributes");

		cvar[hp_spawn] = register_cvar("vip_hp_spawn", "110");			// 0 = dezactivat
		cvar[ap_spawn] = register_cvar("vip_ap_spawn", "110");			// 0 = dezactivat
		cvar[money_spawn] = register_cvar("vip_money_spawn", "1000");		// 0 = dezactivat
		cvar[show_vip_tab] = register_cvar("vip_show_tab", "1");			// 0 = dezactivat
		cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "0");		// 0 = dezactivat
		cvar[multi_jump] = register_cvar("vip_multijump", "1");			// 0 = dezactivat. Daca valoarea cvar-ului este 1, vei sari de 2 ori. Orice valoare pui, va fi +1 jump
		cvar[hp_kill] = register_cvar("vip_hp_kill", "10");				// 0 = dezactivat
		cvar[hp_hs] = register_cvar("vip_hp_hs", "10");				// 0 = dezactivat
		cvar[ap_kill] = register_cvar("vip_ap_kill", "10");				// 0 = dezactivat
		cvar[ap_hs] = register_cvar("vip_ap_hs", "10");				// 0 = dezactivat
		cvar[hp_max] = register_cvar("vip_hp_max", "150");			// 0 = viata infinita
		cvar[money_kill] = register_cvar("vip_money_kill", "800");			// 0 = dezactivat
		cvar[money_hs] = register_cvar("vip_money_hs", "800");			// 0 = dezactivat
		cvar[noflash] = register_cvar("vip_noflash", "1");				// 0 = dezactivat
		cvar[sansa_respawn] = register_cvar("vip_sansa_respawn", "10");		// 0 = dezactivat | valoare cuprinsa intre [1 - 100] | 20 = 20% sansa respawn etc...

		max_players = get_maxplayers();
	}
	else
	{
		register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
		pause("ade");
	}
	
	register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("vip_", PLUGIN_VERSION);
}

public client_putinserver(id)
{
	g_JumpNum[id] = 0;
	g_bJump[id] = false;
}

public CmdVipsOnline(id)
{
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;

	new adminnames[33][32], message[256], i, count, len;
	len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
	for(i = 1 ; i <= max_players; i++)
	{
		if(is_user_connected(i) && is_user_vip(i))
			get_user_name(i, adminnames[count++], charsmax(adminnames[]));
	}
	
	if(count > 0)
	{
		for(i = 0; i < count; i++)
		{
			len += format(message[len], 255 -len, "!4%s!1%s ", adminnames, i < (count -1) ? " | " : "");
		}
		ColorChat(id, message);
	}
	else
	{
		len += format(message[len], 255 -len, "!4No one !")
		ColorChat(id, message);
	}

	return PLUGIN_CONTINUE;
}

public CmdPrintAttributes(id)
{
	if(!is_user_connected(id)) return;
	show_motd(id, "vip.txt", "Beneficii VIP");
}

public client_PreThink(id)
{
	new cache = get_pcvar_num(cvar[multi_jump]);
	if(is_user_alive(id) && !is_user_vip(id))
		return PLUGIN_CONTINUE;

	new nbut = get_user_button(id);
	new obut = get_user_oldbutton(id);

	if(cache != 0)
	{	
		if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
		{
			if(g_JumpNum[id] < cache)
			{
				g_bJump[id] = true;
				g_JumpNum[id]++;
				return PLUGIN_CONTINUE;
			}
		}
	
		if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
		{
			g_JumpNum[id] = 0;
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

public client_PostThink(id)
{
	new jump_num = get_pcvar_num(cvar[multi_jump]);
	if(!jump_num)
		return PLUGIN_CONTINUE;
		
	if(is_user_alive(id) && !is_user_vip(id))
		return PLUGIN_CONTINUE;
	
	if(g_bJump[id])
	{
		new Float:fVelocity[3];
		entity_get_vector(id, EV_VEC_velocity, fVelocity);
		fVelocity[2] = random_float(265.0, 285.0);
		entity_set_vector(id, EV_VEC_velocity, fVelocity);
		
		g_bJump[id] = false;
		return PLUGIN_CONTINUE;
	}
	
	return PLUGIN_CONTINUE;
}

public event_DeathMsg()
{
	new killer = read_data(1), victim = read_data(2), hs = read_data(3), cache;	
	if(is_user_alive(killer) && is_user_vip(killer))
	{
		if(killer == victim) return PLUGIN_HANDLED;

		cache = hs ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]);
		if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max])));

		cache = hs ? get_pcvar_num(cvar[ap_hs]) : get_pcvar_num(cvar[ap_kill]);
		if(cache != 0) set_user_armor(killer, min(get_user_armor(killer) + cache, get_pcvar_num(cvar[hp_max])));

		cache = hs ? get_pcvar_num(cvar[money_hs]) : get_pcvar_num(cvar[money_kill]);
		if(cache != 0) cs_set_user_money(killer, min(cs_get_user_money(killer) + cache, 16000));
	}

	if(is_user_vip(victim) && is_user_alive(killer))
	{
		cache = get_pcvar_num(cvar[sansa_respawn]);
		if(cache != 0)
		{
			new sansa = random_num(1, 100);
			sansa = (sansa <= cache) ? 1 : 0;
			if(sansa) set_task(1.0, "task_respawn", victim + 3910);
		}
	}

	return PLUGIN_CONTINUE;
}

public task_respawn(victim)
{
	victim -= 3910;
	if(!is_user_connected(victim))
		return;
	if(is_user_alive(victim))
		return;
	if(!is_user_vip(victim))
		return;

	ExecuteHamB(Ham_CS_RoundRespawn, victim);
	ColorChat(victim, "!3%s!1 Ai primit!4 Respawn!1 in aceasta runda !!! Mult noroc.", TAG);
}

public event_Damage(victim)
{
	if(!get_pcvar_num(cvar[show_bullet_dmg]))
		return PLUGIN_CONTINUE;
		
	new id = get_user_attacker(victim);
	if(is_user_valid(id))
	{
		if(is_user_alive(id) && !is_user_vip(id))
			return PLUGIN_HANDLED;
		
		if(read_data(4) || read_data(5) || read_data(6))
		{		
			new iPos = ++g_iPlayerPos[id];
			if(iPos == sizeof(g_flCoords))
				iPos = g_iPlayerPos[id] = 0;
			
			new iCol = ++g_iPlayerCol[id];
			if(iCol == sizeof(g_iColors))
				iCol = g_iPlayerCol[id] = 0;
			
			set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1);
			show_hudmessage(id, "%d", read_data(2));
		}
	}
	
	return PLUGIN_CONTINUE;
}

public event_NewRound()
{
	rounds++;
}

public event_textmsg()
{
	rounds = 0;
}

public fw_PlayerSpawnPost(id)
{
	if(is_user_vip(id) && is_user_alive(id))
	{
		set_task(0.25, "give_items", id + 212);
		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public give_items(taskid)
{
	new id = taskid - 212;
	if(!is_user_alive(id))
		return;

	new cache = get_pcvar_num(cvar[hp_spawn])
	if(cache != 0) set_user_health(id, cache);

	cache = get_pcvar_num(cvar[ap_spawn]);
	if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM);

	cache = get_pcvar_num(cvar[money_spawn]);
	if(cache != 0) cs_set_user_money(id, min(cs_get_user_money(id) + cache, 16000));

	// meniu disponibil doar dupa ce trec 3 runde, adica din a 4a va fi disponibil
	if(rounds >= 4) ShowVipMenu(id);
}

public msg_ScoreAttrib(msgid, dest, id)
{
	if(!get_pcvar_num(cvar[show_vip_tab]))
		return PLUGIN_CONTINUE;
		
	new id = get_msg_arg_int(1);
	if(is_user_connected(id) && is_user_vip(id))
		set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
	
	return PLUGIN_CONTINUE;
}

public msg_ScreenFade(msgid, dest, id)
{
	if(!get_pcvar_num(cvar[noflash]))
		return PLUGIN_HANDLED;

	if(is_user_connected(id) && is_user_vip(id))
	{
		static data[4];
		data[0] = get_msg_arg_int(4);
		data[1] = get_msg_arg_int(5);
		data[2] = get_msg_arg_int(6);
		data[3] = get_msg_arg_int(7);
		
		if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
			return PLUGIN_HANDLED;
	}

	return PLUGIN_CONTINUE;
}

public ShowVipMenu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;

	if(!is_user_vip(id))
	{
		ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
		ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
		return PLUGIN_HANDLED;
	}

	give_item(id, "weapon_hegrenade");
	give_item(id, "weapon_flashbang");
	drop_weapons(id, 2);
	give_item(id, "weapon_deagle");
	cs_set_user_bpammo(id, CSW_DEAGLE, 35);

	new menu = menu_create("\rMeniu VIP", "VipMenuHandler");
	menu_additem(menu, "Vreau \yM4A1 + Deagle", "1");
	menu_additem(menu, "Vreau \yAK-47 + Deagle", "2");
	menu_additem(menu, "Vreau \yAWP + Deagle", "3");
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public VipMenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	switch(item)
	{
		case 0:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_m4a1");
			cs_set_user_bpammo(id, CSW_M4A1, 120);
			
			ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
		case 1:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_ak47");
			cs_set_user_bpammo(id, CSW_AK47, 120);
			
			ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
		case 2:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_awp");
			cs_set_user_bpammo(id, CSW_AWP, 30);
			
			ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
	}

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

// Drop primary/secondary weapons
stock drop_weapons(id, dropwhat)
{
	// Get user weapons
	static weapons[32], num, i, weaponid, wname[32];
	num = 0; // reset passed weapons count (bugfix)
	get_user_weapons(id, weapons, num);
	
	// Loop through them and drop primaries or secondaries
	for (i = 0; i < num; i++)
	{
		// Prevent re-indexing the array
		weaponid = weapons;
		
		if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			// Get weapon entity
			get_weaponname(weaponid, wname, charsmax(wname));
			engclient_cmd(id, "drop", wname);
		}
	}
}

stock ColorChat(id, String[], any:...) 
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	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();
	}
}


Am facut cum ai cerut. Pluginul are si cvar-uri astfel incat sa-l modifici dupa bunul plac. Ti le-am modificat eu exact cum ai precizat, te-am scapat de o treaba.
Se va creea un fisier automat in configs, vip_maps.ini, in el o sa treci hartile unde pluginul va fi dezactivat.
Presupun ca stii sa modifici si singur cvar-urile, daca nu, lasa mesaj mai jos.

Cauti in sma liniile urmatoare:
| Afiseaza codul
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

Modifici dupa bunul plac.
Daca intampini erori la functioanarea lui, precizeaza-le mai jos.


Pluginul de vip event il iei din primul topic.

App , modifica la chestia cu afișarea beneficiilor din .TXT în html și sa fie prin /vip nu /vreauvip
Și apropo numele la server este : GO.reclama.RO și adresa de contact : costin.mihai50[Skype]
Last edited by YONTU on 28 Aug 2018, 14:07, edited 1 time in total.
Reason: reclama scoasa
Detinator : # Go.Tried.Ro #
User avatar
RaFy1995
Membru, skill +1
Membru, skill +1
Posts: 418
Joined: 13 Feb 2016, 22:13
Detinator Steam: Da
CS Status: Respecta si vei fi Respectat !
SteamID: RaFy1995
Fond eXtream: 0
Has thanked: 195 times
Been thanked: 8 times

28 Aug 2018, 19:04

Salut, mi-ai scris pe Privat sa iti pun aici VIP-ul pe care il doresc,

Code: Select all

- VIP-ul sa se activeze din a 3-a Runda cu Meniul de arme 
- M4A1 + Deagle + Armor / AK47 + Deagle + Armor / AWP + Deagle + Armor
- Sa ai Bullet Damage + Multi-Jump + Ecran albastru cand faci frag
- Cand faci kill viata poate ajunge pana la 110
- Primesti +15 HP Frag Normal 
- Primesti +30 HP Frag Headshot
- Primesti +60 HP Frag Knife
- Primesti +80 HP Frag KnifeHeadshot
- Damage marit cu 50% pentru toate armele, inclusiv Grenada
- Apari ca VIP in Tab + Slot rezervat pe Server
- Mesaj la connectare, atunci cand te connectezi va aparea asa, Atentie "*VIP* X s-a connectat
- Si sa fie FREE EVENT la toata lumea sa aiba VIP gratis de la ora 00:00 pana la ora 12:00!

Si pe Hartile de AWP sa fie Dezactivat!
Si Flagul sa fie litera t

Si daca ai putea sa il faci in asa fel sa fie fara cvaruri in amxx cfg stii tu!
Image
User avatar
Jucks
Membru, skill +3
Membru, skill +3
Posts: 1141
Joined: 20 May 2016, 16:28
Detinator Steam: Da
Fond eXtream: 0
Contact:

28 Aug 2018, 22:26

Jucks wrote:
YONTU wrote:
Jucks wrote:Nick : jucks
Plugin : vip
Flag : t
Cerințe :
1.Sa primești 10 HP + 10 AP + 800$ pe kill
2.Sa începi runda cu 110 HP - 110 AP - 1000$
Meniu arme :
https://m.imgur.com/cj8CKt3
Dacă poți face sa fie designe ul la fel e perfect în legătură cu meniul + tot în meniul vip sa faci atunci când ia armele de acolo sa îi dea și un he + un flash
VIP ul sa fie imun la flash
Sa poți sari de 2 ori
Sa faci ca pe unele mape vipul sa nu mai primească beneficiile
Meniul sa fie disponibil doar după ce trec 3 runde
Acces la chatul adminilor
Sa apară ca VIP în tab
Maxim HP : 150 / AP : 150 / Money : 16000
Sa aiba șansă de respawn de 10%
Mesaj când primește Respawn
[Respawn] Ai primit Respawn în aceasta runda !!!
VIP FREE intre orele : 07-10 ( sa primească beneficiile vip ului dar sa nu conțină vreun mesaj doar Da beneficiile și atat )
VIP ul sa se afle prin comanda /vips
vip_system.sma | Afiseaza codul
/*
CREDITE:
ConnorMcLeod - pentru bullet damage
twistedeuphoria - pentru multi jump
cheap_suit - cateva bucati de cod extrase din biohazard
*/

#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <fakemeta>

// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

#define PLUGIN_NAME "VIP System"
#define PLUGIN_NAME_PAUSED "VIP System [OPRIT]"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"

#define is_user_valid(%1) (1 <= %1 <= max_players)

enum cvars
{
	hp_spawn = 0,
	ap_spawn,
	money_spawn,
	hp_kill,
	hp_hs,
	ap_kill,
	ap_hs,
	hp_max,
	money_kill,
	money_hs,
	show_vip_tab,
	show_bullet_dmg,
	multi_jump,
	noflash,
	sansa_respawn
}

new cvar[cvars], rounds = 0;
new max_players;
new bool:g_bJump[33] = false, g_JumpNum[33] = 0;
new g_iPlayerPos[33], g_iPlayerCol[33];

// NU SCHIMBA
new const Float:g_flCoords[][] =  
{ 
	{0.50, 0.40}, 
	{0.56, 0.44}, 
	{0.60, 0.50}, 
	{0.56, 0.56}, 
	{0.50, 0.60}, 
	{0.44, 0.56}, 
	{0.40, 0.50}, 
	{0.44, 0.44} 
}

// NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea
new const g_iColors[][] = 
{ 
	{0, 127, 255}, // blue 
	{255, 127, 0}, // orange 
	{127, 0, 255}, // purple 
	{255, 0, 0}, // red 
	{255, 100, 150}, // pink
	{0, 255, 0} // green
}

public plugin_init()
{	
	new path[64];
	get_localinfo("amxx_configsdir", path, charsmax(path));
	formatex(path, charsmax(path), "%s/vip_maps.ini", path);
	
	new file = fopen(path, "r+");
	
	if(!file_exists(path))
	{
		write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
		write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
	}
	
	new mapname[32];
	get_mapname(mapname, charsmax(mapname));
	
	new text[121], maptext[32], bool:remove_vip = false;
	while(!feof(file))
	{
		fgets(file, text, charsmax(text));
		trim(text);
		
		if(text[0] == ';' || !strlen(text)) 
		{
			continue; 
		}
		
		parse(text, maptext, charsmax(maptext));
		
		if(equal(maptext, mapname))
		{
			log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
			remove_vip = true;
			break;
		}
		
	}
	fclose(file);
	
	if(!remove_vip)
	{
		register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

		register_event("DeathMsg", "event_DeathMsg", "a");
		register_event("Damage", "event_Damage", "b", "2>0", "3=0");
		//register_event("CurWeapon", "event_CurWeapon", "be", "1=1");
		//register_event("WeapPickup", "event_WeapPickup", "b");
		register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
		register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in")

		RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);

		register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
		register_message(get_user_msgid("ScreenFade"), "msg_ScreenFade");

		register_clcmd("say /vips", "CmdVipsOnline");
		register_clcmd("say_team /vips", "CmdVipsOnline");
		register_clcmd("say vips", "CmdVipsOnline");
		register_clcmd("say_team vips", "CmdVipsOnline");
		
		register_clcmd("say vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team vreauvip", "CmdPrintAttributes");
		register_clcmd("say /vreauvip", "CmdPrintAttributes");
		register_clcmd("say_team /vreauvip", "CmdPrintAttributes");

		cvar[hp_spawn] = register_cvar("vip_hp_spawn", "110");			// 0 = dezactivat
		cvar[ap_spawn] = register_cvar("vip_ap_spawn", "110");			// 0 = dezactivat
		cvar[money_spawn] = register_cvar("vip_money_spawn", "1000");		// 0 = dezactivat
		cvar[show_vip_tab] = register_cvar("vip_show_tab", "1");			// 0 = dezactivat
		cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "0");		// 0 = dezactivat
		cvar[multi_jump] = register_cvar("vip_multijump", "1");			// 0 = dezactivat. Daca valoarea cvar-ului este 1, vei sari de 2 ori. Orice valoare pui, va fi +1 jump
		cvar[hp_kill] = register_cvar("vip_hp_kill", "10");				// 0 = dezactivat
		cvar[hp_hs] = register_cvar("vip_hp_hs", "10");				// 0 = dezactivat
		cvar[ap_kill] = register_cvar("vip_ap_kill", "10");				// 0 = dezactivat
		cvar[ap_hs] = register_cvar("vip_ap_hs", "10");				// 0 = dezactivat
		cvar[hp_max] = register_cvar("vip_hp_max", "150");			// 0 = viata infinita
		cvar[money_kill] = register_cvar("vip_money_kill", "800");			// 0 = dezactivat
		cvar[money_hs] = register_cvar("vip_money_hs", "800");			// 0 = dezactivat
		cvar[noflash] = register_cvar("vip_noflash", "1");				// 0 = dezactivat
		cvar[sansa_respawn] = register_cvar("vip_sansa_respawn", "10");		// 0 = dezactivat | valoare cuprinsa intre [1 - 100] | 20 = 20% sansa respawn etc...

		max_players = get_maxplayers();
	}
	else
	{
		register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
		pause("ade");
	}
	
	register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("vip_", PLUGIN_VERSION);
}

public client_putinserver(id)
{
	g_JumpNum[id] = 0;
	g_bJump[id] = false;
}

public CmdVipsOnline(id)
{
	if(!is_user_connected(id))
		return PLUGIN_CONTINUE;

	new adminnames[33][32], message[256], i, count, len;
	len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
	for(i = 1 ; i <= max_players; i++)
	{
		if(is_user_connected(i) && is_user_vip(i))
			get_user_name(i, adminnames[count++], charsmax(adminnames[]));
	}
	
	if(count > 0)
	{
		for(i = 0; i < count; i++)
		{
			len += format(message[len], 255 -len, "!4%s!1%s ", adminnames, i < (count -1) ? " | " : "");
		}
		ColorChat(id, message);
	}
	else
	{
		len += format(message[len], 255 -len, "!4No one !")
		ColorChat(id, message);
	}

	return PLUGIN_CONTINUE;
}

public CmdPrintAttributes(id)
{
	if(!is_user_connected(id)) return;
	show_motd(id, "vip.txt", "Beneficii VIP");
}

public client_PreThink(id)
{
	new cache = get_pcvar_num(cvar[multi_jump]);
	if(is_user_alive(id) && !is_user_vip(id))
		return PLUGIN_CONTINUE;

	new nbut = get_user_button(id);
	new obut = get_user_oldbutton(id);

	if(cache != 0)
	{	
		if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
		{
			if(g_JumpNum[id] < cache)
			{
				g_bJump[id] = true;
				g_JumpNum[id]++;
				return PLUGIN_CONTINUE;
			}
		}
	
		if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
		{
			g_JumpNum[id] = 0;
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

public client_PostThink(id)
{
	new jump_num = get_pcvar_num(cvar[multi_jump]);
	if(!jump_num)
		return PLUGIN_CONTINUE;
		
	if(is_user_alive(id) && !is_user_vip(id))
		return PLUGIN_CONTINUE;
	
	if(g_bJump[id])
	{
		new Float:fVelocity[3];
		entity_get_vector(id, EV_VEC_velocity, fVelocity);
		fVelocity[2] = random_float(265.0, 285.0);
		entity_set_vector(id, EV_VEC_velocity, fVelocity);
		
		g_bJump[id] = false;
		return PLUGIN_CONTINUE;
	}
	
	return PLUGIN_CONTINUE;
}

public event_DeathMsg()
{
	new killer = read_data(1), victim = read_data(2), hs = read_data(3), cache;	
	if(is_user_alive(killer) && is_user_vip(killer))
	{
		if(killer == victim) return PLUGIN_HANDLED;

		cache = hs ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]);
		if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max])));

		cache = hs ? get_pcvar_num(cvar[ap_hs]) : get_pcvar_num(cvar[ap_kill]);
		if(cache != 0) set_user_armor(killer, min(get_user_armor(killer) + cache, get_pcvar_num(cvar[hp_max])));

		cache = hs ? get_pcvar_num(cvar[money_hs]) : get_pcvar_num(cvar[money_kill]);
		if(cache != 0) cs_set_user_money(killer, min(cs_get_user_money(killer) + cache, 16000));
	}

	if(is_user_vip(victim) && is_user_alive(killer))
	{
		cache = get_pcvar_num(cvar[sansa_respawn]);
		if(cache != 0)
		{
			new sansa = random_num(1, 100);
			sansa = (sansa <= cache) ? 1 : 0;
			if(sansa) set_task(1.0, "task_respawn", victim + 3910);
		}
	}

	return PLUGIN_CONTINUE;
}

public task_respawn(victim)
{
	victim -= 3910;
	if(!is_user_connected(victim))
		return;
	if(is_user_alive(victim))
		return;
	if(!is_user_vip(victim))
		return;

	ExecuteHamB(Ham_CS_RoundRespawn, victim);
	ColorChat(victim, "!3%s!1 Ai primit!4 Respawn!1 in aceasta runda !!! Mult noroc.", TAG);
}

public event_Damage(victim)
{
	if(!get_pcvar_num(cvar[show_bullet_dmg]))
		return PLUGIN_CONTINUE;
		
	new id = get_user_attacker(victim);
	if(is_user_valid(id))
	{
		if(is_user_alive(id) && !is_user_vip(id))
			return PLUGIN_HANDLED;
		
		if(read_data(4) || read_data(5) || read_data(6))
		{		
			new iPos = ++g_iPlayerPos[id];
			if(iPos == sizeof(g_flCoords))
				iPos = g_iPlayerPos[id] = 0;
			
			new iCol = ++g_iPlayerCol[id];
			if(iCol == sizeof(g_iColors))
				iCol = g_iPlayerCol[id] = 0;
			
			set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1);
			show_hudmessage(id, "%d", read_data(2));
		}
	}
	
	return PLUGIN_CONTINUE;
}

public event_NewRound()
{
	rounds++;
}

public event_textmsg()
{
	rounds = 0;
}

public fw_PlayerSpawnPost(id)
{
	if(is_user_vip(id) && is_user_alive(id))
	{
		set_task(0.25, "give_items", id + 212);
		return HAM_IGNORED;
	}
	
	return HAM_IGNORED;
}

public give_items(taskid)
{
	new id = taskid - 212;
	if(!is_user_alive(id))
		return;

	new cache = get_pcvar_num(cvar[hp_spawn])
	if(cache != 0) set_user_health(id, cache);

	cache = get_pcvar_num(cvar[ap_spawn]);
	if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM);

	cache = get_pcvar_num(cvar[money_spawn]);
	if(cache != 0) cs_set_user_money(id, min(cs_get_user_money(id) + cache, 16000));

	// meniu disponibil doar dupa ce trec 3 runde, adica din a 4a va fi disponibil
	if(rounds >= 4) ShowVipMenu(id);
}

public msg_ScoreAttrib(msgid, dest, id)
{
	if(!get_pcvar_num(cvar[show_vip_tab]))
		return PLUGIN_CONTINUE;
		
	new id = get_msg_arg_int(1);
	if(is_user_connected(id) && is_user_vip(id))
		set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
	
	return PLUGIN_CONTINUE;
}

public msg_ScreenFade(msgid, dest, id)
{
	if(!get_pcvar_num(cvar[noflash]))
		return PLUGIN_HANDLED;

	if(is_user_connected(id) && is_user_vip(id))
	{
		static data[4];
		data[0] = get_msg_arg_int(4);
		data[1] = get_msg_arg_int(5);
		data[2] = get_msg_arg_int(6);
		data[3] = get_msg_arg_int(7);
		
		if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
			return PLUGIN_HANDLED;
	}

	return PLUGIN_CONTINUE;
}

public ShowVipMenu(id)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;

	if(!is_user_vip(id))
	{
		ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
		ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
		return PLUGIN_HANDLED;
	}

	give_item(id, "weapon_hegrenade");
	give_item(id, "weapon_flashbang");
	drop_weapons(id, 2);
	give_item(id, "weapon_deagle");
	cs_set_user_bpammo(id, CSW_DEAGLE, 35);

	new menu = menu_create("\rMeniu VIP", "VipMenuHandler");
	menu_additem(menu, "Vreau \yM4A1 + Deagle", "1");
	menu_additem(menu, "Vreau \yAK-47 + Deagle", "2");
	menu_additem(menu, "Vreau \yAWP + Deagle", "3");
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
	
	return PLUGIN_CONTINUE;
}

public VipMenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	switch(item)
	{
		case 0:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_m4a1");
			cs_set_user_bpammo(id, CSW_M4A1, 120);
			
			ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
		case 1:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_ak47");
			cs_set_user_bpammo(id, CSW_AK47, 120);
			
			ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
		case 2:
		{
			drop_weapons(id, 1);
			give_item(id, "weapon_awp");
			cs_set_user_bpammo(id, CSW_AWP, 30);
			
			ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
		}
	}

	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

// Drop primary/secondary weapons
stock drop_weapons(id, dropwhat)
{
	// Get user weapons
	static weapons[32], num, i, weaponid, wname[32];
	num = 0; // reset passed weapons count (bugfix)
	get_user_weapons(id, weapons, num);
	
	// Loop through them and drop primaries or secondaries
	for (i = 0; i < num; i++)
	{
		// Prevent re-indexing the array
		weaponid = weapons;
		
		if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
		{
			// Get weapon entity
			get_weaponname(weaponid, wname, charsmax(wname));
			engclient_cmd(id, "drop", wname);
		}
	}
}

stock ColorChat(id, String[], any:...) 
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	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();
	}
}


Am facut cum ai cerut. Pluginul are si cvar-uri astfel incat sa-l modifici dupa bunul plac. Ti le-am modificat eu exact cum ai precizat, te-am scapat de o treaba.
Se va creea un fisier automat in configs, vip_maps.ini, in el o sa treci hartile unde pluginul va fi dezactivat.
Presupun ca stii sa modifici si singur cvar-urile, daca nu, lasa mesaj mai jos.

Cauti in sma liniile urmatoare:
| Afiseaza codul
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[SERVERUL_TAU]";		// TAGUL IN CHAT CARE APARE
new const CONTACT[] = "O ADRESA DE CONTACT";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

Modifici dupa bunul plac.
Daca intampini erori la functioanarea lui, precizeaza-le mai jos.


Pluginul de vip event il iei din primul topic.

App , modifica la chestia cu afișarea beneficiilor din .TXT în html și sa fie prin /vip nu /vreauvip
Și apropo numele la server este : GO.reclama.RO și adresa de contact : costin.mihai50[Skype]

Nick Jucks
Sa mai adaugi ca atunci când fac frag la vip sa ți se facă ecranul albastru și sa se deschidă prin extensia html acel motd
Detinator : # Go.Tried.Ro #
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:

29 Aug 2018, 14:40

@Jucks
done | Afiseaza codul
[code=php]/*
CREDITE:
ConnorMcLeod - pentru bullet damage
twistedeuphoria - pentru multi jump
cheap_suit - cateva bucati de cod extrase din biohazard
*/

#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <fakemeta>

// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
new const TAG[] = "[GO.T****.RO]";        // TAGUL IN CHAT CARE APARE
new const CONTACT[] = "costin.mihai50 [Skype]";

#define is_user_vip(%1) (get_user_flags(%1) & read_flags("t"))
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

#define PLUGIN_NAME "VIP System"
#define PLUGIN_NAME_PAUSED "VIP System [OPRIT]"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"

#define is_user_valid(%1) (1 <= %1 <= max_players)

enum cvars
{
    hp_spawn = 0,
    ap_spawn,
    money_spawn,
    hp_kill,
    hp_hs,
    ap_kill,
    ap_hs,
    hp_max,
    money_kill,
    money_hs,
    show_vip_tab,
    show_bullet_dmg,
    multi_jump,
    noflash,
    sansa_respawn
}

new cvar[cvars], rounds = 0;
new max_players;
new bool:g_bJump[33] = false, g_JumpNum[33] = 0;
new g_iPlayerPos[33], g_iPlayerCol[33];

// NU SCHIMBA
new const Float:g_flCoords[][] =  
{ 
    {0.50, 0.40}, 
    {0.56, 0.44}, 
    {0.60, 0.50}, 
    {0.56, 0.56}, 
    {0.50, 0.60}, 
    {0.44, 0.56}, 
    {0.40, 0.50}, 
    {0.44, 0.44} 
}

// NU SCHIMBA VALORILE DEJA EXISTENTE. Poti adauga mai multe culori, respectand matricea
new const g_iColors[][] = 
{ 
    {0, 127, 255}, // blue 
    {255, 127, 0}, // orange 
    {127, 0, 255}, // purple 
    {255, 0, 0}, // red 
    {255, 100, 150}, // pink
    {0, 255, 0} // green
}

public plugin_init()
{    
    new path[64];
    get_localinfo("amxx_configsdir", path, charsmax(path));
    formatex(path, charsmax(path), "%s/vip_maps.ini", path);
    
    new file = fopen(path, "r+");
    
    if(!file_exists(path))
    {
        write_file(path, "; VIP-UL ESTE DEZACTIVAT PE URMATOARELE HARTI: ");
        write_file(path, "; Exemplu de adaugare HARTA:^n; ^"harta^"^n^nfy_snow^ncss_bycastor");
    }
    
    new mapname[32];
    get_mapname(mapname, charsmax(mapname));
    
    new text[121], maptext[32], bool:remove_vip = false;
    while(!feof(file))
    {
        fgets(file, text, charsmax(text));
        trim(text);
        
        if(text[0] == ';' || !strlen(text)) 
        {
            continue; 
        }
        
        parse(text, maptext, charsmax(maptext));
        
        if(equal(maptext, mapname))
        {
            log_amx("Am dezactivat pluginul 'VIP' pe harta %s.", maptext);
            remove_vip = true;
            break;
        }
        
    }
    fclose(file);
    
    if(!remove_vip)
    {
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);

        register_event("DeathMsg", "event_DeathMsg", "a");
        register_event("Damage", "event_Damage", "b", "2>0", "3=0");
        //register_event("CurWeapon", "event_CurWeapon", "be", "1=1");
        //register_event("WeapPickup", "event_WeapPickup", "b");
        register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
        register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in")

        RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1);

        register_message(get_user_msgid("ScoreAttrib"), "msg_ScoreAttrib");
        register_message(get_user_msgid("ScreenFade"), "msg_ScreenFade");

        register_clcmd("say /vips", "CmdVipsOnline");
        register_clcmd("say_team /vips", "CmdVipsOnline");
        
        register_clcmd("say /vip", "CmdPrintAttributes");
        register_clcmd("say_team /vip", "CmdPrintAttributes");

        cvar[hp_spawn] = register_cvar("vip_hp_spawn", "110");            // 0 = dezactivat
        cvar[ap_spawn] = register_cvar("vip_ap_spawn", "110");            // 0 = dezactivat
        cvar[money_spawn] = register_cvar("vip_money_spawn", "1000");        // 0 = dezactivat
        cvar[show_vip_tab] = register_cvar("vip_show_tab", "1");            // 0 = dezactivat
        cvar[show_bullet_dmg] = register_cvar("vip_show_bullet_dmg", "0");        // 0 = dezactivat
        cvar[multi_jump] = register_cvar("vip_multijump", "1");            // 0 = dezactivat. Daca valoarea cvar-ului este 1, vei sari de 2 ori. Orice valoare pui, va fi +1 jump
        cvar[hp_kill] = register_cvar("vip_hp_kill", "10");                // 0 = dezactivat
        cvar[hp_hs] = register_cvar("vip_hp_hs", "10");                // 0 = dezactivat
        cvar[ap_kill] = register_cvar("vip_ap_kill", "10");                // 0 = dezactivat
        cvar[ap_hs] = register_cvar("vip_ap_hs", "10");                // 0 = dezactivat
        cvar[hp_max] = register_cvar("vip_hp_max", "150");            // 0 = viata infinita
        cvar[money_kill] = register_cvar("vip_money_kill", "800");            // 0 = dezactivat
        cvar[money_hs] = register_cvar("vip_money_hs", "800");            // 0 = dezactivat
        cvar[noflash] = register_cvar("vip_noflash", "1");                // 0 = dezactivat
        cvar[sansa_respawn] = register_cvar("vip_sansa_respawn", "10");        // 0 = dezactivat | valoare cuprinsa intre [1 - 100] | 20 = 20% sansa respawn etc...

        max_players = get_maxplayers();
    }
    else
    {
        register_plugin(PLUGIN_NAME_PAUSED, PLUGIN_VERSION, PLUGIN_AUTHOR);
        pause("ade");
    }
    
    register_cvar("vip_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
    set_cvar_string("vip_", PLUGIN_VERSION);
}

public client_putinserver(id)
{
    g_JumpNum[id] = 0;
    g_bJump[id] = false;
}

public CmdVipsOnline(id)
{
    if(!is_user_connected(id))
        return PLUGIN_CONTINUE;

    new adminnames[33][32], message[256], i, count, len;
    len = format(message, charsmax(message), "!4%s!3 VIPS ONLINE: ", TAG);
    for(i = 1 ; i <= max_players; i++)
    {
        if(is_user_connected(i) && is_user_vip(i))
            get_user_name(i, adminnames[count++], charsmax(adminnames[]));
    }
    
    if(count > 0)
    {
        for(i = 0; i < count; i++)
        {
            len += format(message[len], 255 -len, "!4%s!1%s ", adminnames, i < (count -1) ? " | " : "");
        }
        ColorChat(id, message);
    }
    else
    {
        len += format(message[len], 255 -len, "!4No one !")
        ColorChat(id, message);
    }

    return PLUGIN_CONTINUE;
}

public CmdPrintAttributes(id)
{
    if(!is_user_connected(id)) return;
    show_motd(id, "vip.html", "Beneficii VIP");
}

public client_PreThink(id)
{
    new cache = get_pcvar_num(cvar[multi_jump]);
    if(is_user_alive(id) && !is_user_vip(id))
        return PLUGIN_CONTINUE;

    new nbut = get_user_button(id);
    new obut = get_user_oldbutton(id);

    if(cache != 0)
    {    
        if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
        {
            if(g_JumpNum[id] < cache)
            {
                g_bJump[id] = true;
                g_JumpNum[id]++;
                return PLUGIN_CONTINUE;
            }
        }
    
        if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
        {
            g_JumpNum[id] = 0;
            return PLUGIN_CONTINUE;
        }
    }
    return PLUGIN_CONTINUE;
}

public client_PostThink(id)
{
    new jump_num = get_pcvar_num(cvar[multi_jump]);
    if(!jump_num)
        return PLUGIN_CONTINUE;
        
    if(is_user_alive(id) && !is_user_vip(id))
        return PLUGIN_CONTINUE;
    
    if(g_bJump[id])
    {
        new Float:fVelocity[3];
        entity_get_vector(id, EV_VEC_velocity, fVelocity);
        fVelocity[2] = random_float(265.0, 285.0);
        entity_set_vector(id, EV_VEC_velocity, fVelocity);
        
        g_bJump[id] = false;
        return PLUGIN_CONTINUE;
    }
    
    return PLUGIN_CONTINUE;
}

public event_DeathMsg()
{
    new killer = read_data(1), victim = read_data(2), hs = read_data(3), cache;    
    if(is_user_alive(killer) && is_user_vip(killer))
    {
        if(killer == victim) return PLUGIN_HANDLED;

        cache = hs ? get_pcvar_num(cvar[hp_hs]) : get_pcvar_num(cvar[hp_kill]);
        if(cache != 0) set_user_health(killer, min(get_user_health(killer) + cache, get_pcvar_num(cvar[hp_max])));

        cache = hs ? get_pcvar_num(cvar[ap_hs]) : get_pcvar_num(cvar[ap_kill]);
        if(cache != 0) set_user_armor(killer, min(get_user_armor(killer) + cache, get_pcvar_num(cvar[hp_max])));

        cache = hs ? get_pcvar_num(cvar[money_hs]) : get_pcvar_num(cvar[money_kill]);
        if(cache != 0) cs_set_user_money(killer, min(cs_get_user_money(killer) + cache, 16000));

        static g_msg_screenfade = 0;
        if(!g_msg_screenfade)
            g_msg_screenfade = get_user_msgid("ScreenFade");

        //0x2^0 + 0x2^1 + 0x2^2 + 0x2^3 + 0x2^4 + 0x2^5 + 1x2^6
        message_begin(MSG_ONE_UNRELIABLE, g_msg_screenfade, _, killer);
        write_short(floatround(4096.0 * 0.5, floatround_round));        // duration
        write_short(floatround(4096.0 * 0.5, floatround_round));        // hold time
        write_short(0x0001);        // fade type
        write_byte(0);        // r
        write_byte(0);        // g
        write_byte(125);    // b
        write_byte(120);        // a
        message_end();
    }

    if(is_user_vip(victim) && is_user_alive(killer))
    {
        cache = get_pcvar_num(cvar[sansa_respawn]);
        if(cache != 0)
        {
            new sansa = random_num(1, 100);
            sansa = (sansa <= cache) ? 1 : 0;
            if(sansa) set_task(1.0, "task_respawn", victim + 3910);
        }
    }

    return PLUGIN_CONTINUE;
}

public task_respawn(victim)
{
    victim -= 3910;
    if(!is_user_connected(victim))
        return;
    if(is_user_alive(victim))
        return;
    if(!is_user_vip(victim))
        return;

    ExecuteHamB(Ham_CS_RoundRespawn, victim);
    ColorChat(victim, "!3%s!1 Ai primit!4 Respawn!1 in aceasta runda !!! Mult noroc.", TAG);
}

public event_Damage(victim)
{
    if(!get_pcvar_num(cvar[show_bullet_dmg]))
        return PLUGIN_CONTINUE;
        
    new id = get_user_attacker(victim);
    if(is_user_valid(id))
    {
        if(is_user_alive(id) && !is_user_vip(id))
            return PLUGIN_HANDLED;
        
        if(read_data(4) || read_data(5) || read_data(6))
        {        
            new iPos = ++g_iPlayerPos[id];
            if(iPos == sizeof(g_flCoords))
                iPos = g_iPlayerPos[id] = 0;
            
            new iCol = ++g_iPlayerCol[id];
            if(iCol == sizeof(g_iColors))
                iCol = g_iPlayerCol[id] = 0;
            
            set_hudmessage(g_iColors[iCol][0], g_iColors[iCol][1], g_iColors[iCol][2], Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1);
            show_hudmessage(id, "%d", read_data(2));
        }
    }
    
    return PLUGIN_CONTINUE;
}

public event_NewRound()
{
    rounds++;
}

public event_textmsg()
{
    rounds = 0;
}

public fw_PlayerSpawnPost(id)
{
    if(is_user_vip(id) && is_user_alive(id))
    {
        set_task(0.25, "give_items", id + 212);
        return HAM_IGNORED;
    }
    
    return HAM_IGNORED;
}

public give_items(taskid)
{
    new id = taskid - 212;
    if(!is_user_alive(id))
        return;

    new cache = get_pcvar_num(cvar[hp_spawn])
    if(cache != 0) set_user_health(id, cache);

    cache = get_pcvar_num(cvar[ap_spawn]);
    if(cache != 0) cs_set_user_armor(id, cache, CS_ARMOR_VESTHELM);

    cache = get_pcvar_num(cvar[money_spawn]);
    if(cache != 0) cs_set_user_money(id, min(cs_get_user_money(id) + cache, 16000));

    // meniu disponibil doar dupa ce trec 3 runde, adica din a 4a va fi disponibil
    if(rounds >= 4) ShowVipMenu(id);
}

public msg_ScoreAttrib(msgid, dest, id)
{
    if(!get_pcvar_num(cvar[show_vip_tab]))
        return PLUGIN_CONTINUE;
        
    new id = get_msg_arg_int(1);
    if(is_user_connected(id) && is_user_vip(id))
        set_msg_arg_int(2, ARG_BYTE, is_user_alive(id) ? (1<<2) : (1<<0));
    
    return PLUGIN_CONTINUE;
}

public msg_ScreenFade(msgid, dest, id)
{
    if(!get_pcvar_num(cvar[noflash]))
        return PLUGIN_HANDLED;

    if(is_user_connected(id) && is_user_vip(id))
    {
        static data[4];
        data[0] = get_msg_arg_int(4);
        data[1] = get_msg_arg_int(5);
        data[2] = get_msg_arg_int(6);
        data[3] = get_msg_arg_int(7);
        
        if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
            return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

public ShowVipMenu(id)
{
    if(!is_user_connected(id))
        return PLUGIN_HANDLED;

    if(!is_user_vip(id))
    {
        ColorChat(id, "!4%s!1 Imi pare rau, dar nu ai acces la meniul pentru!3 membrii VIP!1.", TAG);
        ColorChat(id, "!4%s!1 Poti cumpara VIP, contactand adresa Y!M:!3 %s!1.", TAG, CONTACT);
        return PLUGIN_HANDLED;
    }

    give_item(id, "weapon_hegrenade");
    give_item(id, "weapon_flashbang");
    drop_weapons(id, 2);
    give_item(id, "weapon_deagle");
    cs_set_user_bpammo(id, CSW_DEAGLE, 35);

    new menu = menu_create("\rMeniu VIP", "VipMenuHandler");
    menu_additem(menu, "Vreau \yM4A1 + Deagle", "1");
    menu_additem(menu, "Vreau \yAK-47 + Deagle", "2");
    menu_additem(menu, "Vreau \yAWP + Deagle", "3");
    
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
    
    return PLUGIN_CONTINUE;
}

public VipMenuHandler(id, menu, item)
{
    if(!is_user_connected(id) || item == MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    switch(item)
    {
        case 0:
        {
            drop_weapons(id, 1);
            give_item(id, "weapon_m4a1");
            cs_set_user_bpammo(id, CSW_M4A1, 120);
            
            ColorChat(id, "!4%s!1 Ai ales!3 M4A1!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
        }
        case 1:
        {
            drop_weapons(id, 1);
            give_item(id, "weapon_ak47");
            cs_set_user_bpammo(id, CSW_AK47, 120);
            
            ColorChat(id, "!4%s!1 Ai ales!3 AK47!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
        }
        case 2:
        {
            drop_weapons(id, 1);
            give_item(id, "weapon_awp");
            cs_set_user_bpammo(id, CSW_AWP, 30);
            
            ColorChat(id, "!4%s!1 Ai ales!3 AWP!1 +!3 Deagle!1 +!3 Set grenade!1 (!31 HE!1 + !31 FB!1).", TAG);
        }
    }

    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

// Drop primary/secondary weapons
stock drop_weapons(id, dropwhat)
{
    // Get user weapons
    static weapons[32], num, i, weaponid, wname[32];
    num = 0; // reset passed weapons count (bugfix)
    get_user_weapons(id, weapons, num);
    
    // Loop through them and drop primaries or secondaries
    for (i = 0; i < num; i++)
    {
        // Prevent re-indexing the array
        weaponid = weapons;
        
        if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
        {
            // Get weapon entity
            get_weaponname(weaponid, wname, charsmax(wname));
            engclient_cmd(id, "drop", wname);
        }
    }
}

stock ColorChat(id, String[], any:...) 
{
    static szMesage[192];
    vformat(szMesage, charsmax(szMesage), String, 3);
    
    replace_all(szMesage, charsmax(szMesage), "!1", "^1");
    replace_all(szMesage, charsmax(szMesage), "!3", "^3");
    replace_all(szMesage, charsmax(szMesage), "!4", "^4");
    
    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();
    }
}[/code]



O sa revin cu sma si la restul cererilor pentru ceilalti utilizatori.
„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.
Post Reply

Return to “Cereri”

  • Information