scuze pentru DP
l-am fixat eu, ai pus sa ia pretul de la meniul de zm, l-am pus eu la ct
merge, Mersi mult!!! +rep
[Cerere Plugin] Shop Builder
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 .
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
- goeslegendary
- 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
Last edited by levin on 24 Mar 2020, 13:36, edited 1 time in total.
Reason: plg externe gen fn le configurezi
Reason: plg externe gen fn le configurezi
maybe there are no goodbyes..
- goeslegendary
- 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
LEVIN, e o problema, cand cumpar no recoil, nu da damage..
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)
register_plugin("[BB] Shop Manager", "1.0", "nutu.")
}
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_meniuHM[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..
- levin
- 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:
cere i ajutor lu nutu, sau dacă tu ești el înseamnă că știi să rezolvi sal
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)
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)