Upgrades Menu -> Health/Armor/Damage

Pluginuri facute de utilizatorii forumului eXtream.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

monister
Membru, skill 0
Membru, skill 0
Posts: 68
Joined: 24 Dec 2014, 11:56
Detinator Steam: Da
CS Status: Pro CS 1.6 Player
SteamID: eaglemeister_cs16
Fond eXtream: 0
Location: Iasi

08 Aug 2015, 12:17

YONTU wrote:
versiunea pe bani | Afiseaza codul
// Includes
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <nvault>

// Register Plugin
new const PLUGIN_NAME[] = "Level Up Items", 
	 PLUGIN_VERSION[] = "1.0", 
	 PLUGIN_AUTHOR[] = "YONTU";

#define MAX_LEVEL_DAMAGE	10
#define MAX_LEVEL_HEALTH	10
#define MAX_LEVEL_ARMOR	10
#define TOTAL_LEVELS	(MAX_LEVEL_DAMAGE + MAX_LEVEL_HEALTH + MAX_LEVEL_ARMOR) / 3

#define is_user_valid(%1)	(1 <= %1 <= 32)
#define DMG_HEGRENADE	(1<<24)

new const Tag[] = "[Upgrade]";
new const SoundLevelUp[] = "misc/levelup.wav";

enum e_Item
{
	HEALTH = 0,
	ARMOR,
	DAMAGE
}

enum e_data
{
	AmmoPacks = 0,
	Power,
}

new g_UserLevel[e_Item][33];
new g_HostName[64], cvar_hostname, g_Vault;
new menu, menu_callback, text_menu[128], text_item[e_Item][128];

new const g_PlayerData[TOTAL_LEVELS + 1][e_Item][e_data] =
{
	/* Ammo	Health	Ammo	Armor	Ammo	Dmg */	
	{ { 0,	100 }, { 0,	100 }, { 0,	100 } },	// NU modifica nimic pe linia asta
	{ { 20,	110 }, { 20,	110 }, { 20,	110 } },	// Level 1
	{ { 30,	120 }, { 30,	120 }, { 30,	120 } },	// Level 2
	{ { 40,	130 }, { 40,	130 }, { 40,	130 } },	// Level 3
	{ { 50,	140 }, { 50,	140 }, { 50,	140 } },	// Level 4
	{ { 60,	150 }, { 120,	150 }, { 60,	150 } },	// Level 5
	{ { 70,	160 }, { 130,	160 }, { 70,	160 } },	// Level 6
	{ { 80,	170 }, { 140,	170 }, { 80,	170 } },	// Level 7
	{ { 90,	180 }, { 200,	180 }, { 90,	180 } },	// Level 8
	{ { 100,	190 }, { 500,	190 }, { 100,	190 } },	// Level 9
	{ { 150,	200 }, { 150,	200 }, { 150,	200 } }	// Level 10
	/* Ammo	Health	Ammo	Armor	Ammo	Dmg */
}

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

	register_message(get_user_msgid("Health"), "msg_Health");
	
	register_forward(FM_ClientUserInfoChanged, "fw_ChangeName");

	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1);
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
	
	register_clcmd("say /level", "ClShowLevel");
	register_clcmd("say_team /level", "ClShowLevel");

	register_clcmd("say /reset", "ClResetAll");
	register_clcmd("say_team /reset", "ClResetAll");
	
	register_clcmd("say /upgrade", "OpenUpgradeMenu");
	register_clcmd("say_team /upgrade", "OpenUpgradeMenu");

	cvar_hostname = get_cvar_pointer("hostname");

	g_Vault = nvault_open("UpgradeLevelMod-by-YONTU");
	if(g_Vault == INVALID_HANDLE)
		set_fail_state("Eroare la deschiderea bazei de date din foldeurul data/vault.");
}

public plugin_precache()
	precache_sound(SoundLevelUp);

public plugin_end()
	nvault_close(g_Vault);

public plugin_cfg()
{
	get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName));
}

public client_putinserver(id)
{
	LoadUserExperience(id);
}

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

// thx ConnorMcLeod
public fw_ChangeName(id)
{
	static const name[] = "name";
	static szOldName[32], szNewName[32];

	pev(id, pev_netname, szOldName, charsmax(szOldName));
	if(szOldName[0])
	{
		get_user_info(id, name, szNewName, charsmax(szNewName));
		if(!equal(szOldName, szNewName))
		{
			set_user_info(id, name, szOldName);
			ColorChat(id, "!3%s!1 Este!4 INTERZISA!1 schimbarea numelui pe server.", Tag);
			return FMRES_HANDLED;
		}
	}

	return FMRES_IGNORED;
}

public fw_PlayerSpawn(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED;

	if(g_UserLevel[HEALTH][id] == 0)
		CheckUserLevel(id, HEALTH, MAX_LEVEL_HEALTH);
	if(g_UserLevel[ARMOR][id] == 0)
		CheckUserLevel(id, ARMOR, MAX_LEVEL_ARMOR);
	if(g_UserLevel[DAMAGE][id] == 0)
		CheckUserLevel(id, DAMAGE, MAX_LEVEL_DAMAGE);
		
	set_task(1.0, "set_user_items", id);

	return PLUGIN_CONTINUE;
}

public fw_TakeDamage(victim, inflictor, attacker, Float:fDamage, iDmgType)
{
	if(is_user_valid(attacker) && is_user_alive(attacker) && victim != attacker)
	{
		if(iDmgType & DMG_HEGRENADE)
			return HAM_IGNORED;

		fDamage += g_PlayerData[g_UserLevel[DAMAGE][attacker]][DAMAGE][Power] * 1.0;

		SetHamParamFloat(4, fDamage);
		return HAM_HANDLED;
	}
	return HAM_IGNORED;
}

public msg_Health(msgid, dest, id)
{
	static health; health = get_msg_arg_int(1);
	if(health > 255)
	{
		set_msg_arg_int(1, ARG_BYTE, 255);
	}
	
	return PLUGIN_CONTINUE;
}

public ClShowLevel(id)
{
	if(is_user_connected(id))
	{
		ColorChat(id, "!1%s!4 Health!1 Level: !3%d!1/!3%d!1 |!4 Health!1 Amount:!3 %d!1 | Next Money:!4 %d", Tag, g_UserLevel[HEALTH][id], MAX_LEVEL_HEALTH, g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Power], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks]);
		ColorChat(id, "!1%s!4 Armor!1 Level: !3%d!1/!3%d!1 |!4 Armor!1 Amount:!3 %d!1 | Next Money:!4 %d", Tag, g_UserLevel[ARMOR][id], MAX_LEVEL_ARMOR, g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Power], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks]);
		ColorChat(id, "!1%s!4 Damage!1 Level: !3%d!1/!3%d!1 | Incrase!4 Damage!1: +!3%d!1 | Next Money:!4 %d", Tag, g_UserLevel[DAMAGE][id], MAX_LEVEL_DAMAGE, g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Power], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks]);
	}

	return PLUGIN_CONTINUE;
}

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

	formatex(text_menu, charsmax(text_menu), "Reset Menu (All levels on 0)^n\y%s", g_HostName);
	menu = menu_create(text_menu, "Menu2Handler");

	menu_additem(menu, "Health", "1", 0);
	menu_additem(menu, "Armor", "2", 0);
	menu_additem(menu, "Damage", "3", 0);

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);

	return PLUGIN_CONTINUE;
}

public Menu2Handler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback, name[32], data[6];
	menu_item_getinfo(menu, item, item_access, data, charsmax(data), name, charsmax(name), callback);
	new key = str_to_num(data);

	switch(key)
	{
		case 1:
		{
			g_UserLevel[HEALTH][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 health!1 level on 0. Good Luck!", Tag);
		}
		case 2:
		{
			g_UserLevel[ARMOR][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 armor!1 level on 0. Good Luck!", Tag);
		}
		case 3:
		{
			g_UserLevel[DAMAGE][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 damage!1 level on 0. Good Luck!", Tag);
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

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

	if(g_UserLevel[HEALTH][id] == MAX_LEVEL_HEALTH && g_UserLevel[ARMOR][id] == MAX_LEVEL_ARMOR && g_UserLevel[DAMAGE][id] == MAX_LEVEL_DAMAGE)
	{
		ColorChat(id, "!4%s!1 Ai deja!3 level maxim!1 la toate puterile.", Tag);
		return PLUGIN_HANDLED;
	}

	formatex(text_menu, charsmax(text_menu), "Upgrade Menu | Money:\r %d\d$^n\y%s", cs_get_user_money(id), g_HostName);
	
	menu = menu_create(text_menu, "MenuHandler");
	menu_callback = menu_makecallback("CallBackMenu");

	if(g_UserLevel[HEALTH][id] != MAX_LEVEL_HEALTH)
	{
		formatex(text_item[HEALTH], charsmax(text_item[]), "%sUpgrade my health [Level\r %d%s] [\r%d%s$]", g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_UserLevel[HEALTH][id], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[HEALTH], charsmax(text_item[]), "\dUpgrade my health [Max Level]");
	}
	menu_additem(menu, text_item[HEALTH], "1", 0, menu_callback);

	if(g_UserLevel[ARMOR][id] != MAX_LEVEL_ARMOR)
	{
		formatex(text_item[ARMOR], charsmax(text_item[]), "%sUpgrade my armor [Level\r %d%s] [\r%d%s$]", g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_UserLevel[ARMOR][id], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[ARMOR], charsmax(text_item[]), "\dUpgrade my armor [Max Level]");
	}
	menu_additem(menu, text_item[ARMOR], "2", 0, menu_callback);
	
	if(g_UserLevel[DAMAGE][id] != MAX_LEVEL_DAMAGE)
	{
		formatex(text_item[DAMAGE], charsmax(text_item[]), "%sUpgrade my damages [Level\r %d%s] [\r%d%s$]", g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_UserLevel[DAMAGE][id], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[DAMAGE], charsmax(text_item[]), "\dUpgrade my damages [Max Level]");
	}
	menu_additem(menu, text_item[DAMAGE], "3", 0, menu_callback);

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);

	return PLUGIN_CONTINUE;
}

public MenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback, name[32], data[6];
	menu_item_getinfo(menu, item, item_access, data, charsmax(data), name, charsmax(name), callback);
	new key = str_to_num(data);

	switch(key)
	{
		case 1: CheckUserLevel(id, HEALTH, MAX_LEVEL_HEALTH);
		case 2: CheckUserLevel(id, ARMOR, MAX_LEVEL_ARMOR);
		case 3: CheckUserLevel(id, DAMAGE, MAX_LEVEL_DAMAGE);
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public CallBackMenu(id, menu, item)
{
	new data[6], name[64], access, CallBack;
	menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), CallBack);
	
	switch(data[0])
	{
		case '1':
		{
			if(cs_get_user_money(id) < 0 || g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) || g_UserLevel[HEALTH][id] == MAX_LEVEL_HEALTH)
				return ITEM_DISABLED;
		}
		case '2':
		{
			if(cs_get_user_money(id) < 0 || g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) || g_UserLevel[ARMOR][id] == MAX_LEVEL_ARMOR)
				return ITEM_DISABLED;
		}
		case '3':
		{
			if(cs_get_user_money(id) < 0 || g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) || g_UserLevel[DAMAGE][id] == MAX_LEVEL_DAMAGE)
				return ITEM_DISABLED;
		}
	}
	
	return ITEM_ENABLED;
}

public CheckUserLevel(id, e_Item:item, max_level)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	if(g_UserLevel[item][id] < max_level)
	{
		if(cs_get_user_money(id) >= g_PlayerData[g_UserLevel[item][id]][item][AmmoPacks])
		{
			cs_set_user_money(id, max(0, cs_get_user_money(id) - g_PlayerData[g_UserLevel[item][id]][item][AmmoPacks]));

			g_UserLevel[item][id]++;

			if(g_UserLevel[item][id] != 1)
			{
				emit_sound(id, CHAN_AUTO, SoundLevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);

				new g_Color[3];
				g_Color[0] = get_color_level(id, 0, item); // r
				g_Color[1] = get_color_level(id, 1, item); // g
				g_Color[2] = get_color_level(id, 2, item); // b
				MakeFadeScreen(id, 1.5, g_Color[2], g_Color[1], g_Color[0], random_num(100, 200));
				
				new string[11];
				switch(item)
				{
					case HEALTH: formatex(string, charsmax(string), "on HEALTH");
					case ARMOR: formatex(string, charsmax(string), "on ARMOR");
					case DAMAGE: formatex(string, charsmax(string), "on DAMAGE");
				}
				ColorChat(id, "!3%s!1 Congratulations, you've !4leveled up!3 %s!1. Current level:!3 %d!1 !", Tag, string, g_UserLevel[item][id]);
				if(g_UserLevel[item][id] < max_level)
					ColorChat(id, "!3%s!1 Next Money (needed):!4 %d!1 !", Tag, g_PlayerData[g_UserLevel[item][id]][item][AmmoPacks]);
			}
		}
	}

	return PLUGIN_HANDLED;
}

stock MakeFadeScreen(id, const Float:Seconds, const Red, const Green, const Blue, const Alpha)
{
	static g_MsgScreenFade = 0;
	if(!g_MsgScreenFade)
		g_MsgScreenFade = get_user_msgid("ScreenFade");

	message_begin(MSG_ONE, g_MsgScreenFade, _, id);
	write_short(floatround(4096.0 * Seconds, floatround_round));
	write_short(floatround(4096.0 * Seconds, floatround_round));
	write_short(0x0000);
	write_byte(Red);
	write_byte(Green);
	write_byte(Blue);
	write_byte(Alpha);
	message_end();
}

public get_color_level(id, number, e_Item:item)
{
	new g_Color[3];
	switch(g_UserLevel[item][id])
	{
		case 1:	g_Color = { 248, 172, 58 };
		case 2:	g_Color = { 0, 255, 128 };
		case 3:	g_Color = { 170, 255, 127 };
		case 4:	g_Color = { 155, 240, 70 };
		case 5:	g_Color = { 255, 255, 0 };
		case 6:	g_Color = { 255, 127, 85 };
		case 7:	g_Color = { 0, 212, 255 };
		case 8:	g_Color = { 70, 70, 240 };
		case 9:	g_Color = { 170, 0, 255 };
		case 10:	g_Color = { 255, 255, 0 };
		default:	g_Color = { 200, 200, 0 };
	}
	
	return g_Color[number];
}

public SaveUserExperience(id)
{
	new szVaultKey[64], szVaultData[256], szName[32];
	get_user_name(id, szName, charsmax(szName));
	format(szVaultKey, charsmax(szVaultKey), "%s", szName);
	format(szVaultData, charsmax(szVaultData), "%i#%i#%i#", g_UserLevel[HEALTH][id], g_UserLevel[ARMOR][id], g_UserLevel[DAMAGE][id]);

	nvault_set(g_Vault, szVaultKey, szVaultData);
	return PLUGIN_HANDLED;
}

public LoadUserExperience(id)
{
 	new szVaultKey[64], szVaultData[256], szName[32], level[e_Item][33];
	get_user_name(id, szName, charsmax(szName));
	format(szVaultKey, charsmax(szVaultKey), "%s", szName);
	format(szVaultData, charsmax(szVaultData), "%i#%i#%i#", g_UserLevel[HEALTH][id], g_UserLevel[ARMOR][id], g_UserLevel[DAMAGE][id]);

	nvault_get(g_Vault, szVaultKey, szVaultData, charsmax(szVaultData));
	replace_all(szVaultData, charsmax(szVaultData), "#", " ");

	parse(szVaultData, level[HEALTH], charsmax(level[]), level[ARMOR], charsmax(level[]), level[DAMAGE], charsmax(level[]));
	g_UserLevel[HEALTH][id] = str_to_num(level[HEALTH]);
	g_UserLevel[ARMOR][id] = str_to_num(level[ARMOR]);
	g_UserLevel[DAMAGE][id] = str_to_num(level[DAMAGE]);

	return PLUGIN_HANDLED;
}

// STOCK'S
public set_user_items(id)
{
	if(!is_user_alive(id))
		return;
	
	// HEALTH
	set_user_health(id, clamp(g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Power], 10, 1000));
	
	// ARMOR
	new CsArmorType:ArmorType = CS_ARMOR_VESTHELM;
	cs_set_user_armor(id, clamp(g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Power], 0, 1000), ArmorType);
}

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();
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/
Daca tu vezi aici ca este doar pentru CT eu ma impusc (vorbesc foarte serios).
PS:
Daca astea le-ai pus asa:

Code: Select all

public plugin_precache()
	precache_sound(SoundLevelUp);

public plugin_end()
	nvault_close(g_Vault);

Astea de le-ai pus asa?:

Code: Select all

public plugin_cfg()
{
	get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName));
}

public client_putinserver(id)
{
	LoadUserExperience(id);
}

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

Si de ce nu le-ai pus asa?:

Code: Select all

public plugin_cfg()
	get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName));

public client_putinserver(id)
	LoadUserExperience(id);

public client_disconnect(id)
	SaveUserExperience(id);
Stiu ca e corect in amandoua cazuri, dar o sa creada altii ca nu este facut de tine.
RoyalServer 2
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:

08 Aug 2015, 13:33

Acum vrei sa ma corectezi sau ce? Abia acum ai facut si tu 2-3 plugine si ti-a crescut orgoliu.
Aia e versiunea pe bani, in celelalte versiuni pentru modul zm am verificat.
„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.
monister
Membru, skill 0
Membru, skill 0
Posts: 68
Joined: 24 Dec 2014, 11:56
Detinator Steam: Da
CS Status: Pro CS 1.6 Player
SteamID: eaglemeister_cs16
Fond eXtream: 0
Location: Iasi

08 Aug 2015, 13:42

YONTU wrote:Acum vrei sa ma corectezi sau ce? Abia acum ai facut si tu 2-3 plugine si ti-a crescut orgoliu.
Aia e versiunea pe bani, in celelalte versiuni pentru modul zm am verificat.
Nu te corectez, doar te-am intrebat de ce. Si nu am facut numai 2-3 plugine ;)) Nu sunt postate toate.
User avatar
Nubo
Fost moderator
Fost moderator
Posts: 2734
Joined: 11 Jul 2012, 18:45
Detinator Steam: Da
CS Status: [əˈnɒn.ɪ.məs]
Reputatie: Fost scripter eXtreamCS
Fost eXtream Mod
Has thanked: 8 times
Been thanked: 27 times

08 Aug 2015, 15:34

Nu deschide daca nu accepti critica | Afiseaza codul
A inceput lupta "greilor".  :meme

Unul foloseste "return 1" in "case" la meniu dinamic fara menu_destroy().
Iar altul are mesaje in 2 limbi, "return PLUGIN_HANDLED/CONTINUE" in Hamsandwich si blocheaza schimbarea numelui in anul 2015.

Oricum, 1 - 0, conduce Yontu.  :troll

P.S.: asta e genial:
[code]#define MAX_LEVEL_DAMAGE	10
#define MAX_LEVEL_HEALTH	10
#define MAX_LEVEL_ARMOR	10
#define TOTAL_LEVELS	(MAX_LEVEL_DAMAGE + MAX_LEVEL_HEALTH + MAX_LEVEL_ARMOR) / 3[/code]
Daca pun 10 5 5 sau 5 10 10 ?
Last edited by YONTU on 08 Aug 2015, 17:11, edited 1 time in total.
Reason: =)) Hai ca si tu esti genial. Mersi de observatie. Greselile minore chiar mi-au scapat.
Cand nu merge acest forum sunt online aici:
  • * Skype: nubo_cs
    * Y!M ID: nubo_cs
User avatar
UnHibrid
Membru, skill +1
Membru, skill +1
Posts: 164
Joined: 20 Apr 2015, 19:26
Detinator Steam: Da
CS Status: ''Onlain''
Detinator server CS: Furien.B-Zone.Ro
SteamID: senzorgaming
Fond eXtream: 0
Location: Agent Vanzari la Digi (RDS-RCS)
Has thanked: 12 times
Been thanked: 2 times
Contact:

14 Dec 2015, 17:56

Nu poţi adăuga şi speed? am încercat eu să adaug dar îmi dă eroare , mi'l poţi face?
| Afiseaza codul
// Includes
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <nvault>

native get_user_credits(id);
native set_user_credits(id, amount);

// Register Plugin
new const PLUGIN_NAME[] = "Level Up Items", 
	 PLUGIN_VERSION[] = "1.0", 
	 PLUGIN_AUTHOR[] = "YONTU";

#define MAX_LEVEL_DAMAGE	10
#define MAX_LEVEL_HEALTH	10
#define MAX_LEVEL_SPEED         10
#define MAX_LEVEL_ARMOR	        10
#define TOTAL_LEVELS	(MAX_LEVEL_SPEED + MAX_LEVEL_DAMAGE + MAX_LEVEL_HEALTH + MAX_LEVEL_ARMOR ) / 4

#define is_user_valid(%1)	(1 <= %1 <= 32)
#define DMG_HEGRENADE	(1<<24)

new const Tag[] = "[Upgrade]";
new const SoundLevelUp[] = "misc/levelup.wav";

enum e_Item
{
	HEALTH = 0,
	ARMOR,
	DAMAGE,
        SPEED
}

enum e_data
{
	Credits = 0,
	Power,
}

new g_UserLevel[e_Item][33];
new g_HostName[64], cvar_hostname, g_Vault;
new menu, menu_callback, text_menu[128], text_item[e_Item][128];

new const g_PlayerData[TOTAL_LEVELS + 1][e_Item][e_data] =
{
	/* Credit	Health	Credits	Armor	Credits	Dmg */	
	{ { 0,	100 }, { 0,	100 }, { 0,	100 }, { 0,	100 } },	// NU modifica nimic pe linia asta
	{ { 20,	110 }, { 20,	110 }, { 20,	110 },{ 15,	110 } },	// Level 1
	{ { 30,	120 }, { 30,	120 }, { 30,	120 }, { 30,	120 }},	// Level 2
	{ { 40,	130 }, { 40,	130 }, { 40,	130 }, { 45,	130 }},	// Level 3
	{ { 50,	140 }, { 50,	140 }, { 50,	140 }, { 55,	140 }},	// Level 4
	{ { 60,	150 }, { 120,	150 }, { 60,	150 }, { 75,	150 }},	// Level 5
	{ { 70,	160 }, { 130,	160 }, { 70,	160 }, { 100,	160 }},	// Level 6
	{ { 80,	170 }, { 140,	170 }, { 80,	170 }, { 125,	170 }},	// Level 7
	{ { 90,	180 }, { 200,	180 }, { 90,	180 }, { 150,	180 }},	// Level 8
	{ { 100,	190 }, { 500,	190 }, { 100,	190 },{ 200,	190 }},	// Level 9
	{ { 150,	200 }, { 150,	200 }, { 150,	200 },{ 250,	200 }}	// Level 10

}

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

	register_message(get_user_msgid("Health"), "msg_Health");
	
	register_forward(FM_ClientUserInfoChanged, "fw_ChangeName");

	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1);
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
	
	register_clcmd("say /level", "ClShowLevel");
	register_clcmd("say_team /level", "ClShowLevel");

	register_clcmd("say /reset", "ClResetAll");
	register_clcmd("say_team /reset", "ClResetAll");
	
	register_clcmd("say /upgrade", "OpenUpgradeMenu");
	register_clcmd("say_team /upgrade", "OpenUpgradeMenu");

	cvar_hostname = get_cvar_pointer("hostname");

	g_Vault = nvault_open("UpgradeLevelMod-by-YONTU");
	if(g_Vault == INVALID_HANDLE)
		set_fail_state("Eroare la deschiderea bazei de date din foldeurul data/vault.");
}

public plugin_precache()
	precache_sound(SoundLevelUp);

public plugin_end()
	nvault_close(g_Vault);

public plugin_cfg()
{
	get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName));
}

public client_putinserver(id)
{
	LoadUserExperience(id);
}

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

// thx ConnorMcLeod
public fw_ChangeName(id)
{
	static const name[] = "name";
	static szOldName[32], szNewName[32];

	pev(id, pev_netname, szOldName, charsmax(szOldName));
	if(szOldName[0])
	{
		get_user_info(id, name, szNewName, charsmax(szNewName));
		if(!equal(szOldName, szNewName))
		{
			set_user_info(id, name, szOldName);
			ColorChat(id, "!3%s!1 Este!4 INTERZISA!1 schimbarea numelui pe server.", Tag);
			return FMRES_HANDLED;
		}
	}

	return FMRES_IGNORED;
}

public fw_PlayerSpawn(id)
{
	if(!is_user_alive(id))
		return PLUGIN_HANDLED;

	if(g_UserLevel[HEALTH][id] == 0)
		CheckUserLevel(id, HEALTH, MAX_LEVEL_HEALTH);
	if(g_UserLevel[ARMOR][id] == 0)
		CheckUserLevel(id, ARMOR, MAX_LEVEL_ARMOR);
	if(g_UserLevel[DAMAGE][id] == 0)
		CheckUserLevel(id, DAMAGE, MAX_LEVEL_DAMAGE);
        if(g_UserLevel[SPEED][id] == 0)
		CheckUserLevel(id, SPEED, MAX_LEVEL_SPEED);
		
		
	set_task(1.0, "set_user_items", id);

	return PLUGIN_CONTINUE;
}

public fw_TakeDamage(victim, inflictor, attacker, Float:fDamage, iDmgType)
{
	if(is_user_valid(attacker) && is_user_alive(attacker) && victim != attacker)
	{
		if(iDmgType & DMG_HEGRENADE)
			return HAM_IGNORED;

		fDamage += g_PlayerData[g_UserLevel[DAMAGE][attacker]][DAMAGE][Power] * 1.0;

		SetHamParamFloat(4, fDamage);
		return HAM_HANDLED;
	}
	return HAM_IGNORED;
}

public msg_Health(msgid, dest, id)
{
	static health; health = get_msg_arg_int(1);
	if(health > 255)
	{
		set_msg_arg_int(1, ARG_BYTE, 255);
	}
	
	return PLUGIN_CONTINUE;
}

public ClShowLevel(id)
{
	if(is_user_connected(id))
	{
		ColorChat(id, "!1%s!4 Health!1 Level: !3%d!1/!3%d!1 |!4 Health!1 Amount:!3 %d!1 | Next Credits:!4 %d", Tag, g_UserLevel[HEALTH][id], MAX_LEVEL_HEALTH, g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Power], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Credits]);
		ColorChat(id, "!1%s!4 Armor!1 Level: !3%d!1/!3%d!1 |!4 Armor!1 Amount:!3 %d!1 | Next Credits:!4 %d", Tag, g_UserLevel[ARMOR][id], MAX_LEVEL_ARMOR, g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Power], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Credits]);
		ColorChat(id, "!1%s!4 Damage!1 Level: !3%d!1/!3%d!1 | Incrase!4 Damage!1: +!3%d!1 | Next Credits:!4 %d", Tag, g_UserLevel[DAMAGE][id], MAX_LEVEL_DAMAGE, g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Power], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Credits]);
                ColorChat(id, "!1%s!4 SPEED!1 Level: !3%d!1/!3%d!1 | Incrase!4 SPEED!1: +!3%d!1 | Next Credits:!4 %d", Tag, g_UserLevel[SPEED][id], MAX_LEVEL_SPEED, g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Power], g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Credits]);
	}

	return PLUGIN_CONTINUE;
}

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

	formatex(text_menu, charsmax(text_menu), "Reset Menu (All levels on 0)^n\y%s", g_HostName);
	menu = menu_create(text_menu, "Menu2Handler");

	menu_additem(menu, "Health", "1", 0);
	menu_additem(menu, "Armor", "2", 0);
	menu_additem(menu, "Damage", "3", 0);
        menu_additem(menu, "Speed", "4", 0);
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);

	return PLUGIN_CONTINUE;
}

public Menu2Handler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback, name[32], data[6];
	menu_item_getinfo(menu, item, item_access, data, charsmax(data), name, charsmax(name), callback);
	new key = str_to_num(data);

	switch(key)
	{
		case 1:
		{
			g_UserLevel[HEALTH][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 health!1 level on 0. Good Luck!", Tag);
		}
		case 2:
		{
			g_UserLevel[ARMOR][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 armor!1 level on 0. Good Luck!", Tag);
		}
		case 3:
		{
			g_UserLevel[DAMAGE][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 damage!1 level on 0. Good Luck!", Tag);
		}
                case 4:
		{
			g_UserLevel[SPEED][id] = 1;
			ColorChat(id, "!4%s!1 I reset your!3 speed!1 level on 0. Good Luck!", Tag);
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

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

	if(g_UserLevel[HEALTH][id] == MAX_LEVEL_HEALTH && g_UserLevel[ARMOR][id] == MAX_LEVEL_ARMOR && g_UserLevel[DAMAGE][id] == MAX_LEVEL_DAMAGE && g_UserLevel[SPEED][id] == MAX_LEVEL_SPEED)
	{
		ColorChat(id, "!4%s!1 Ai deja!3 level maxim!1 la toate puterile.", Tag);
		return PLUGIN_HANDLED;
	}

	formatex(text_menu, charsmax(text_menu), "Upgrade Menu | Money:\r %d\d Credits^n\y%s", get_user_credits(id), g_HostName);
	
	menu = menu_create(text_menu, "MenuHandler");
	menu_callback = menu_makecallback("CallBackMenu");

	if(g_UserLevel[HEALTH][id] != MAX_LEVEL_HEALTH)
	{
		formatex(text_item[HEALTH], charsmax(text_item[]), "%sUpgrade my health [Level\r %d%s] [\r%d%s Credits]", g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Credits] > get_user_credits(id) ? "\d" : "", g_UserLevel[HEALTH][id], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Credits] > get_user_credits(id) ? "\d" : "", g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Credits], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Credits] > get_user_credits(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[HEALTH], charsmax(text_item[]), "\dUpgrade my health [Max Level]");
	}
	menu_additem(menu, text_item[HEALTH], "1", 0, menu_callback);

	if(g_UserLevel[ARMOR][id] != MAX_LEVEL_ARMOR)
	{
		formatex(text_item[ARMOR], charsmax(text_item[]), "%sUpgrade my armor [Level\r %d%s] [\r%d%s Credits]", g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Credits] > get_user_credits(id) ? "\d" : "", g_UserLevel[ARMOR][id], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Credits] > get_user_credits(id) ? "\d" : "", g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Credits], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Credits] > get_user_credits(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[ARMOR], charsmax(text_item[]), "\dUpgrade my armor [Max Level]");
	}
	menu_additem(menu, text_item[ARMOR], "2", 0, menu_callback);
	
	if(g_UserLevel[DAMAGE][id] != MAX_LEVEL_DAMAGE)
	{
		formatex(text_item[DAMAGE], charsmax(text_item[]), "%sUpgrade my damages [Level\r %d%s] [\r%d%s Credits]", g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Credits] > get_user_credits(id) ? "\d" : "", g_UserLevel[DAMAGE][id], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Credits] > get_user_credits(id) ? "\d" : "", g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Credits], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Credits] > get_user_credits(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[DAMAGE], charsmax(text_item[]), "\dUpgrade my damages [Max Level]");
	}
        
	menu_additem(menu, text_item[DAMAGE], "3", 0, menu_callback);
        if(g_UserLevel[SPEED][id] != MAX_LEVEL_SPEED)
	{
		formatex(text_item[SPEED], charsmax(text_item[]), "%sUpgrade my Speed [Level\r %d%s] [\r%d%s Credits]", g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Credits] > get_user_credits(id) ? "\d" : "", g_UserLevel[SPEED][id], g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Credits] > get_user_credits(id) ? "\d" : "", g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Credits], g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Credits] > get_user_credits(id) ? "\d" : "");
	}
	else
	{
		formatex(text_item[SPEED], charsmax(text_item[]), "\dUpgrade my Speed [Max Level]");
	}
        
	menu_additem(menu, text_item[SPEED], "3", 0, menu_callback);

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);

	return PLUGIN_CONTINUE;
}

public MenuHandler(id, menu, item)
{
	if(!is_user_connected(id) || item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new item_access, callback, name[32], data[6];
	menu_item_getinfo(menu, item, item_access, data, charsmax(data), name, charsmax(name), callback);
	new key = str_to_num(data);

	switch(key)
	{
		case 1: CheckUserLevel(id, HEALTH, MAX_LEVEL_HEALTH);
		case 2: CheckUserLevel(id, ARMOR, MAX_LEVEL_ARMOR);
		case 3: CheckUserLevel(id, DAMAGE, MAX_LEVEL_DAMAGE);
                case 4: CheckUserLevel(id, SPEED, MAX_LEVEL_SPEED);
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public CallBackMenu(id, menu, item)
{
	new data[6], name[64], access, CallBack;
	menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), CallBack);
	
	switch(data[0])
	{
		case '1':
		{
			if(get_user_credits(id) < 0 || g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Credits] > get_user_credits(id) || g_UserLevel[HEALTH][id] == MAX_LEVEL_HEALTH)
				return ITEM_DISABLED;
		}
		case '2':
		{
			if(get_user_credits(id) < 0 || g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Credits] > get_user_credits(id) || g_UserLevel[ARMOR][id] == MAX_LEVEL_ARMOR)
				return ITEM_DISABLED;
		}
		case '3':
		{
			if(get_user_credits(id) < 0 || g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Credits] > get_user_credits(id) || g_UserLevel[DAMAGE][id] == MAX_LEVEL_DAMAGE)
				return ITEM_DISABLED;
		}
                case '4':
		{
			if(get_user_credits(id) < 0 || g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Credits] > get_user_credits(id) || g_UserLevel[SPEED][id] == MAX_LEVEL_SPEED)
				return ITEM_DISABLED;
		}
	}
	
	return ITEM_ENABLED;
}

public CheckUserLevel(id, e_Item:item, max_level)
{
	if(!is_user_connected(id))
		return PLUGIN_HANDLED;
	
	if(g_UserLevel[item][id] < max_level)
	{
		if(get_user_credits(id) >= g_PlayerData[g_UserLevel[item][id]][item][Credits])
		{
			set_user_credits(id, max(0, get_user_credits(id) - g_PlayerData[g_UserLevel[item][id]][item][Credits]));

			g_UserLevel[item][id]++;

			if(g_UserLevel[item][id] != 1)
			{
				emit_sound(id, CHAN_AUTO, SoundLevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);

				new g_Color[3];
				g_Color[0] = get_color_level(id, 0, item); // r
				g_Color[1] = get_color_level(id, 1, item); // g
				g_Color[2] = get_color_level(id, 2, item); // b
                                g_Color[2] = get_color_level(id, 3, item);
				MakeFadeScreen(id, 1.5, g_Color[2], g_Color[1], g_Color[0], random_num(100, 200));
				
				new string[11];
				switch(item)
				{
					case HEALTH: formatex(string, charsmax(string), "on HEALTH");
					case ARMOR: formatex(string, charsmax(string), "on ARMOR");
					case DAMAGE: formatex(string, charsmax(string), "on DAMAGE");
                                        case SPEED: formatex(string, charsmax(string), "on SPEED");
				}
				ColorChat(id, "!3%s!1 Congratulations, you've !4leveled up!3 %s!1. Current level:!3 %d!1 !", Tag, string, g_UserLevel[item][id]);
				if(g_UserLevel[item][id] < max_level)
					ColorChat(id, "!3%s!1 Next Credits (needed):!4 %d!1 !", Tag, g_PlayerData[g_UserLevel[item][id]][item][Credits]);
			}
		}
	}

	return PLUGIN_HANDLED;
}

stock MakeFadeScreen(id, const Float:Seconds, const Red, const Green, const Blue, const Alpha)
{
	static g_MsgScreenFade = 0;
	if(!g_MsgScreenFade)
		g_MsgScreenFade = get_user_msgid("ScreenFade");

	message_begin(MSG_ONE, g_MsgScreenFade, _, id);
	write_short(floatround(4096.0 * Seconds, floatround_round));
	write_short(floatround(4096.0 * Seconds, floatround_round));
	write_short(0x0000);
	write_byte(Red);
	write_byte(Green);
	write_byte(Blue);
	write_byte(Alpha);
	message_end();
}

public get_color_level(id, number, e_Item:item)
{
	new g_Color[3];
	switch(g_UserLevel[item][id])
	{
		case 1:	g_Color = { 248, 172, 58 };
		case 2:	g_Color = { 0, 255, 128 };
		case 3:	g_Color = { 170, 255, 127 };
		case 4:	g_Color = { 155, 240, 70 };
		case 5:	g_Color = { 255, 255, 0 };
		case 6:	g_Color = { 255, 127, 85 };
		case 7:	g_Color = { 0, 212, 255 };
		case 8:	g_Color = { 70, 70, 240 };
		case 9:	g_Color = { 170, 0, 255 };
		case 10:	g_Color = { 255, 255, 0 };
		default:	g_Color = { 200, 200, 0 };
	}
	
	return g_Color[number];
}

public SaveUserExperience(id)
{
	new szVaultKey[64], szVaultData[256], szName[32];
	get_user_name(id, szName, charsmax(szName));
	format(szVaultKey, charsmax(szVaultKey), "%s", szName);
	format(szVaultData, charsmax(szVaultData), "%i#%i#%i#", g_UserLevel[HEALTH][id], g_UserLevel[ARMOR][id], g_UserLevel[DAMAGE][id], g_UserLevel[SPEED][id]);

	nvault_set(g_Vault, szVaultKey, szVaultData);
	return PLUGIN_HANDLED;
}

public LoadUserExperience(id)
{
 	new szVaultKey[64], szVaultData[256], szName[32], level[e_Item][33];
	get_user_name(id, szName, charsmax(szName));
	format(szVaultKey, charsmax(szVaultKey), "%s", szName);
	format(szVaultData, charsmax(szVaultData), "%i#%i#%i#", g_UserLevel[HEALTH][id], g_UserLevel[ARMOR][id], g_UserLevel[DAMAGE][id],g_UserLevel[SPEED][id]);

	nvault_get(g_Vault, szVaultKey, szVaultData, charsmax(szVaultData));
	replace_all(szVaultData, charsmax(szVaultData), "#", " ");

	parse(szVaultData, level[HEALTH], charsmax(level[]), level[ARMOR], charsmax(level[]), level[DAMAGE],level[SPEED], charsmax(level[]));
	g_UserLevel[HEALTH][id] = str_to_num(level[HEALTH]);
	g_UserLevel[ARMOR][id] = str_to_num(level[ARMOR]);
	g_UserLevel[DAMAGE][id] = str_to_num(level[DAMAGE]);
        g_UserLevel[SPEED][id] = str_to_num(level[SPEED]);
	return PLUGIN_HANDLED;
}

// STOCK'S
public set_user_items(id)
{
	if(!is_user_alive(id))
		return;
	
	// HEALTH
	set_user_health(id, clamp(g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Power], 10, 1000));
	
	// ARMOR
	new CsArmorType:ArmorType = CS_ARMOR_VESTHELM;
	cs_set_user_armor(id, clamp(g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Power], 0, 1000), ArmorType);
        set_user_speed(id, clamp(g_PlayerData[g_UserLevel[SPEED][id]][SPEED][Power], 10, 1000));
}

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();
	}
}
Image
Post Reply

Return to “Pluginuri eXtream”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 9 guests