[Cerere Plugin] Shop Builder

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
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

21 Mar 2020, 03:20

Plugin Cerut: Shop BB
Descriere (adica ce face el mai exact): ofera iteme jucatorilor, mai multe detalii mai jos
Serverul impune conditii strict HLDS/REHLDS?: re
Ai cautat pluginul?(daca da, precizeaza cum): da
Necesita mod special?: bb

Image
vreau neaparat sa fie si chestia cu Items left, sa poti cumpara doar 2 pe runda..
asta e shop-ul pentru CT, si pentru T daca se poate adauga 1000HP [8000$], 2000HP [10000$], si 320 Maximum Speed [3500$]
maybe there are no goodbyes..
RoyalServer
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

21 Mar 2020, 12:34

dacă ai plg de frost postează sursa
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
User avatar
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

21 Mar 2020, 13:20

L E V I N wrote:
21 Mar 2020, 12:34
dacă ai plg de frost postează sursa
nu am, ma gandeam ca la case 2, sa fie client_cmd (id, "say /fn") si sa bag plugin separat, dar unu jucatori fara steam au blocate comenzile si nu le merge nimic din ce le excuta serverul ca si say..
crezi ca-l poti lua pe cel default de pe net? sau care-l gasesti tu mai repede, chestia e ca eu nu vreau ca frost nade sa inghete de tot, gen sa se poate misca inca dar mai incet
Last edited by levin on 22 Mar 2020, 20:58, edited 2 times in total.
Reason: dacă ți am zis să postezi un frost nu ți am zis aiurea
maybe there are no goodbyes..
User avatar
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

21 Mar 2020, 17:15

@LEVIN, pai cred ca default-ul este okay
https://forums.alliedmods.net/showthread.php?t=41126
maybe there are no goodbyes..
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

22 Mar 2020, 22:21

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <basebuilder>

new const SHOP_TITLE[]="[BaseBuilder] Builder Shop^n"
new const ITEMS_LEFT[]="Items Left\w:"
const MAXIM_INCERCARI = 2
const HP_SHOP_HM = 100
const HP_SHOP_ZM = 1000
const HP_SHOP_ZM2 = 2000
const SPEED_SHOP = 320
const Float:UC_LIMIT = 20.0
new incercari[33]

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

#define nume_plg_frost "frostnades.amxx"
#define public_frost "buy_frostnade"

new meniu,callback

enum datas_
{
    str[32],
    cant,
    cost
};

new const data_meniuHM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hh HP",			HP_SHOP_HM,	8000},
	{ "Frost Nade",			-1,		2000},
	{ "No Recoil",			-1,		7000},
	{ "Unlimited Clip(#u sec)",	-1,		5500},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new const data_meniuZM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hz HP",			HP_SHOP_ZM,	8000},
	{ "#hz2 HP",			HP_SHOP_ZM2,	10000},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new bool:viteza[33]

// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = 
{
    0,
    13, //CSW_P228
    0,
    10, //CSW_SCOUT
    0,  //CSW_HEGRENADE
    7,  //CSW_XM1014
    0,  //CSW_C4
    30,//CSW_MAC10
    30, //CSW_AUG
    0,  //CSW_SMOKEGRENADE
    15,//CSW_ELITE
    20,//CSW_FIVESEVEN
    25,//CSW_UMP45
    30, //CSW_SG550
    35, //CSW_GALIL
    25, //CSW_FAMAS
    12,//CSW_USP
    20,//CSW_GLOCK18
    10, //CSW_AWP
    30,//CSW_MP5NAVY
    100,//CSW_M249
    8,  //CSW_M3
    30, //CSW_M4A1
    30,//CSW_TMP
    20, //CSW_G3SG1
    0,  //CSW_FLASHBANG
    7,  //CSW_DEAGLE
    30, //CSW_SG552
    30, //CSW_AK47
    0,  //CSW_KNIFE
    50//CSW_P90
}
new bool:uc[33]

#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
	"events/awp.sc",
	"events/g3sg1.sc",
	"events/ak47.sc",
	"events/scout.sc",
	"events/m249.sc",
	"events/m4a1.sc",
	"events/sg552.sc",
	"events/aug.sc",
	"events/sg550.sc",
	"events/m3.sc",
	"events/xm1014.sc",
	"events/usp.sc",
	"events/mac10.sc",
	"events/ump45.sc",
	"events/fiveseven.sc",
	"events/p90.sc",
	"events/deagle.sc",
	"events/p228.sc",
	"events/glock18.sc",
	"events/mp5n.sc",
	"events/tmp.sc",
	"events/elite_left.sc",
	"events/elite_right.sc",
	"events/galil.sc",
	"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:hnr[33]

public plugin_precache()	g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)

public fwPrecacheEvent(type, const name[]) {
	for (new i = 0; i < sizeof g_guns_events; ++i) {
		if (equal(g_guns_events[i], name)) {
			g_guns_eventids_bitsum |= (1<<get_orig_retval())
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}

public plugin_init() {
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);

	register_event("HLTV", "event_newround", "a", "1=0", "2=0");
	register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
	
	register_clcmd("say /shop","BBS")
	register_clcmd("say_team /shop","BBS")
	
	unregister_forward(FM_PrecacheEvent, g_fwid, 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
	register_forward(FM_TraceLine, "fwTraceLine")
	g_max_clients = global_get(glb_maxClients)
	
	// Add your code here...
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id)&&viteza[id])
	{
		engfunc(EngFunc_SetClientMaxspeed, id, float(SPEED_SHOP));
		set_pev(id, pev_maxspeed, float(SPEED_SHOP));
	}
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid) {
	if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients)||!hnr[invoker])	return FMRES_IGNORED
	g_fix_punchangle[invoker] = true
	return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
	if (g_fix_punchangle[id]) {
		g_fix_punchangle[id] = false
		set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
		return FMRES_HANDLED
	}
	return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, pentru) {
	if (!(1 <= id <= g_max_clients)||!hnr[id])	return FMRES_IGNORED

	if (!g_normal_trace[id]) {
		g_normal_trace[id] = pentru
		return FMRES_HANDLED
	}

	static dummy
	if (pentru == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id) || get_user_weapon(id, dummy, dummy) == CSW_KNIFE)	return FMRES_IGNORED
	fix_recoil_trace(id, start, pentru)
	return FMRES_SUPERCEDE
}

public Event_CurWeapon( id )
{
    if(!is_user_alive(id)||!uc[id])	return
    new iWeapon = read_data(2)
    if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )	fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}

public client_putinserver(id)
{
	if(!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}
public client_disconnect(id)
{
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}

public event_newround()
{
	arrayset(incercari,0,charsmax(incercari))
	arrayset(viteza,false,charsmax(viteza))
	arrayset(uc,false,charsmax(uc))
	arrayset(hnr,false,charsmax(hnr))
}

public BBS(id)
{
	if(!is_user_alive(id))	return
	
	switch(bb_is_user_zombie(id))
	{
		case true:	ZMS(id)
		case false:	HMS(id)
	}
}
public ZMS(id)
{
	if(!is_user_alive(id)||!bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i;
	formatex(text, charsmax(text), "%s%s/r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(text, "shop_handlerZ");
	callback = menu_makecallback("hook_shopZ");
	
	for(i = 0; i < sizeof data_meniuZM; i++)
	{
		if(data_meniuZM[i][cant] != -1)
		{
			num_to_str(HP_SHOP_ZM,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#hz", str_to_rpl);
			num_to_str(HP_SHOP_ZM2,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#hz2", str_to_rpl);
			float_to_str(float(SPEED_SHOP),str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#s", str_to_rpl);
			
			format(text, charsmax(text), "%s -\r [\y%d $\r]", text, data_meniuZM[i][cost]);
		}
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopZ(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(!bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]>=MAXIM_INCERCARI)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuZM[item][cost])	return ITEM_DISABLED;
	if(viteza[id])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerZ(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM)
		case 1:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM2)
		case 3:
		{
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public HMS(id)
{
	if(!is_user_alive(id)||bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i;
	formatex(text, charsmax(text), "%s%s/r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(text, "shop_handlerH");
	callback = menu_makecallback("hook_shopH");
	
	for(i = 0; i < sizeof data_meniuHM; i++)
	{
		if(data_meniuHM[i][cant] != -1)
		{
			num_to_str(HP_SHOP_HM,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#hh", str_to_rpl);
			float_to_str(UC_LIMIT,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#u", str_to_rpl);
			float_to_str(float(SPEED_SHOP),str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#s", str_to_rpl);
			
			format(text, charsmax(text), "%s -\r [\y%d $\r]", text, data_meniuHM[i][cost]);
		}
		else	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopH(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]>=MAXIM_INCERCARI)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuHM[item][cost])	return ITEM_DISABLED;
	if(viteza[id])	return ITEM_DISABLED;
	if(uc[id])	return ITEM_DISABLED;
	if(hnr[id])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerH(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_HM)
		case 1:	evo_callfunc(id,public_frost,nume_plg_frost)
		case 3:
		{
			hnr[id]=true
			engclient_cmd(id,"weapon_knife")
		}
		case 4:
		{
			uc[id]=false
			set_task(UC_LIMIT,"UCR",id)
			engclient_cmd(id,"weapon_knife")
		}
		case 5:
		{
			set_user_maxspeed(id,float(SPEED_SHOP))
			engclient_cmd(id,"weapon_knife")
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public UCR(id)
{
	uc[id]=false
	if(is_user_alive(id))	engclient_cmd(id,"weapon_knife")
}

stock evo_callfunc( id, function[], plugin[] )
{
	if( callfunc_begin( function, plugin ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
}

fix_recoil_trace(id, const Float:start[], pentru) {
	static Float:dest[3]
	pev(id, pev_v_angle, dest)
	engfunc(EngFunc_MakeVectors, dest)
	global_get(glb_v_forward, dest)
	xs_vec_mul_scalar(dest, 9999.0, dest)
	xs_vec_add(start, dest, dest)
	engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, pentru)
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
User avatar
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

23 Mar 2020, 01:08

L E V I N wrote:
22 Mar 2020, 22:21

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <basebuilder>

new const SHOP_TITLE[]="[BaseBuilder] Builder Shop^n"
new const ITEMS_LEFT[]="Items Left\w:"
const MAXIM_INCERCARI = 2
const HP_SHOP_HM = 100
const HP_SHOP_ZM = 1000
const HP_SHOP_ZM2 = 2000
const SPEED_SHOP = 320
const Float:UC_LIMIT = 20.0
new incercari[33]

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

#define nume_plg_frost "frostnades.amxx"
#define public_frost "buy_frostnade"

new meniu,callback

enum datas_
{
    str[32],
    cant,
    cost
};

new const data_meniuHM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hh HP",			HP_SHOP_HM,	8000},
	{ "Frost Nade",			-1,		2000},
	{ "No Recoil",			-1,		7000},
	{ "Unlimited Clip(#u sec)",	-1,		5500},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new const data_meniuZM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hz HP",			HP_SHOP_ZM,	8000},
	{ "#hz2 HP",			HP_SHOP_ZM2,	10000},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new bool:viteza[33]

// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = 
{
    0,
    13, //CSW_P228
    0,
    10, //CSW_SCOUT
    0,  //CSW_HEGRENADE
    7,  //CSW_XM1014
    0,  //CSW_C4
    30,//CSW_MAC10
    30, //CSW_AUG
    0,  //CSW_SMOKEGRENADE
    15,//CSW_ELITE
    20,//CSW_FIVESEVEN
    25,//CSW_UMP45
    30, //CSW_SG550
    35, //CSW_GALIL
    25, //CSW_FAMAS
    12,//CSW_USP
    20,//CSW_GLOCK18
    10, //CSW_AWP
    30,//CSW_MP5NAVY
    100,//CSW_M249
    8,  //CSW_M3
    30, //CSW_M4A1
    30,//CSW_TMP
    20, //CSW_G3SG1
    0,  //CSW_FLASHBANG
    7,  //CSW_DEAGLE
    30, //CSW_SG552
    30, //CSW_AK47
    0,  //CSW_KNIFE
    50//CSW_P90
}
new bool:uc[33]

#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
	"events/awp.sc",
	"events/g3sg1.sc",
	"events/ak47.sc",
	"events/scout.sc",
	"events/m249.sc",
	"events/m4a1.sc",
	"events/sg552.sc",
	"events/aug.sc",
	"events/sg550.sc",
	"events/m3.sc",
	"events/xm1014.sc",
	"events/usp.sc",
	"events/mac10.sc",
	"events/ump45.sc",
	"events/fiveseven.sc",
	"events/p90.sc",
	"events/deagle.sc",
	"events/p228.sc",
	"events/glock18.sc",
	"events/mp5n.sc",
	"events/tmp.sc",
	"events/elite_left.sc",
	"events/elite_right.sc",
	"events/galil.sc",
	"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:hnr[33]

public plugin_precache()	g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)

public fwPrecacheEvent(type, const name[]) {
	for (new i = 0; i < sizeof g_guns_events; ++i) {
		if (equal(g_guns_events[i], name)) {
			g_guns_eventids_bitsum |= (1<<get_orig_retval())
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}

public plugin_init() {
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);

	register_event("HLTV", "event_newround", "a", "1=0", "2=0");
	register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
	
	register_clcmd("say /shop","BBS")
	register_clcmd("say_team /shop","BBS")
	
	unregister_forward(FM_PrecacheEvent, g_fwid, 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
	register_forward(FM_TraceLine, "fwTraceLine")
	g_max_clients = global_get(glb_maxClients)
	
	// Add your code here...
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id)&&viteza[id])
	{
		engfunc(EngFunc_SetClientMaxspeed, id, float(SPEED_SHOP));
		set_pev(id, pev_maxspeed, float(SPEED_SHOP));
	}
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid) {
	if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients)||!hnr[invoker])	return FMRES_IGNORED
	g_fix_punchangle[invoker] = true
	return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
	if (g_fix_punchangle[id]) {
		g_fix_punchangle[id] = false
		set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
		return FMRES_HANDLED
	}
	return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, pentru) {
	if (!(1 <= id <= g_max_clients)||!hnr[id])	return FMRES_IGNORED

	if (!g_normal_trace[id]) {
		g_normal_trace[id] = pentru
		return FMRES_HANDLED
	}

	static dummy
	if (pentru == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id) || get_user_weapon(id, dummy, dummy) == CSW_KNIFE)	return FMRES_IGNORED
	fix_recoil_trace(id, start, pentru)
	return FMRES_SUPERCEDE
}

public Event_CurWeapon( id )
{
    if(!is_user_alive(id)||!uc[id])	return
    new iWeapon = read_data(2)
    if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )	fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}

public client_putinserver(id)
{
	if(!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}
public client_disconnect(id)
{
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}

public event_newround()
{
	arrayset(incercari,0,charsmax(incercari))
	arrayset(viteza,false,charsmax(viteza))
	arrayset(uc,false,charsmax(uc))
	arrayset(hnr,false,charsmax(hnr))
}

public BBS(id)
{
	if(!is_user_alive(id))	return
	
	switch(bb_is_user_zombie(id))
	{
		case true:	ZMS(id)
		case false:	HMS(id)
	}
}
public ZMS(id)
{
	if(!is_user_alive(id)||!bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i;
	formatex(text, charsmax(text), "%s%s/r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(text, "shop_handlerZ");
	callback = menu_makecallback("hook_shopZ");
	
	for(i = 0; i < sizeof data_meniuZM; i++)
	{
		if(data_meniuZM[i][cant] != -1)
		{
			num_to_str(HP_SHOP_ZM,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#hz", str_to_rpl);
			num_to_str(HP_SHOP_ZM2,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#hz2", str_to_rpl);
			float_to_str(float(SPEED_SHOP),str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#s", str_to_rpl);
			
			format(text, charsmax(text), "%s -\r [\y%d $\r]", text, data_meniuZM[i][cost]);
		}
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopZ(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(!bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]>=MAXIM_INCERCARI)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuZM[item][cost])	return ITEM_DISABLED;
	if(viteza[id])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerZ(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM)
		case 1:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM2)
		case 3:
		{
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public HMS(id)
{
	if(!is_user_alive(id)||bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i;
	formatex(text, charsmax(text), "%s%s/r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(text, "shop_handlerH");
	callback = menu_makecallback("hook_shopH");
	
	for(i = 0; i < sizeof data_meniuHM; i++)
	{
		if(data_meniuHM[i][cant] != -1)
		{
			num_to_str(HP_SHOP_HM,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#hh", str_to_rpl);
			float_to_str(UC_LIMIT,str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#u", str_to_rpl);
			float_to_str(float(SPEED_SHOP),str_to_rpl,charsmax(str_to_rpl))
			replace(text, charsmax(text), "#s", str_to_rpl);
			
			format(text, charsmax(text), "%s -\r [\y%d $\r]", text, data_meniuHM[i][cost]);
		}
		else	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopH(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]>=MAXIM_INCERCARI)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuHM[item][cost])	return ITEM_DISABLED;
	if(viteza[id])	return ITEM_DISABLED;
	if(uc[id])	return ITEM_DISABLED;
	if(hnr[id])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerH(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_HM)
		case 1:	evo_callfunc(id,public_frost,nume_plg_frost)
		case 3:
		{
			hnr[id]=true
			engclient_cmd(id,"weapon_knife")
		}
		case 4:
		{
			uc[id]=false
			set_task(UC_LIMIT,"UCR",id)
			engclient_cmd(id,"weapon_knife")
		}
		case 5:
		{
			set_user_maxspeed(id,float(SPEED_SHOP))
			engclient_cmd(id,"weapon_knife")
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public UCR(id)
{
	uc[id]=false
	if(is_user_alive(id))	engclient_cmd(id,"weapon_knife")
}

stock evo_callfunc( id, function[], plugin[] )
{
	if( callfunc_begin( function, plugin ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
}

fix_recoil_trace(id, const Float:start[], pentru) {
	static Float:dest[3]
	pev(id, pev_v_angle, dest)
	engfunc(EngFunc_MakeVectors, dest)
	global_get(glb_v_forward, dest)
	xs_vec_mul_scalar(dest, 9999.0, dest)
	xs_vec_add(start, dest, dest)
	engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, pentru)
}
Image

Image
maybe there are no goodbyes..
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

23 Mar 2020, 13:11

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <basebuilder>

new const SHOP_TITLE[]="[BaseBuilder] Builder Shop^n"
new const ITEMS_LEFT[]="Items Left\w:"
const MAXIM_INCERCARI = 2
const HP_SHOP_HM = 100
const HP_SHOP_ZM = 1000
const HP_SHOP_ZM2 = 2000
const SPEED_SHOP = 320
const UC_LIMIT = 20
new incercari[33]

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

#define nume_plg_frost "frostnades.amxx"
#define public_frost "buy_frostnade"

new meniu,callback

enum datas_
{
    str[35],
    cant,
    cost
};

new const data_meniuHM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hh HP",			HP_SHOP_HM,	8000},
	{ "Frost Nade",			-1,		2000},
	{ "No Recoil",			-1,		7000},
	{ "Unlimited Clip(#u sec)",	-1,		5500},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new const data_meniuZM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hz HP",			HP_SHOP_ZM,	8000},
	{ "#hz2 HP",			HP_SHOP_ZM2,	10000},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new bool:viteza[33]

// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = 
{
    0,
    13, //CSW_P228
    0,
    10, //CSW_SCOUT
    0,  //CSW_HEGRENADE
    7,  //CSW_XM1014
    0,  //CSW_C4
    30,//CSW_MAC10
    30, //CSW_AUG
    0,  //CSW_SMOKEGRENADE
    15,//CSW_ELITE
    20,//CSW_FIVESEVEN
    25,//CSW_UMP45
    30, //CSW_SG550
    35, //CSW_GALIL
    25, //CSW_FAMAS
    12,//CSW_USP
    20,//CSW_GLOCK18
    10, //CSW_AWP
    30,//CSW_MP5NAVY
    100,//CSW_M249
    8,  //CSW_M3
    30, //CSW_M4A1
    30,//CSW_TMP
    20, //CSW_G3SG1
    0,  //CSW_FLASHBANG
    7,  //CSW_DEAGLE
    30, //CSW_SG552
    30, //CSW_AK47
    0,  //CSW_KNIFE
    50//CSW_P90
}
new bool:uc[33]

#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
	"events/awp.sc",
	"events/g3sg1.sc",
	"events/ak47.sc",
	"events/scout.sc",
	"events/m249.sc",
	"events/m4a1.sc",
	"events/sg552.sc",
	"events/aug.sc",
	"events/sg550.sc",
	"events/m3.sc",
	"events/xm1014.sc",
	"events/usp.sc",
	"events/mac10.sc",
	"events/ump45.sc",
	"events/fiveseven.sc",
	"events/p90.sc",
	"events/deagle.sc",
	"events/p228.sc",
	"events/glock18.sc",
	"events/mp5n.sc",
	"events/tmp.sc",
	"events/elite_left.sc",
	"events/elite_right.sc",
	"events/galil.sc",
	"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:hnr[33]

public plugin_precache()	g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)

public fwPrecacheEvent(type, const name[]) {
	for (new i = 0; i < sizeof g_guns_events; ++i) {
		if (equal(g_guns_events[i], name)) {
			g_guns_eventids_bitsum |= (1<<get_orig_retval())
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}

public plugin_init() {
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);

	register_event("HLTV", "event_newround", "a", "1=0", "2=0");
	register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
	
	register_clcmd("say /shop","BBS")
	register_clcmd("say_team /shop","BBS")
	
	unregister_forward(FM_PrecacheEvent, g_fwid, 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
	register_forward(FM_TraceLine, "fwTraceLine")
	g_max_clients = global_get(glb_maxClients)
	
	// Add your code here...
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id)&&viteza[id])
	{
		engfunc(EngFunc_SetClientMaxspeed, id, float(SPEED_SHOP));
		set_pev(id, pev_maxspeed, float(SPEED_SHOP));
	}
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid) {
	if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients)||!hnr[invoker])	return FMRES_IGNORED
	g_fix_punchangle[invoker] = true
	return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
	if (g_fix_punchangle[id]) {
		g_fix_punchangle[id] = false
		set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
		return FMRES_HANDLED
	}
	return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, pentru) {
	if (!(1 <= id <= g_max_clients)||!hnr[id])	return FMRES_IGNORED

	if (!g_normal_trace[id]) {
		g_normal_trace[id] = pentru
		return FMRES_HANDLED
	}

	static dummy
	if (pentru == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id) || get_user_weapon(id, dummy, dummy) == CSW_KNIFE)	return FMRES_IGNORED
	fix_recoil_trace(id, start, pentru)
	return FMRES_SUPERCEDE
}

public Event_CurWeapon( id )
{
    if(!is_user_alive(id)||!uc[id])	return
    new iWeapon = read_data(2)
    if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )	fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}

public client_putinserver(id)
{
	if(!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return
	viteza[id]=false
	incercari[id]=MAXIM_INCERCARI
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}
public client_disconnect(id)
{
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}

public event_newround()
{
	arrayset(incercari,MAXIM_INCERCARI,charsmax(incercari))
	arrayset(viteza,false,charsmax(viteza))
	arrayset(uc,false,charsmax(uc))
	arrayset(hnr,false,charsmax(hnr))
}

public BBS(id)
{
	if(!is_user_alive(id))	return
	
	switch(bb_is_user_zombie(id))
	{
		case true:	ZMS(id)
		case false:	HMS(id)
	}
}
public ZMS(id)
{
	if(!is_user_alive(id)||!bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i,title[120]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerZ");
	callback = menu_makecallback("hook_shopZ");
	
	for(i = 0; i < sizeof data_meniuZM; i++)
	{
		num_to_str(HP_SHOP_ZM,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#hz", str_to_rpl);
		num_to_str(HP_SHOP_ZM2,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#hz2", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#s", str_to_rpl);
			
		if(data_meniuZM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuZM[i][str], data_meniuZM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopZ(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(!bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(!incercari[id])	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuZM[item][cost])	return ITEM_DISABLED;
	if(viteza[id])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerZ(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM)
		case 1:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM2)
		case 3:
		{
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public HMS(id)
{
	if(!is_user_alive(id)||bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], i,title[120],str_to_rpl[5]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerH");
	callback = menu_makecallback("hook_shopH");
	
	for(i = 0; i < sizeof data_meniuHM; i++)
	{
		num_to_str(HP_SHOP_HM,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#hh", str_to_rpl)
		num_to_str(UC_LIMIT,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#u", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#s", str_to_rpl);
			
		if(data_meniuHM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		else	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopH(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(!incercari[id])	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuHM[item][cost])	return ITEM_DISABLED;
	if(viteza[id])	return ITEM_DISABLED;
	if(uc[id])	return ITEM_DISABLED;
	if(hnr[id])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerH(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_HM)
		case 1:	evo_callfunc(id,public_frost,nume_plg_frost)
		case 3:
		{
			hnr[id]=true
			engclient_cmd(id,"weapon_knife")
		}
		case 4:
		{
			uc[id]=false
			set_task(float(UC_LIMIT),"UCR",id)
			engclient_cmd(id,"weapon_knife")
		}
		case 5:
		{
			set_user_maxspeed(id,float(SPEED_SHOP))
			engclient_cmd(id,"weapon_knife")
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public UCR(id)
{
	uc[id]=false
	if(is_user_alive(id))	engclient_cmd(id,"weapon_knife")
}

stock evo_callfunc( id, function[], plugin[] )
{
	if( callfunc_begin( function, plugin ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
}

fix_recoil_trace(id, const Float:start[], pentru) {
	static Float:dest[3]
	pev(id, pev_v_angle, dest)
	engfunc(EngFunc_MakeVectors, dest)
	global_get(glb_v_forward, dest)
	xs_vec_mul_scalar(dest, 9999.0, dest)
	xs_vec_add(start, dest, dest)
	engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, pentru)
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
User avatar
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

23 Mar 2020, 19:48

acum e ok meniu dar nu merge, cand cumpar unlimited clip, imi da no recoil, cand cumpar no recoil nu-mi da nimic, aici am incercat eu si am schimbat case-urile si au mers, dar ulimited clip nu merge deloc, nu-mi da, si cateodata apare ca mai am iteme left dar nu le pot cumpara chiar daca am bani. si la zm, la case 2, imi apare 10002 inloc de 2000
maybe there are no goodbyes..
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

23 Mar 2020, 21:21

păi e pe timp unlimited
nr la iteme era greșit

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <basebuilder>

new const SHOP_TITLE[]="[BaseBuilder] Builder Shop^n"
new const ITEMS_LEFT[]="Items Left\w:"
const MAXIM_INCERCARI = 2
const HP_SHOP_HM = 100
const HP_SHOP_ZM = 1000
const HP_SHOP_ZM2 = 2000
const SPEED_SHOP = 320
const UC_LIMIT = 20
new incercari[33]

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

#define nume_plg_frost "frostnades.amxx"
#define public_frost "buy_frostnade"

new meniu,callback

enum datas_
{
    str[35],
    cant,
    cost
};

new const data_meniuHM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hh HP",			HP_SHOP_HM,	8000},
	{ "Frost Nade",			-1,		2000},
	{ "No Recoil",			-1,		7000},
	{ "Unlimited Clip(#u sec)",	-1,		5500},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new const data_meniuZM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hz HP",			HP_SHOP_ZM,	8000},
	{ "#hz2 HP",			HP_SHOP_ZM2,	10000},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new bool:viteza[33]

// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = 
{
    0,
    13, //CSW_P228
    0,
    10, //CSW_SCOUT
    0,  //CSW_HEGRENADE
    7,  //CSW_XM1014
    0,  //CSW_C4
    30,//CSW_MAC10
    30, //CSW_AUG
    0,  //CSW_SMOKEGRENADE
    15,//CSW_ELITE
    20,//CSW_FIVESEVEN
    25,//CSW_UMP45
    30, //CSW_SG550
    35, //CSW_GALIL
    25, //CSW_FAMAS
    12,//CSW_USP
    20,//CSW_GLOCK18
    10, //CSW_AWP
    30,//CSW_MP5NAVY
    100,//CSW_M249
    8,  //CSW_M3
    30, //CSW_M4A1
    30,//CSW_TMP
    20, //CSW_G3SG1
    0,  //CSW_FLASHBANG
    7,  //CSW_DEAGLE
    30, //CSW_SG552
    30, //CSW_AK47
    0,  //CSW_KNIFE
    50//CSW_P90
}
new bool:uc[33]

#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
	"events/awp.sc",
	"events/g3sg1.sc",
	"events/ak47.sc",
	"events/scout.sc",
	"events/m249.sc",
	"events/m4a1.sc",
	"events/sg552.sc",
	"events/aug.sc",
	"events/sg550.sc",
	"events/m3.sc",
	"events/xm1014.sc",
	"events/usp.sc",
	"events/mac10.sc",
	"events/ump45.sc",
	"events/fiveseven.sc",
	"events/p90.sc",
	"events/deagle.sc",
	"events/p228.sc",
	"events/glock18.sc",
	"events/mp5n.sc",
	"events/tmp.sc",
	"events/elite_left.sc",
	"events/elite_right.sc",
	"events/galil.sc",
	"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:hnr[33]

public plugin_precache()	g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)

public fwPrecacheEvent(type, const name[]) {
	for (new i = 0; i < sizeof g_guns_events; ++i) {
		if (equal(g_guns_events[i], name)) {
			g_guns_eventids_bitsum |= (1<<get_orig_retval())
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}

public plugin_init() {
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);

	register_event("HLTV", "event_newround", "a", "1=0", "2=0");
	register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
	
	register_clcmd("say /shop","BBS")
	register_clcmd("say_team /shop","BBS")
	
	unregister_forward(FM_PrecacheEvent, g_fwid, 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
	register_forward(FM_TraceLine, "fwTraceLine")
	g_max_clients = global_get(glb_maxClients)
	
	// Add your code here...
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id)&&viteza[id])
	{
		engfunc(EngFunc_SetClientMaxspeed, id, float(SPEED_SHOP));
		set_pev(id, pev_maxspeed, float(SPEED_SHOP));
	}
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid) {
	if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients)||!hnr[invoker])	return FMRES_IGNORED
	g_fix_punchangle[invoker] = true
	return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
	if (g_fix_punchangle[id]) {
		g_fix_punchangle[id] = false
		set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
		return FMRES_HANDLED
	}
	return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, pentru) {
	if (!(1 <= id <= g_max_clients)||!hnr[id])	return FMRES_IGNORED

	if (!g_normal_trace[id]) {
		g_normal_trace[id] = pentru
		return FMRES_HANDLED
	}

	static dummy
	if (pentru == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id) || get_user_weapon(id, dummy, dummy) == CSW_KNIFE)	return FMRES_IGNORED
	fix_recoil_trace(id, start, pentru)
	return FMRES_SUPERCEDE
}

public Event_CurWeapon( id )
{
    if(!is_user_alive(id)||!uc[id]||bb_is_user_zombie(id))	return
    new iWeapon = read_data(2)
    if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )	fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}

public client_putinserver(id)
{
	if(!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return
	viteza[id]=false
	incercari[id]=MAXIM_INCERCARI
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}
public client_disconnect(id)
{
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}

public event_newround()
{
	arrayset(incercari,MAXIM_INCERCARI,charsmax(incercari))
	arrayset(viteza,false,charsmax(viteza))
	arrayset(uc,false,charsmax(uc))
	arrayset(hnr,false,charsmax(hnr))
}

public BBS(id)
{
	if(!is_user_alive(id))	return
	
	switch(bb_is_user_zombie(id))
	{
		case true:	ZMS(id)
		case false:	HMS(id)
	}
}
public ZMS(id)
{
	if(!is_user_alive(id)||!bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i,title[120]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerZ");
	callback = menu_makecallback("hook_shopZ");
	
	for(i = 0; i < sizeof data_meniuZM; i++)
	{
		num_to_str(HP_SHOP_ZM,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#hz", str_to_rpl);
		num_to_str(HP_SHOP_ZM2,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#hz2", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#s", str_to_rpl);
			
		if(data_meniuZM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuZM[i][str], data_meniuZM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopZ(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(!bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]<=0)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuZM[item][cost])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerZ(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM)
		case 1:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM2)
		case 2:
		{
			if(viteza[id])	return PLUGIN_HANDLED
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public HMS(id)
{
	if(!is_user_alive(id)||bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], i,title[120],str_to_rpl[5]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerH");
	callback = menu_makecallback("hook_shopH");
	
	for(i = 0; i < sizeof data_meniuHM; i++)
	{
		num_to_str(HP_SHOP_HM,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#hh", str_to_rpl)
		num_to_str(UC_LIMIT,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#u", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#s", str_to_rpl);
			
		if(data_meniuHM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		else	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopH(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]<=0)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuHM[item][cost])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerH(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_HM)
		case 1:	evo_callfunc(id,public_frost,nume_plg_frost)
		case 2:
		{
			if(hnr[id])	return PLUGIN_HANDLED;
			hnr[id]=true
			engclient_cmd(id,"weapon_knife")
		}
		case 3:
		{
			if(uc[id])	return PLUGIN_HANDLED;
			uc[id]=false
			set_task(float(UC_LIMIT),"UCR",id)
			engclient_cmd(id,"weapon_knife")
		}
		case 4:
		{
			if(viteza[id])	return PLUGIN_HANDLED
			set_user_maxspeed(id,float(SPEED_SHOP))
			engclient_cmd(id,"weapon_knife")
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public UCR(id)
{
	uc[id]=false
	if(is_user_alive(id))	engclient_cmd(id,"weapon_knife")
}

stock evo_callfunc( id, function[], plugin[] )
{
	if( callfunc_begin( function, plugin ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
}

fix_recoil_trace(id, const Float:start[], pentru) {
	static Float:dest[3]
	pev(id, pev_v_angle, dest)
	engfunc(EngFunc_MakeVectors, dest)
	global_get(glb_v_forward, dest)
	xs_vec_mul_scalar(dest, 9999.0, dest)
	xs_vec_add(start, dest, dest)
	engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, pentru)
}
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
User avatar
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

23 Mar 2020, 22:44

nu merge, cand cumpar unlimited imi schimba pe cutit, pentru ca ai pus acolo tu (e oblicatorie? ca nu inutil sa-ti schimbe pe cutit cand cumperi ceva) iar cand dau si schimb inapoi pe arma, nu am unlimited clip
si la zm tot apare 10002 inloc de 2000 :)
ms +karma
maybe there are no goodbyes..
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

23 Mar 2020, 23:23

eu folosesc codu ăla pentru clip și nu am probleme
cauta ți alt plg care ți merge
2

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <basebuilder>

new const SHOP_TITLE[]="[BaseBuilder] Builder Shop^n"
new const ITEMS_LEFT[]="Items Left\w:"
const MAXIM_INCERCARI = 2
const HP_SHOP_HM = 100
const HP_SHOP_ZM = 1000
const HP_SHOP_ZM2 = 2000
const SPEED_SHOP = 320
const UC_LIMIT = 20
new incercari[33]

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

#define nume_plg_frost "frostnades.amxx"
#define public_frost "buy_frostnade"

new meniu,callback

enum datas_
{
    str[35],
    cant,
    cost
};

new const data_meniuHM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hh HP",			HP_SHOP_HM,	8000},
	{ "Frost Nade",			-1,		2000},
	{ "No Recoil",			-1,		7000},
	{ "Unlimited Clip(#u sec)",	-1,		5500},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new const data_meniuZM[][datas_] =
{  
	// nume				// cantitate	// cost
	{ "#hz HP",			HP_SHOP_ZM,	8000},
	{ "#kk# HP",			HP_SHOP_ZM2,	10000},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new bool:viteza[33]

// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = 
{
    0,
    13, //CSW_P228
    0,
    10, //CSW_SCOUT
    0,  //CSW_HEGRENADE
    7,  //CSW_XM1014
    0,  //CSW_C4
    30,//CSW_MAC10
    30, //CSW_AUG
    0,  //CSW_SMOKEGRENADE
    15,//CSW_ELITE
    20,//CSW_FIVESEVEN
    25,//CSW_UMP45
    30, //CSW_SG550
    35, //CSW_GALIL
    25, //CSW_FAMAS
    12,//CSW_USP
    20,//CSW_GLOCK18
    10, //CSW_AWP
    30,//CSW_MP5NAVY
    100,//CSW_M249
    8,  //CSW_M3
    30, //CSW_M4A1
    30,//CSW_TMP
    20, //CSW_G3SG1
    0,  //CSW_FLASHBANG
    7,  //CSW_DEAGLE
    30, //CSW_SG552
    30, //CSW_AK47
    0,  //CSW_KNIFE
    50//CSW_P90
}
new bool:uc[33]

#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
	"events/awp.sc",
	"events/g3sg1.sc",
	"events/ak47.sc",
	"events/scout.sc",
	"events/m249.sc",
	"events/m4a1.sc",
	"events/sg552.sc",
	"events/aug.sc",
	"events/sg550.sc",
	"events/m3.sc",
	"events/xm1014.sc",
	"events/usp.sc",
	"events/mac10.sc",
	"events/ump45.sc",
	"events/fiveseven.sc",
	"events/p90.sc",
	"events/deagle.sc",
	"events/p228.sc",
	"events/glock18.sc",
	"events/mp5n.sc",
	"events/tmp.sc",
	"events/elite_left.sc",
	"events/elite_right.sc",
	"events/galil.sc",
	"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:hnr[33]

public plugin_precache()	g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)

public fwPrecacheEvent(type, const name[]) {
	for (new i = 0; i < sizeof g_guns_events; ++i) {
		if (equal(g_guns_events[i], name)) {
			g_guns_eventids_bitsum |= (1<<get_orig_retval())
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}

public plugin_init() {
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);

	register_event("HLTV", "event_newround", "a", "1=0", "2=0");
	register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
	
	register_clcmd("say /shop","BBS")
	register_clcmd("say_team /shop","BBS")
	
	unregister_forward(FM_PrecacheEvent, g_fwid, 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
	register_forward(FM_TraceLine, "fwTraceLine")
	g_max_clients = global_get(glb_maxClients)
	
	// Add your code here...
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id)&&viteza[id])
	{
		engfunc(EngFunc_SetClientMaxspeed, id, float(SPEED_SHOP));
		set_pev(id, pev_maxspeed, float(SPEED_SHOP));
	}
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid) {
	if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients)||!hnr[invoker]||bb_is_user_zombie(invoker))	return FMRES_IGNORED
	g_fix_punchangle[invoker] = true
	return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
	if (g_fix_punchangle[id]) {
		g_fix_punchangle[id] = false
		set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
		return FMRES_HANDLED
	}
	return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, pentru) {
	if (!(1 <= id <= g_max_clients)||!hnr[id]||bb_is_user_zombie(id))	return FMRES_IGNORED

	if (!g_normal_trace[id]) {
		g_normal_trace[id] = pentru
		return FMRES_HANDLED
	}

	static dummy
	if (pentru == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id) || get_user_weapon(id, dummy, dummy) == CSW_KNIFE)	return FMRES_IGNORED
	fix_recoil_trace(id, start, pentru)
	return FMRES_SUPERCEDE
}

public Event_CurWeapon( id )
{
    if(!is_user_alive(id)||!uc[id]||bb_is_user_zombie(id))	return
    new iWeapon = read_data(2)
    if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )	fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}

public client_putinserver(id)
{
	if(!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return
	viteza[id]=false
	incercari[id]=MAXIM_INCERCARI
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}
public client_disconnect(id)
{
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}

public event_newround()
{
	arrayset(incercari,MAXIM_INCERCARI,charsmax(incercari))
	arrayset(viteza,false,charsmax(viteza))
	arrayset(uc,false,charsmax(uc))
	arrayset(hnr,false,charsmax(hnr))
}

public BBS(id)
{
	if(!is_user_alive(id))	return
	
	switch(bb_is_user_zombie(id))
	{
		case true:	ZMS(id)
		case false:	HMS(id)
	}
}
public ZMS(id)
{
	if(!is_user_alive(id)||!bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i,title[120]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerZ");
	callback = menu_makecallback("hook_shopZ");
	
	for(i = 0; i < sizeof data_meniuZM; i++)
	{
		num_to_str(HP_SHOP_ZM,str_to_rpl,charsmax(str_to_rpl))
		replace(data_meniuZM[i], charsmax(data_meniuZM[]), "#hz", str_to_rpl);
		num_to_str(HP_SHOP_ZM2,str_to_rpl,charsmax(str_to_rpl))
		replace(data_meniuZM[i], charsmax(data_meniuZM[]), "#kk#", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#s", str_to_rpl);
		
		if(data_meniuZM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuZM[i][str], data_meniuZM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopZ(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(!bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]<=0)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuZM[item][cost])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerZ(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM)
		case 1:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM2)
		case 2:
		{
			if(viteza[id])	return PLUGIN_HANDLED
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public HMS(id)
{
	if(!is_user_alive(id)||bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], i,title[120],str_to_rpl[5]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerH");
	callback = menu_makecallback("hook_shopH");
	
	for(i = 0; i < sizeof data_meniuHM; i++)
	{
		num_to_str(HP_SHOP_HM,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#hh", str_to_rpl)
		num_to_str(UC_LIMIT,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#u", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#s", str_to_rpl);
			
		if(data_meniuHM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		else	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopH(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]<=0)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuHM[item][cost])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerH(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_HM)
		case 1:	evo_callfunc(id,public_frost,nume_plg_frost)
		case 2:
		{
			if(hnr[id])	return PLUGIN_HANDLED;
			hnr[id]=true
			engclient_cmd(id,"weapon_knife")
		}
		case 3:
		{
			if(uc[id])	return PLUGIN_HANDLED;
			uc[id]=true
			set_task(float(UC_LIMIT),"UCR",id)
			engclient_cmd(id,"weapon_knife")
		}
		case 4:
		{
			if(viteza[id])	return PLUGIN_HANDLED
			set_user_maxspeed(id,float(SPEED_SHOP))
			engclient_cmd(id,"weapon_knife")
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuHM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public UCR(id)
{
	uc[id]=false
	if(is_user_alive(id))	engclient_cmd(id,"weapon_knife")
}

stock evo_callfunc( id, function[], plugin[] )
{
	if( callfunc_begin( function, plugin ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
}

fix_recoil_trace(id, const Float:start[], pentru) {
	static Float:dest[3]
	pev(id, pev_v_angle, dest)
	engfunc(EngFunc_MakeVectors, dest)
	global_get(glb_v_forward, dest)
	xs_vec_mul_scalar(dest, 9999.0, dest)
	xs_vec_add(start, dest, dest)
	engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, pentru)
}
/code]
Last edited by levin on 24 Mar 2020, 13:36, edited 1 time in total.
Reason: e2
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
User avatar
goeslegendary
Membru, skill +1
Membru, skill +1
Posts: 107
Joined: 14 Sep 2018, 23:35
Detinator Steam: Da
CS Status: Sniper & Rifler
Fond eXtream: 0
Location: Timisoara
Has thanked: 4 times

24 Mar 2020, 01:27

okay, nu mergea ca era false inloc de true, acum merge cum l-am editat eu doar ca la Unlimited Clip si la Speed nu imi ia bani si nici incercari.. doar la CT, la ZM merge totul
EDIT: si la CT la frost nade imi ia 10000, iar daca am mai putin de 10000, imi da pe minus, mi-am luat 2, si am ramas cu -8000, iar daca iau din plugin-ul de frostnade /fn, ia 2 normal...

Code: Select all

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <xs>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <basebuilder>

new const SHOP_TITLE[]="Base Builder Shop^n"
new const ITEMS_LEFT[]="Items Left\w:"
const MAXIM_INCERCARI = 2
const HP_SHOP_HM = 100
const HP_SHOP_ZM = 1000
const HP_SHOP_ZM2 = 2000
const SPEED_SHOP = 320
const UC_LIMIT = 20
new incercari[33]

new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;

#define nume_plg_frost "frostnades.amxx"
#define public_frost "buy_frostnade"

new meniu,callback

enum datas_ {
	str[35],
	cant,
	cost
};

new const data_meniuHM[][datas_] = {  
	// nume				// cantitate	// cost
	{ "#hh HP",			HP_SHOP_HM,	8000},
	{ "Frost Nade",			-1,		2000},
	{ "No Recoil",			-1,		7000},
	{ "Unlimited Clip(#u sec)",	-1,		5500},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new const data_meniuZM[][datas_] = {  
	// nume				// cantitate	// cost
	{ "#hz HP",			HP_SHOP_ZM,	8000},
	{ "2000 HP",			HP_SHOP_ZM2,	10000},
	{ "#s Maximum Speed",		SPEED_SHOP,	3500}
};

new bool:viteza[33]

// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] = {
	0,
	13, //CSW_P228
	0,
	10, //CSW_SCOUT
	0,  //CSW_HEGRENADE
	7,  //CSW_XM1014
	0,  //CSW_C4
	30,//CSW_MAC10
	30, //CSW_AUG
	0,  //CSW_SMOKEGRENADE
	15,//CSW_ELITE
	20,//CSW_FIVESEVEN
	25,//CSW_UMP45
	30, //CSW_SG550
	35, //CSW_GALIL
	25, //CSW_FAMAS
	12,//CSW_USP
	20,//CSW_GLOCK18
	10, //CSW_AWP
	30,//CSW_MP5NAVY
	100,//CSW_M249
	8,  //CSW_M3
	30, //CSW_M4A1
	30,//CSW_TMP
	20, //CSW_G3SG1
	0,  //CSW_FLASHBANG
	7,  //CSW_DEAGLE
	30, //CSW_SG552
	30, //CSW_AK47
	0,  //CSW_KNIFE
	50//CSW_P90
}
new bool:uc[33]

#define MAX_CLIENTS 32
new g_normal_trace[MAX_CLIENTS + 1]
new bool:g_fix_punchangle[MAX_CLIENTS + 1]
new g_fwid
new g_max_clients
new const g_guns_events[][] = {
	"events/awp.sc",
	"events/g3sg1.sc",
	"events/ak47.sc",
	"events/scout.sc",
	"events/m249.sc",
	"events/m4a1.sc",
	"events/sg552.sc",
	"events/aug.sc",
	"events/sg550.sc",
	"events/m3.sc",
	"events/xm1014.sc",
	"events/usp.sc",
	"events/mac10.sc",
	"events/ump45.sc",
	"events/fiveseven.sc",
	"events/p90.sc",
	"events/deagle.sc",
	"events/p228.sc",
	"events/glock18.sc",
	"events/mp5n.sc",
	"events/tmp.sc",
	"events/elite_left.sc",
	"events/elite_right.sc",
	"events/galil.sc",
	"events/famas.sc"
}
new g_guns_eventids_bitsum
new bool:hnr[33]

public plugin_precache()	g_fwid = register_forward(FM_PrecacheEvent, "fwPrecacheEvent", 1)

public fwPrecacheEvent(type, const name[]) {
	for (new i = 0; i < sizeof g_guns_events; ++i) {
		if (equal(g_guns_events[i], name)) {
			g_guns_eventids_bitsum |= (1<<get_orig_retval())
			return FMRES_HANDLED
		}
	}
	return FMRES_IGNORED
}

public plugin_init() {
	RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeedPost", true);
	
	register_event("HLTV", "event_newround", "a", "1=0", "2=0");
	register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
	
	register_clcmd("say /shop","BBS")
	register_clcmd("say_team /shop","BBS")
	
	unregister_forward(FM_PrecacheEvent, g_fwid, 1)
	register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
	register_forward(FM_PlayerPostThink, "fwPlayerPostThink", 1)
	register_forward(FM_TraceLine, "fwTraceLine")
	g_max_clients = global_get(glb_maxClients)
	
	// Add your code here...
}

public fw_ResetMaxSpeedPost(id)
{
	if(is_user_alive(id)&&viteza[id])
	{
		engfunc(EngFunc_SetClientMaxspeed, id, float(SPEED_SHOP));
		set_pev(id, pev_maxspeed, float(SPEED_SHOP));
	}
	return HAM_IGNORED;
}

public fwPlaybackEvent(flags, invoker, eventid) {
	if (!(g_guns_eventids_bitsum & (1<<eventid)) || !(1 <= invoker <= g_max_clients)||!hnr[invoker])	return FMRES_IGNORED
	g_fix_punchangle[invoker] = true
	return FMRES_HANDLED
}
public fwPlayerPostThink(id) {
	if (g_fix_punchangle[id]) {
		g_fix_punchangle[id] = false
		set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
		return FMRES_HANDLED
	}
	return FMRES_IGNORED
}
public fwTraceLine(const Float:start[3], const Float:dest[3], ignore_monsters, id, pentru) {
	if (!(1 <= id <= g_max_clients)||!hnr[id])	return FMRES_IGNORED
	
	if (!g_normal_trace[id]) {
		g_normal_trace[id] = pentru
		return FMRES_HANDLED
	}
	
	static dummy
	if (pentru == g_normal_trace[id] || ignore_monsters != DONT_IGNORE_MONSTERS || !is_user_alive(id) || get_user_weapon(id, dummy, dummy) == CSW_KNIFE)	return FMRES_IGNORED
	fix_recoil_trace(id, start, pentru)
	return FMRES_SUPERCEDE
}

public Event_CurWeapon( id )
{
	if(!is_user_alive(id)||!uc[id]||bb_is_user_zombie(id))	return
	new iWeapon = read_data(2)
	if( !( NOCLIP_WPN_BS & (1<<iWeapon) ) )	fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
}

public client_putinserver(id)
{
	if(!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return
	viteza[id]=false
	incercari[id]=MAXIM_INCERCARI
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}
public client_disconnect(id)
{
	viteza[id]=false
	incercari[id]=0
	uc[id]=false
	hnr[id]=false
	g_normal_trace[id] = 0
}

public event_newround()
{
	arrayset(incercari,MAXIM_INCERCARI,charsmax(incercari))
	arrayset(viteza,false,charsmax(viteza))
	arrayset(uc,false,charsmax(uc))
	arrayset(hnr,false,charsmax(hnr))
}

public BBS(id)
{
	if(!is_user_alive(id))	return
	
	switch(bb_is_user_zombie(id))
	{
		case true:	ZMS(id)
			case false:	HMS(id)
		}
}
public ZMS(id)
{
	if(!is_user_alive(id)||!bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], str_to_rpl[5], i,title[120]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerZ");
	callback = menu_makecallback("hook_shopZ");
	
	for(i = 0; i < sizeof data_meniuZM; i++)
	{
		num_to_str(HP_SHOP_ZM,str_to_rpl,charsmax(str_to_rpl))
		replace(data_meniuZM[i], charsmax(data_meniuZM[]), "#hz", str_to_rpl);
		num_to_str(HP_SHOP_ZM2,str_to_rpl,charsmax(str_to_rpl))
		replace(data_meniuZM[i], charsmax(data_meniuZM[]), "#kk#", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuZM[i], charsmax(data_meniuZM[]), "#s", str_to_rpl);
		
		if(data_meniuZM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuZM[i][str], data_meniuZM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopZ(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(!bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]<=0)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuZM[item][cost])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerZ(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM)
			case 1:	set_user_health(id,get_user_health(id)+HP_SHOP_ZM2)
			case 2:
		{
			if(viteza[id])	return PLUGIN_HANDLED
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public HMS(id)
{
	if(!is_user_alive(id)||bb_is_user_zombie(id))	return
	
	static text[128], tasta[2], i,title[120],str_to_rpl[5]
	formatex(title, charsmax(title), "%s%s\r %d",SHOP_TITLE,ITEMS_LEFT, incercari[id]);
	meniu = menu_create(title, "shop_handlerH");
	callback = menu_makecallback("hook_shopH");
	
	for(i = 0; i < sizeof data_meniuHM; i++)
	{
		num_to_str(HP_SHOP_HM,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#hh", str_to_rpl)
		num_to_str(UC_LIMIT,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#u", str_to_rpl);
		num_to_str(SPEED_SHOP,str_to_rpl,charsmax(str_to_rpl))
		replace_all(data_meniuHM[i][str], charsmax(data_meniuHM[]), "#s", str_to_rpl);
		
		if(data_meniuHM[i][cant] != -1)	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		else	formatex(text, charsmax(text), "%s -\r [\y%d $\r]", data_meniuHM[i][str], data_meniuHM[i][cost]);
		
		tasta[0] = i;
		tasta[1] = 0;
		menu_additem(meniu, text, tasta, _, callback);
	}
	menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, meniu);
}
public hook_shopH(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_alive(id))	return ITEM_DISABLED;
	if(bb_is_user_zombie(id))	return ITEM_DISABLED;
	if(incercari[id]<=0)	return ITEM_DISABLED;
	if(cs_get_user_money(id) < data_meniuHM[item][cost])	return ITEM_DISABLED;
	
	return ITEM_ENABLED;
}
public shop_handlerH(id, menu, item)
{
	if(item == MENU_EXIT||item<0)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	switch(item)
	{
		case 0:	set_user_health(id,get_user_health(id)+HP_SHOP_HM)
			case 1:	evo_callfunc(id,public_frost,nume_plg_frost)
			case 2:
		{
			if(hnr[id])	return PLUGIN_HANDLED;
			hnr[id]=true
		}
		case 3:
		{
			if(uc[id])	return PLUGIN_HANDLED;
			uc[id]=true
			set_task(float(UC_LIMIT),"UCR",id)
		}
		case 4:
		{
			if(viteza[id])	return PLUGIN_HANDLED
			set_user_maxspeed(id,float(SPEED_SHOP))
			viteza[id]=true
		}
	}
	
	cs_set_user_money(id,cs_get_user_money(id)-data_meniuZM[item][cost],1)
	incercari[id]--
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public UCR(id)
{
	uc[id]=false
}

stock evo_callfunc( id, function[], plugin[] )
{
	if( callfunc_begin( function, plugin ) == 1 )
	{
		callfunc_push_int( id );
		callfunc_end( );
	}
}

fix_recoil_trace(id, const Float:start[], pentru) {
	static Float:dest[3]
	pev(id, pev_v_angle, dest)
	engfunc(EngFunc_MakeVectors, dest)
	global_get(glb_v_forward, dest)
	xs_vec_mul_scalar(dest, 9999.0, dest)
	xs_vec_add(start, dest, dest)
	engfunc(EngFunc_TraceLine, start, dest, DONT_IGNORE_MONSTERS, id, pentru)
}
maybe there are no goodbyes..
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: Yandex [Bot] and 29 guests