Member
|
12-08-2020
, 18:22
Re: how to change this (add item into a menu)
|
#31
|
Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <cromchat>
#if defined client_disconnected
#define client_disconnect client_disconnected
#endif
native fcs_get_user_credits(index)
native fcs_set_user_credits(index, amount)
stock fcs_sub_user_credits(client, credits)
{
return fcs_set_user_credits(client, fcs_get_user_credits(client) - credits);
}
new JETPACK_PMODEL[] = "models/p_longjump.mdl"
new JETPACK_PMODEL_VIP[] ="models/surfx_models/p_longjump_vip.mdl"
new JETPACK_GOTSOUND[] = "items/ammopickup2.wav"
new cvar_cost
new cvar_thrust
new cvar_min_speed
new cvar_max_speed
new cvar_thrustvip
new cvar_minspeedvip
new cvar_maxspeedvip
new g_HasJetpack[33]
new g_JetpackEnt[33]
static const PLUGIN_NAME[] = "SyN Surf Jetpack"
static const PLUGIN_AUTHOR[] = "Cheap_Suit"
static const PLUGIN_VERSION[] = "1.4"
public plugin_init()
{
new mapName[33]
get_mapname(mapName, 32)
if(!equali(mapName, "surf_", 5))
{
new pluginName[33]
format(pluginName, 32, "[Disabled] %s", PLUGIN_NAME)
register_plugin(pluginName, PLUGIN_VERSION, PLUGIN_AUTHOR)
pause("ade")
}
else
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_cvar(PLUGIN_NAME, PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER)
register_clcmd("sjp_givesj" , "cmd_GiveSJ", ADMIN_IMMUNITY, "<userid> - Gives free surf jetpack")
register_clcmd("sjp_stripsj" , "cmd_StripSJ", ADMIN_IMMUNITY, "<userid> - Strips users surf jetpack")
register_clcmd("say /buyjp", "cmd_BuySurfJetpack", 0, "Buys surf jetpack")
register_clcmd("say /jp", "cmd_BuySurfJetpack", 0, "Buys surf jetpack")
register_concmd("buy_jetpack", "cmd_BuySurfJetpack", 0, "Buys surf jetpack")
register_concmd("buyjetpack", "cmd_BuySurfJetpack", 0, "Buys surf jetpack")
cvar_cost = get_cvar_num("fcsshop_jetpack_price")
cvar_thrust = register_cvar("sjp_thrust", "5")
cvar_min_speed = register_cvar("sjp_min_speed", "600")
cvar_max_speed = register_cvar("sjp_max_speed", "900")
cvar_thrustvip = register_cvar("vip_thrust", "8")
cvar_minspeedvip = register_cvar("vip_minspeed", "700")
cvar_maxspeedvip = register_cvar("vip_maxspeed", "1100")
register_event("DeathMsg", "Event_DeathMsg", "a")
}
}
public plugin_precache()
{
precache_sound(JETPACK_GOTSOUND)
precache_model(JETPACK_PMODEL)
precache_model(JETPACK_PMODEL_VIP)
}
public plugin_natives()
{
register_native("give_jetpack", "native_give_jetpack")
register_native("give_vip_jetpack", "native_give_vip_jetpack")
}
public client_connect(id)
{
g_HasJetpack[id] = 0
_removeJetpackEnt(id)
}
public client_disconnect(id)
{
g_HasJetpack[id] = 0
_removeJetpackEnt(id)
}
public Event_DeathMsg()
{
new id = read_data(2)
g_HasJetpack[id] = 0
_removeJetpackEnt(id)
return PLUGIN_CONTINUE
}
public cmd_BuySurfJetpack(id)
{
new iMoney = fcs_get_user_credits(id)
new iCost = get_pcvar_num(cvar_cost)
if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")
else if(g_HasJetpack[id])
client_print(id, print_center, "You already own a surf jetpack.")
else if(iMoney < iCost)
client_print(id, print_center, "Insufficient funds! (%d Credits)", iCost)
else
{
_give_Jetpack(id)
fcs_sub_user_credits(id, iCost)
}
return PLUGIN_HANDLED
}
public cmd_GiveSJ(id , level , cid)
{
if(!cmd_access(id , level , cid , 2))
return PLUGIN_HANDLED
new arg1[33]
read_argv(1 , arg1 , 32)
new target = cmd_target(id , arg1 , 0)
if(!is_user_connected(target))
{
console_print(id, "Player does not exist")
return PLUGIN_HANDLED
}
if(g_HasJetpack[target])
{
console_print(id, "Player already has a surf jetpack")
return PLUGIN_HANDLED
}
_vip_Jetpack(target)
new Name[33], Name2[33]
get_user_name(id, Name, 32)
get_user_name(target, Name2, 32)
console_print(id, "You gave %s a surf jetpack", Name2)
CromChat(target,"^4[ADMIN]: ^3%s ^1gave you a surf ^4vip ^1jetpack,test it out!", Name)
return PLUGIN_HANDLED
}
public cmd_StripSJ(id , level , cid)
{
if(!cmd_access(id , level , cid , 2))
return PLUGIN_HANDLED
new arg1[33]
read_argv(1 , arg1 , 32)
new target = cmd_target(id , arg1 , 0)
if(!is_user_connected(target))
{
console_print(id, "Player does not exist")
return PLUGIN_HANDLED
}
if(!g_HasJetpack[target])
{
console_print(id, "Player does not have a surf jetpack")
return PLUGIN_HANDLED
}
g_HasJetpack[id] = 0
_removeJetpackEnt(id)
new Name[33], Name2[33]
get_user_name(id, Name, 32)
get_user_name(target, Name2, 32)
console_print(id, "You stripped %s of his surf jetpack", Name2)
CromChat(target,"^4[ADMIN]: ^3%s ^1stripped your surf jetpack.", Name)
return PLUGIN_HANDLED
}
public _give_Jetpack(id)
{
g_HasJetpack[id] = 1
CromChat(id,"^4****^3YOU HAVE BOUGHT A ^1JETPACK,^3JUST SURF! ITS AUTOMATIC^4~~~")
_set_jetpack_model(id)
}
public _vip_Jetpack(id)
{
g_HasJetpack[id] = 2
CromChat(id,"^4****^1to use the ^4VIP ^1jetpack just ^3surf ^1it will activate automatically.")
_set_jetpack_model(id)
}
public _set_jetpack_model(id)
{
client_cmd(id, "spk %s", JETPACK_GOTSOUND)
if(g_JetpackEnt[id] < 1)
{
g_JetpackEnt[id] = create_entity("info_target")
if(is_valid_ent(g_JetpackEnt[id]))
{
entity_set_model(g_JetpackEnt[id], g_HasJetpack[id] == 2 ? JETPACK_PMODEL_VIP : JETPACK_PMODEL)
entity_set_int(g_JetpackEnt[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(g_JetpackEnt[id], EV_ENT_aiment, id)
}
}
}
public _removeJetpackEnt(id)
{
if(g_JetpackEnt[id] > 0)
remove_entity(g_JetpackEnt[id])
g_JetpackEnt[id] = 0
}
public client_PreThink(id)
{
if(!is_user_alive(id) || !g_HasJetpack[id])
return PLUGIN_CONTINUE
if(get_user_speed(id) < get_pcvar_num(g_HasJetpack[id] == 2 ? cvar_minspeedvip : cvar_min_speed))
return PLUGIN_CONTINUE
new Button = get_user_button(id)
if(Button & IN_MOVELEFT || Button & IN_MOVERIGHT)
{
_jetThrust(id)
}
return PLUGIN_CONTINUE
}
public _jetThrust(id)
{
new Float:fVelocity[3]
entity_get_vector(id, EV_VEC_velocity, fVelocity)
new Float:fAngle[3]
entity_get_vector(id, EV_VEC_angles, fAngle)
engfunc(EngFunc_MakeVectors, fAngle)
new Float:fForward[3]
get_global_vector(GL_v_forward, fForward)
fVelocity[0] += fForward[0] * get_pcvar_num( g_HasJetpack[id] == 2 ? cvar_thrustvip : cvar_thrust )
fVelocity[1] += fForward[1] * get_pcvar_num( g_HasJetpack[id] == 2 ? cvar_thrustvip : cvar_thrust )
if(get_user_speed(id) < get_pcvar_num(g_HasJetpack[id] == 2 ? cvar_maxspeedvip : cvar_max_speed))
entity_set_vector(id, EV_VEC_velocity, fVelocity)
return PLUGIN_CONTINUE
}
stock get_user_speed(id)
{
new Float:fVelocity[3]
entity_get_vector(id, EV_VEC_velocity, fVelocity)
new iVelocity[3]
FVecIVec(fVelocity, iVelocity)
new iVelocity0 = iVelocity[0] * iVelocity[0]
new iVelocity1 = iVelocity[1] * iVelocity[1]
return sqroot(iVelocity0 + iVelocity1)
}
public native_give_jetpack(iPluginID, iPluginParams, id)
{
_give_Jetpack(get_param(1))
{
if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")
else if(g_HasJetpack[id])
client_print(id, print_center, "You already own a surf jetpack.")
else
{
_give_Jetpack(id)
}
return PLUGIN_HANDLED
}
}
public native_give_vip_jetpack(iPluginID, iPluginParams, id)
{
_vip_Jetpack(get_param(1))
{
if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")
else if(g_HasJetpack[id])
client_print(id, print_center, "You already own a surf jetpack.")
else
{
_vip_Jetpack(id)
}
return PLUGIN_HANDLED
}
}
this is the code i've been working on,i got it somehow to compile,and tested it but it doesen't work as intended,first of all if i use /buyjp the server crashes (gives me segmentation fault)
second of all,if i use the shop or the vmenu it gives me the print_chat twice (so i think it gives me two same jetpacks) and if i try to buy or select them again it gives me the message (you already own a surf jetpack) but it still gives me the jetpack
any help here?
|
|