Страница 1 от 3

Търся този плъгин за DHUD damage

Публикувано на: 16 Май 2018, 22:50
от Sierra Haschak
Здравейте търся този плъгин,
Изображение

Които го има нека да сподели тука

Търся този плъгин

Публикувано на: 16 Май 2018, 22:59
от hackera457
https://forums.alliedmods.net/showthread.php?t=160064
Малко преработен е този на снимката

Търся този плъгин

Публикувано на: 17 Май 2018, 11:02
от Sierra Haschak
Може ли да ми дадете готов код че аз се мъчих и неможах да го направя?

Търся този плъгин

Публикувано на: 17 Май 2018, 11:33
от Just
Пългина ти е даден обясни, за какъв код става дума сма/ли какво ли искаш да ти се даде.

Търся този плъгин

Публикувано на: 17 Май 2018, 15:18
от Sierra Haschak
Става дума за Dhud Damage, ето информация пример , някой играч отнема кръв и показва името от когото е взел, след това на малко кръв и пак да върне кръв автоматично лека по лека например е на 32 кръв и да му увеличава кръвта с 15 кръв повече и се получава 47 кръв ето това искам да кажа, но дано сега някой да ми даде готовитеfailove без да редактирам и да ми обясните кое за кое е

Благодаря ви за вниманието ми и за вашите помощи предварително.

Търся този плъгин

Публикувано на: 17 Май 2018, 18:33
от User12
Този плъгин от снимката и този с dhud damage са 2 различни . Ако съм разбрал правилно искаш плъгин който при убииство на някой да ти дава рандом кръв ?

Търся този плъгин

Публикувано на: 17 Май 2018, 20:52
от Sierra Haschak
Да за това става въпрос и за кръв да се показват от когото е взел в играта

Търся този плъгин

Публикувано на: 17 Май 2018, 22:39
от hackera457
Тествай, направил съм го да задава произволно кръв и аммо. Настройваш си минимална и максимална стойност, която може да получи потребителя

Код за потвърждение: Избери целия код

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

#if AMXX_VERSION_NUM < 183
	#include <dhudmessage>
#endif

#define PLUGIN   "Random HP&Ap On Kill"
#define VERSION  "1.0"
#define AUTHOR   "hackera457 @ AMXX-bg.info"

#define RANGE_HP_MIN  			  1
#define RANGE_HP_MAX  			  100
#define RANGE_WEAPON_AMMO_MIN    1
#define RANGE_WEAPON_AMMO_MAX    20

#define HUD_POS_X        0.33
#define HUD_POS_Y        0.41
#define HUD_COLOR_RED    127
#define HUD_COLOR_GREEN  255
#define HUD_COLOR_BLUE   255  
   

public plugin_init()
{
	register_plugin(PLUGIN,VERSION,AUTHOR)
	RegisterHam(Ham_Killed,"player","PlayerKill",1)
}

public PlayerKill(iVictim,iKiller,iShoudGib)
{
	if(!is_user_alive(iKiller) || iVictim == iKiller)
		return
		
	static iWeapon, iUserHP, iUserClip, iUserBAmmo, iNewHealth, iNewBPAmmo
	
	iWeapon = get_user_weapon(iKiller,iUserClip,iUserBAmmo)
	iUserHP = get_user_health(iKiller)
	
	iNewHealth = random_num(RANGE_HP_MIN, RANGE_HP_MAX)
	iNewBPAmmo = random_num(RANGE_WEAPON_AMMO_MIN, RANGE_WEAPON_AMMO_MAX)
	
	set_user_health(iKiller, iUserHP+ iNewHealth )
	cs_set_user_bpammo(iKiller,iWeapon, iUserBAmmo+iNewBPAmmo)
	
	set_dhudmessage(HUD_COLOR_RED,HUD_COLOR_GREEN,HUD_COLOR_BLUE,HUD_POS_X,HUD_POS_Y,0, 6.0, 3.0)
	show_dhudmessage(iKiller,"[KILLED]^n+%i AP^n+%i HP", iNewBPAmmo,iNewHealth)
	
}


Плъгина се настройва от тук

Код за потвърждение: Избери целия код

#define RANGE_HP_MIN  			  1
#define RANGE_HP_MAX  			  100
#define RANGE_WEAPON_AMMO_MIN    1
#define RANGE_WEAPON_AMMO_MAX    20

#define HUD_POS_X        0.33
#define HUD_POS_Y        0.41
#define HUD_COLOR_RED    127
#define HUD_COLOR_GREEN  255
#define HUD_COLOR_BLUE   255 

Търся този плъгин

Публикувано на: 17 Май 2018, 22:51
от Sierra Haschak
Може ли да ми кзхеш къде трябва да влезна ?

Търся този плъгин

Публикувано на: 17 Май 2018, 23:01
от Sierra Haschak
незнам от къде да започна да редактирам плъгина да се виждат, Xp-та от играчите с имената им заедно

Kill_rewards.cfg

Код за потвърждение: Избери целия код

// Управление восстановлением здоровья
// Health Recovery Management

// Работает ли при убийстве своих / Award for his murder? 
amxr_ff_on 0		( no умолчанию ( Default ) - 0 )

//-----------------------------------------------------------------//

// Включение восстановления HP / switching-on recovering HP
amxr_hp_on 1		( no умолчанию ( Default ) - 1 )
// Сколько регенить HP при убийстве / How many HP regenerating for kill
amxr_hp 20		( no умолчанию ( Default ) - 20 )
// Сколько регенить HP при убийстве в голову / How many HP regenerating for head kill
amxr_hp_hs 30		( no умолчанию ( Default ) - 40 )
// Максимум HP / Maximum HP
amxr_max_hp 500		( no умолчанию ( Default ) - 200 )

//-----------------------------------------------------------------//

// Включает отображение HUD HP у игрока / Switching-on show HUD HP status
amxr_hp_hud_status	1 ( по умолчанию ( Default ) - 1 )
// Минимальное кол-во HP для отображеня / Min hp for displaing
amxr_hp_hud_minhp	200 ( По умолчанию ( Default ) - 150 )

//-----------------------------------------------------------------//

// Включение наград гранатами / switching-on grenade rewards
amxr_grenade_on 1	( no умолчанию ( Default ) - 1 )
// Награждать только при хедшоте / reward only if headshot
amxr_only_hs 1		( no умолчанию ( Default ) - 1 )
// Сколько боевых гранат может иметь юзер / How many henades can have user
amxr_he_limit 3		( no умолчанию ( Default ) - 3 )
// Сколько слеnoвых гранат может иметь юзер / How many flashbang can have user
amxr_flash_limit 0	( no умолчанию ( Default ) - 3 )
// Сколько дымовых гранат может иметь юзер / How many smokenades can have user
amxr_smoke_limit 0	( no умолчанию ( Default ) - 1 )

//-----------------------------------------------------------------//

// Влючение наград деньгами / switching-on money rewards
amxr_cash_on 1		( no умолчанию ( Default ) - 1 )
// Сколько давать денег за убийство / How many money give for kill
amxr_normal_cash 25	( no умолчанию ( Default ) - 25 )
// Сколько давать денег за хедшот / How many money give for head kill
amxr_hs_cash 100	( no умолчанию ( Default ) - 100 )

//-----------------------------------------------------------------//

// Включение наград за убийства ножем / switching-on rewards for knife kills
amxr_knife_on 1		( no умолчанию ( Default ) - 1 )
// Сколько давать денег за убийство ножем/ How many money give for knife kill
amxr_knife_cash 100	( no умолчанию ( Default ) - 1000 )
// Сколько восстанавливать HP за убийство с ножа / How many HP recovery for knife kill
amxr_knife_hp 50	( no умолчанию ( Default ) - 50 )

//-----------------------------------------------------------------//


// Включение восстановления брони при убийстве / switching-on rewards armor for kills
amxr_armor_on 1		( no умолчанию ( Default ) - 1 )
// Тип брони ( 0 - Простая, 1 - со шлемом ) / Armor type ( 0 - klevar, 1 - vesthelm )
amxr_armor_type 1	( no умолчанию ( Default ) - 1 )
// Сколько брони восстановить за убийство // Restore armor for kill
amxr_armor 3		( no умолчанию ( Default ) - 3 )
// Сколько брони восстановить за убийство в голову // Restore armor for headshot kill
amxr_armor_hs 5		( no умолчанию ( Default ) - 5 )
// Сколько брони максимум // Maximum user armor
amxr_armor_max 200	( no умолчанию ( Default ) - 150 )

//-----------------------------------------------------------------//

// Включение восстановления патронов при убийстве / switching-on rewards ammo for kills
amxr_refill_on 1	( no умолчанию ( Default ) - 1 )
// Сколько % патронов восстановить при убийстве / How many % ammo restore on kill
amxr_refill_prc 50	( по умолчанию ( Default ) - 50 )
// Сколько % патронов восстановить при убийстве в голову / How many % ammo restore on headshot kill
amxr_refill_prchs 90	( по умолчанию ( Default ) - 90 )
Kill_rewards.sma

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <csdm>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

//******************************************************************************************************//
//													//
//	Plugin made for http://kodportal.ru								//
//	Plugin is free											//
//	Official release http://forums.alliedmods.net/showthread.php?t=160064				//
//													//
//	Private plugins contants:									//
//	ICQ: 8272341											//
//	Skype: hollywood_oo										//
//	Mail: [email protected]										//
//													//
//	Changelog:											//
//													//
//      07.01.2012 - v 1.6 - Stop using cstrike.inc							//
//      03.01.2012 - v 1.5 - Fixed bugs. Adding CSDM support. Adding hud display HP status		//
//	26.06.2011 - v 1.4 - Adding ammo refil for kills & using fakemeta				//				//
//	24.06.2011 - v 1.3 - Fixing bug with 256 HP for health reward. First release			//
//	24.06.2011 - v 1.2 - Adding ammo & cash rewards							//
//	24.06.2011 - v 1.1 - Fix bug with duplicate rewards						//
//	24.06.2011 - v 1.0 - Creating plugin. Grenade & vampire rewards					//
//													//
//	Credits:											//
//													//
//	TheRadiance - for CSDM Refil ammo 	http://forums.alliedmods.net/showthread.php?t=85787	//
//	Shalfee - for idea Vampire plugin	http://forums.alliedmods.net/showthread.php?p=455096	//
//													//
//******************************************************************************************************//

#define PLUGIN_NAME "Kill Rewards"
#define PLUGIN_AUTHOR "HoLLyWooD"
#define PLUGIN_VERSION "1.6"

/************ stop use cstrike.inc ***********/
#define OFFSET_TEAM		114
#define OFFSET_INTERNALMODEL	126
#define OFFSET_CSMONEY		115
#define OFFSET_ARMORTYPE	112
#define EXTRAOFFSET_WEAPONS	4 	// weapon offsets are obviously only 4 steps higher on Linux!
#define OFFSET_CLIPAMMO		51 	//+ EXTRA_OFFSET_WEAPONS

enum CS_Internal_Models {
	CS_DONTCHANGE = 0,
	CS_CT_URBAN = 1,
	CS_T_TERROR = 2,
	CS_T_LEET = 3,
	CS_T_ARCTIC = 4,
	CS_CT_GSG9 = 5,
	CS_CT_GIGN = 6,
	CS_CT_SAS = 7,
	CS_T_GUERILLA = 8,
	CS_CT_VIP = 9,
	CZ_T_MILITIA = 10,
	CZ_CT_SPETSNAZ = 11
};

enum CsTeams {
	CS_TEAM_UNASSIGNED = 0,
	CS_TEAM_T = 1,
	CS_TEAM_CT = 2,
	CS_TEAM_SPECTATOR = 3
};

enum CsArmorType {
	CS_ARMOR_NONE = 0, // no armor
	CS_ARMOR_KEVLAR = 1, // armor
	CS_ARMOR_VESTHELM = 2 // armor and helmet
};

// 041029: All of these *_AMMO:s were changed -5
#define OFFSET_AWM_AMMO			377 
#define OFFSET_SCOUT_AMMO		378
#define OFFSET_PARA_AMMO		379
#define OFFSET_FAMAS_AMMO		380
#define OFFSET_M3_AMMO			381
#define OFFSET_USP_AMMO			382
#define OFFSET_FIVESEVEN_AMMO		383
#define OFFSET_DEAGLE_AMMO		384
#define OFFSET_P228_AMMO		385
#define OFFSET_GLOCK_AMMO		386
#define OFFSET_FLASH_AMMO		387
#define OFFSET_HE_AMMO			388
#define OFFSET_SMOKE_AMMO		389
#define OFFSET_C4_AMMO			390

/************ stop use cstrike.inc ***********/

#define TASK_HUD		240

#define CSA_FLASHBANG		11
#define CSA_HEGRENADE		12
#define CSA_SMOKEGRENADE	13

// For ammo refil
new const g_weapons_id[] = { CSW_P228, CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_ELITE, CSW_FIVESEVEN, CSW_UMP45,
	CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_USP, CSW_GLOCK18, CSW_AWP, CSW_MP5NAVY, CSW_M249, CSW_M3,
	CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_DEAGLE, CSW_SG552, CSW_AK47, CSW_P90	}

new const g_weapons_names2[][] = { "weapon_p228", "weapon_scout", "weapon_xm1014", "weapon_mac10", "weapon_aug", "weapon_elite",
	"weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp",
	"weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", 
	"weapon_g3sg1", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_p90" }

new const g_weapons_names[][] = { "p228", "scout", "xm1014", "mac10", "aug", "elite", "fiveseven", "ump45", "sg550", 
	"galil", "famas", "usp", "glock18", "awp", "mp5navy", "m249", "m3", "m4a1", "tmp", "g3sg1", "deagle", "sg552", "ak47", "p90" }

new const g_weapons_no_ammo[][] = { "knife", "hegrenade", "c4" }

new const g_max_clip[] = { 13, 10, 7, 30, 30, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 7, 30, 30, 50 }

// For cvars
new c_ff_enable, ff_enable;
new c_csdm_enable, csdm_enabled;
new c_hp_enable, c_hp_add, c_hphs_add, c_hp_max, hp_enable, hp_add, hp_hsadd, hp_max;
new c_gren_enable, c_maxhe, c_maxflash, c_maxsmokes, c_gren_hs, gren_enable, max_he, max_flash, max_smokes, gren_hs;
new c_cash_enable, c_norm_cash, c_hs_cash, cash_enable, norm_cash, hs_cash;
new c_knife_enable, c_knife_cash,c_knife_hp, knife_enable, knife_cash, knife_hp;
new c_armor_enable, c_arm_type, c_arm_add, c_arm_hsadd, c_arm_max, armor_enable, CsArmorType:arm_type, arm_add, arm_hsadd, arm_max;
new c_refill_enable, c_refill_prc, c_refill_prchs, refill_enable, refill_prc, refill_prchs;
new c_hp_hud_status, hp_hud_status, c_hp_hud_display, hp_hud_display;

new g_maxplayers;

new bool:g_is_alive[33] = false;
new bool:g_is_connected[33] = false;

new g_MsgHUD, g_money_msg, g_fade_msg, g_armor_msg;

public plugin_init(){
	register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR );
	
	register_cvar( "kill_rewards", PLUGIN_VERSION, FCVAR_SERVER | FCVAR_SPONLY );
	
	// cvars
	c_ff_enable = register_cvar("amxr_ff_on", "0");
	c_csdm_enable = register_cvar("amxr_csdm_on", "0");
	
	c_hp_enable = register_cvar("amxr_hp_on", "1");
	c_hp_add = register_cvar("amxr_hp", "20");
	c_hphs_add = register_cvar("amxr_hp_hs", "40");
	c_hp_max = register_cvar("amxr_max_hp", "200");
	
	c_hp_hud_status = register_cvar("amxr_hp_hud_status", "1");
	c_hp_hud_display = register_cvar("amxr_hp_hud_minhp", "150");
	
	c_gren_enable = register_cvar("amxr_grenade_on", "1");
	c_gren_hs = register_cvar("amxr_only_hs","1");
	c_maxhe = register_cvar("amxr_he_limit","3");
	c_maxflash = register_cvar("amxr_flash_limit","2");
	c_maxsmokes = register_cvar("amxr_smoke_limit","1");
	
	c_cash_enable = register_cvar("amxr_cash_on", "1");
	c_norm_cash = register_cvar("amxr_normal_cash", "25");
	c_hs_cash = register_cvar("amxr_hs_cash", "100");
	
	c_knife_enable = register_cvar("amxr_knife_on", "1");
	c_knife_cash = register_cvar("amxr_knife_cash", "1000");
	c_knife_hp = register_cvar("amxr_knife_hp", "15");
	
	c_armor_enable = register_cvar("amxr_armor_on", "1");
	c_arm_type = register_cvar("amxr_armor_type", "1");
	c_arm_add = register_cvar("amxr_armor", "3");
	c_arm_hsadd = register_cvar("amxr_armor_hs", "5");
	c_arm_max = register_cvar("amxr_armor_max", "150");
	
	c_refill_enable = register_cvar("amxr_refill_on", "1");
	c_refill_prc = register_cvar("amxr_refill_prc", "50");
	c_refill_prchs = register_cvar("amxr_refill_prchs", "90");
	
	// events
	register_event("DeathMsg", "hook_death", "a", "1!2" );
	register_event("HLTV", "update_cvars", "a", "1=0", "2=0");
	
	// Hams
	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
	
	// messages
	register_message(get_user_msgid("WeaponList"),"weaponlist");
	
	// custom
	g_MsgHUD = CreateHudSyncObj();
	g_maxplayers = get_maxplayers();
	g_money_msg = get_user_msgid("Money");
	g_fade_msg = get_user_msgid("ScreenFade");
	g_armor_msg = get_user_msgid("ArmorType");
}

public client_connect(id){
	g_is_connected[id] = true;
	g_is_alive[id] = false;
	
	if(task_exists(id+TASK_HUD))
		remove_task(id+TASK_HUD);
		
	if(hp_hud_status)
		set_task(5.0, "write_hud", id+TASK_HUD, _, _, "b");
}

public client_disconnect(id){
	g_is_connected[id] = false;
	g_is_alive[id] = false;
	
	if(task_exists(id+TASK_HUD))
		remove_task(id+TASK_HUD);
}

public fw_PlayerSpawn_Post(id){
	if(is_user_alive(id))
		g_is_alive[id] = true;
}

public write_hud(id){
	id-=TASK_HUD;
	
	new health = get_user_health(id);
	
	if(g_is_alive[id] && health >= hp_hud_display){
		set_hudmessage(255, 255, 0, 0.01, 0.9, 0, 6.0, 5.0)
		ShowSyncHudMsg(id, g_MsgHUD,"HP: %i", health)
	}
}

public plugin_precache()
	precache_sound("items/9mmclip1.wav");

public plugin_cfg(){
	new cfgdir[32];
	get_configsdir(cfgdir, charsmax(cfgdir));
	server_cmd("exec %s/kill_rewards.cfg", cfgdir);
	server_exec();
	update_cvars();
}

public update_cvars(){
	ff_enable = get_pcvar_num(c_ff_enable);
	csdm_enabled = get_pcvar_num(c_csdm_enable);
	
	hp_add = get_pcvar_num(c_hp_add);
	hp_max = get_pcvar_num(c_hp_max);
	hp_hsadd = get_pcvar_num(c_hphs_add);
	hp_enable = get_pcvar_num(c_hp_enable);
	
	hp_hud_status = get_pcvar_num(c_hp_hud_status);
	hp_hud_display = get_pcvar_num(c_hp_hud_display);
	
	max_he = get_pcvar_num(c_maxhe);
	gren_hs = get_pcvar_num(c_gren_hs);
	max_flash = get_pcvar_num(c_maxflash);
	max_smokes = get_pcvar_num(c_maxsmokes);
	gren_enable = get_pcvar_num(c_gren_enable);
	
	hs_cash = get_pcvar_num(c_hs_cash);
	norm_cash = get_pcvar_num(c_norm_cash);
	cash_enable = get_pcvar_num(c_cash_enable);
	
	knife_hp = get_pcvar_num(c_knife_hp);
	knife_cash = get_pcvar_num(c_knife_cash);
	knife_enable = get_pcvar_num(c_knife_enable);
	
	armor_enable = get_pcvar_num(c_armor_enable);
	arm_max = ( get_pcvar_num(c_arm_max) > 255 ) ? 255 : get_pcvar_num(c_arm_max);
	arm_add = get_pcvar_num(c_arm_add);
	arm_type = ( get_pcvar_num(c_arm_type) > 0 ) ? CS_ARMOR_VESTHELM : CS_ARMOR_KEVLAR;
	arm_hsadd = get_pcvar_num(c_arm_hsadd);
	
	refill_enable = get_pcvar_num(c_refill_enable);
	refill_prc = get_pcvar_num(c_refill_prc);
	refill_prchs = get_pcvar_num(c_refill_prchs);
}

public weaponlist(msg_id, msg_dest, msg_entity){
	switch(get_msg_arg_int(8)){
		case CSW_HEGRENADE: set_msg_arg_int(3,1,max_he);
		case CSW_FLASHBANG: set_msg_arg_int(3,1,max_flash);
		case CSW_SMOKEGRENADE: set_msg_arg_int(3,1,max_smokes);
	}
}

public hook_death(){
	new i, weapon[32], g_killer = read_data(1);
	// Add to victim dead flag
	g_is_alive[read_data(2)] = false;
	
	// Not a player
	if(!g_is_connected[g_killer]) 
		return;
	
	if(!csdm_get_ffa() && cs_get_user_team(g_killer) == cs_get_user_team(read_data(2)) && csdm_enabled)
		return;
	else if(cs_get_user_team(g_killer) == cs_get_user_team(read_data(2)) && !ff_enable)
		return;
	
	read_data(4, weapon,charsmax(weapon));
	new args[4];	args[0] = g_killer;	args[1] = read_data(3); args[2] = equal(weapon,"knife") ? 1 : 0;
	for(i=0;i<sizeof(g_weapons_no_ammo);i++)
		if(equal(weapon,g_weapons_no_ammo[i])) args[3] =  0;
	
	for(i=0; i<sizeof(g_weapons_names); i++)
		if(equal(weapon,g_weapons_names[i])) args[3] = g_weapons_id[i];
			
	set_task(0.01,"call_rewards",0,args,4);
}

public call_rewards(args[]){
	if(hp_enable) health_bonus(args[0], args[1]);
	if(gren_enable) grenade_bonus(args[0], args[1]);
	if(cash_enable) cash_bonus(args[0], args[1]);
	if(knife_enable && args[2]) knife_bonus(args[0]);
	if(armor_enable) armor_bonus(args[0], args[1]);
	if(refill_enable && args[3]) weapon_refill(args[0], args[1], args[3]);
}

public grenade_bonus(id, mode){
	if(gren_hs && !mode || !g_is_alive[id]) 
		return;
	
	new he_ammo = cs_get_user_bpammo(id, CSW_HEGRENADE);
	new fl_ammo = cs_get_user_bpammo(id, CSW_FLASHBANG);
	new sm_ammo = cs_get_user_bpammo(id, CSW_SMOKEGRENADE);
	
	if( he_ammo < max_he ){
		if(he_ammo > 0){
			gren_pick(id,CSA_HEGRENADE);
			cs_set_user_bpammo(id, CSW_HEGRENADE, he_ammo+1);
			emit_sound(id, CHAN_WEAPON , "items/9mmclip1.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
		}else	give_item(id, "weapon_hegrenade");
	}
	if( fl_ammo < max_flash ){
		if(fl_ammo > 0){
			gren_pick(id,CSA_FLASHBANG);
			cs_set_user_bpammo(id, CSW_FLASHBANG, fl_ammo+1);
			emit_sound(id, CHAN_WEAPON , "items/9mmclip1.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
		}else	give_item(id, "weapon_flashbang");
	}
	if( sm_ammo < max_smokes ){
		if(sm_ammo > 0){
			gren_pick(id,CSA_SMOKEGRENADE);
			cs_set_user_bpammo(id, CSW_SMOKEGRENADE, sm_ammo+1);
			emit_sound(id, CHAN_WEAPON , "items/9mmclip1.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
		}else	give_item(id, "weapon_smokegrenade");
	}
}

public health_bonus(id, mode){
	if(!g_is_alive[id]) 
		return;
	
	new g_hptoadd = (mode > 0) ? hp_hsadd : hp_add;
	new g_killer_hp = get_user_health(id);
	g_killer_hp += g_hptoadd;
	
	if (g_killer_hp > hp_max) g_killer_hp = hp_max;
	if (g_killer_hp % 256 == 0 || g_killer_hp % 255 == 0 ) g_killer_hp++;
	
	set_user_health(id, g_killer_hp);
	
	set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1);
	show_hudmessage(id, "Healed +%d HP", g_hptoadd);
	
	fade_msg(id, 0, 0, 200, 75);
}

public knife_bonus(id){
	cs_set_user_money(id, cs_get_user_money(id) + knife_cash);
	if(g_is_alive[id]){
		set_user_health(id, ( get_user_health(id) + knife_hp ) > hp_max ? hp_max : get_user_health(id) + knife_hp );
		set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1);
		show_hudmessage(id, "Knife kill +%d HP", knife_hp);
		fade_msg(id, 150, 50, 200, 100);
	}
}

public armor_bonus(id, mode){
	if(!g_is_alive[id]) 
		return;
	
	new CsArmorType:ArmorType;
	new g_armor = cs_get_user_armor(id, ArmorType);
	new g_armtoadd = g_armor + ( ( mode > 0 ) ? arm_hsadd : arm_add );
	
	if( g_armtoadd > arm_max ) g_armtoadd = arm_max;
	
	cs_set_user_armor(id, g_armtoadd, (g_armor > 0) ? CsArmorType : arm_type );
}

public cash_bonus(id, mode)
	cs_set_user_money(id, cs_get_user_money(id) + ((mode > 0) ? hs_cash : norm_cash) );

public weapon_refill(id, mode, wpid){
	if(!g_is_connected[id]) 
		return;
		
	new weapon = fm_get_weapon_ent(id, wpid);
	
	if(!weapon || !pev_valid(weapon)) 
		return;
	
	for(new a=0;a<=sizeof(g_weapons_id);a++){
		if( wpid == g_weapons_id[a] ){
			new newammo, maxammo = get_weapon_maxclip(wpid);
			if(maxammo){
				emit_sound(id, CHAN_WEAPON , "items/9mmclip1.wav" , 1.0 , ATTN_NORM , 0 , PITCH_NORM);
				
				newammo = floatround( maxammo / 100.0 * ( ( mode ) ? refill_prchs : refill_prc ) );
				newammo += cs_get_weapon_ammo(weapon);
				if(newammo > maxammo) newammo = maxammo;
				
				cs_set_weapon_ammo(weapon, newammo);
			}
			return;
		}
	}
}

stock fade_msg(u_id, r, g, b, a){
	message_begin(MSG_ONE, g_fade_msg, {0,0,0}, u_id);
	write_short(1<<10);
	write_short(1<<10);
	write_short(0x0000);
	write_byte(r);
	write_byte(g);
	write_byte(b);
	write_byte(a);
	message_end();
}

stock gren_pick(id,ammoid){
	message_begin(MSG_ONE,get_user_msgid("AmmoPickup"),_,id);
	write_byte(ammoid);
	write_byte(1);
	message_end();
}

stock get_weapon_maxclip(wpnid){
	for(new a = 0;a<sizeof(g_weapons_id);a++)
		if (wpnid == g_weapons_id[a])
			return g_max_clip[a];

	return false;
}

stock fm_get_weapon_ent(id, wpnid = 0){
	for(new a=0;a<=sizeof(g_weapons_id);a++)
		if(wpnid == g_weapons_id[a])
			return fm_find_ent_by_owner(g_maxplayers, g_weapons_names2[a], id);
	
	return false;
}

stock fm_find_ent_by_owner(id, const classname[], owner, jghgtype = 0){
	new strtype[16] = "classname";
	new ent = id;

	switch (jghgtype){
		case 1: strtype = "target";
		case 2: strtype = "targetname";
	}

	while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner)
	{
	}

	return ent;
}

stock CsTeams:cs_get_user_team(id, &{CS_Internal_Models,_}:model = CS_DONTCHANGE){
	model = CS_Internal_Models:get_pdata_int(id, OFFSET_INTERNALMODEL);

	return CsTeams:get_pdata_int(id, OFFSET_TEAM);
}

stock cs_get_user_bpammo(id, weapon) {
	new offset;

	switch (weapon) {
		case CSW_AWP: offset = OFFSET_AWM_AMMO;
		case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_SCOUT_AMMO;
		case CSW_M249: offset = OFFSET_PARA_AMMO;
		case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_FAMAS_AMMO;
		case CSW_M3, CSW_XM1014: offset = OFFSET_M3_AMMO;
		case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_USP_AMMO;
		case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_FIVESEVEN_AMMO;
		case CSW_DEAGLE: offset = OFFSET_DEAGLE_AMMO;
		case CSW_P228: offset = OFFSET_P228_AMMO;
		case CSW_GLOCK18,CSW_MP5NAVY,CSW_TMP,CSW_ELITE:	offset = OFFSET_GLOCK_AMMO;
		case CSW_FLASHBANG: offset = OFFSET_FLASH_AMMO;
		case CSW_HEGRENADE: offset = OFFSET_HE_AMMO;
		case CSW_SMOKEGRENADE: offset = OFFSET_SMOKE_AMMO;
		case CSW_C4: offset = OFFSET_C4_AMMO;
		default:return 0
	}
	
	return get_pdata_int(id, offset);
}

stock cs_set_user_bpammo(id, weapon, amount) {
	new offset;

	switch (weapon) {
		case CSW_AWP: offset = OFFSET_AWM_AMMO;
		case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_SCOUT_AMMO;
		case CSW_M249: offset = OFFSET_PARA_AMMO;
		case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_FAMAS_AMMO;
		case CSW_M3, CSW_XM1014: offset = OFFSET_M3_AMMO;
		case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_USP_AMMO;
		case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_FIVESEVEN_AMMO;
		case CSW_DEAGLE: offset = OFFSET_DEAGLE_AMMO;
		case CSW_P228: offset = OFFSET_P228_AMMO;
		case CSW_GLOCK18,CSW_MP5NAVY,CSW_TMP,CSW_ELITE:	offset = OFFSET_GLOCK_AMMO;
		case CSW_FLASHBANG: offset = OFFSET_FLASH_AMMO;
		case CSW_HEGRENADE: offset = OFFSET_HE_AMMO;
		case CSW_SMOKEGRENADE: offset = OFFSET_SMOKE_AMMO;
		case CSW_C4: offset = OFFSET_C4_AMMO;
		default:return 0
	}
	
	set_pdata_int(id, offset, amount);
	return 1;
}

stock cs_set_user_money(index, money, flash = 1){
	set_pdata_int(index, OFFSET_CSMONEY, money);
	message_begin(MSG_ONE, g_money_msg, _, index);
	write_long(money);
	write_byte(flash ? 1 : 0);
	message_end();
}

stock cs_get_user_money(index)
	return get_pdata_int(index, OFFSET_CSMONEY);
	
stock cs_get_weapon_ammo(weapon_id)
	return get_pdata_int(weapon_id, OFFSET_CLIPAMMO, EXTRAOFFSET_WEAPONS);

stock cs_set_weapon_ammo(weapon_id, newammo)
	set_pdata_int(weapon_id, OFFSET_CLIPAMMO, newammo, EXTRAOFFSET_WEAPONS);
	
stock cs_get_user_armor(id, &CsArmorType:armortype){
	switch(get_pdata_int(id, OFFSET_ARMORTYPE)){
		case 0: armortype = CS_ARMOR_NONE;
		case 1: armortype = CS_ARMOR_KEVLAR;
		case 2: armortype = CS_ARMOR_VESTHELM;
	}
	
	return pev(id, pev_armorvalue);
}

stock cs_set_user_armor(id, armorvalue, CsArmorType:armortype){
	switch(armortype){
		case CS_ARMOR_NONE: set_pdata_int(id, OFFSET_ARMORTYPE, 0);
		case CS_ARMOR_KEVLAR: set_pdata_int(id, OFFSET_ARMORTYPE, 1);
		case CS_ARMOR_VESTHELM: set_pdata_int(id, OFFSET_ARMORTYPE, 2);
	}
	
	set_pev(id, pev_armorvalue, float(armorvalue));
	
	if(armortype == CS_ARMOR_KEVLAR || armortype == CS_ARMOR_VESTHELM){
		message_begin(MSG_ONE, g_armor_msg, _, id);
		write_byte((armortype == CS_ARMOR_VESTHELM) ? 1 : 0);
		message_end();
	}
}