need help with menu options
Hello, i have a little problem, i am trying to make menu with jetpack option
MENU:
PHP Code:
#include <amxmodx> #include <hamsandwich> #include <fakemeta> #include <fakemeta_util>
new bool:FirstSpawn[33] public plugin_init() { RegisterHam (Ham_Spawn, "player", "Player_Spawn", 1) register_forward( FM_PlayerPreThink, "forward_player_prethink" ); register_logevent( "logevent_round_start", 2, "1=Round_Start" );
} public Player_Spawn(id) { if( !is_user_alive(id) ) // this spawn occurs when a player connects to the server, so this is a good place to reset the value { FirstSpawn[id] = true return } FirstSpawn[id] = false
new menu = menu_create("MENU:", "vip_menu");
menu_additem(menu, "1 OPTION", "1", 0); menu_additem(menu, "2 JETPACK", "2", 0); menu_additem(menu, "3 OPTION", "3", ADMIN_ADMIN);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0); } public vip_menu(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; }
new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key) { case 1: { client_print(id, print_chat, "OPTION 1"); menu_destroy(menu); return PLUGIN_HANDLED; } case 2: { client_print(id, print_chat, "JETPACK 2"); } case 3: { client_print(id, print_chat, "JETPACK 2"); } case 4: { client_print(id, print_chat, "OPTION 3"); } }
menu_destroy(menu); return PLUGIN_HANDLED; }
JETPACK:
PHP Code:
#include <amxmodx> #include <amxmisc> #include <fakemeta> #include <cstrike> #include <engine>
new SPRITE_MODEL[] = "sprites/explode1.spr" new JETPACK_PMODEL[] = "models/p_longjump.mdl" new JETPACK_GOTSOUND[] = "items/ammopickup2.wav"
new cvar_cost new cvar_thrust new cvar_min_speed new cvar_max_speed
new sprite_fire
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 /buyjetpack", "cmd_BuySurfJetpack", 0, "Buys surf jetpack") register_clcmd("say buy_jetpack", "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 = register_cvar("sjp_cost", "5000") cvar_thrust = register_cvar("sjp_thrust", "10") cvar_min_speed = register_cvar("sjp_min_speed", "400") cvar_max_speed = register_cvar("sjp_max_speed", "1200") register_event("DeathMsg", "Event_DeathMsg", "a") } }
public plugin_precache() { sprite_fire = precache_model(SPRITE_MODEL) precache_sound(JETPACK_GOTSOUND) precache_model(JETPACK_PMODEL) }
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 = cs_get_user_money(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)", iCost) else { _give_Jetpack(id) cs_set_user_money(id, iMoney - iCost, 1) } 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 } _give_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) client_print(target, print_chat, "ADMIN: %s gave you a surf jetpack", 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 a surf jetpack", Name2) client_print(target, print_chat, "ADMIN: %s stripped your surf jetpack", Name) return PLUGIN_HANDLED }
public _give_Jetpack(id) { g_HasJetpack[id] = 1 client_cmd(id, "spk %s", JETPACK_GOTSOUND) client_print(id, print_chat, "You've got a surf jetpack! :: HOW TO USE :: ~ Just Surf ~ ") 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], 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(cvar_min_speed)) return PLUGIN_CONTINUE new Button = get_user_button(id) if(Button & IN_MOVELEFT || Button & IN_MOVERIGHT) { _jetEffect(id) _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(cvar_thrust) fVelocity[1] += fForward[1] * get_pcvar_num(cvar_thrust) if(get_user_speed(id) < get_pcvar_num(cvar_max_speed)) entity_set_vector(id, EV_VEC_velocity, fVelocity) return PLUGIN_CONTINUE }
public _jetEffect(id) { new iOrigin[3] get_user_origin(id, iOrigin, 0) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(17) write_coord(iOrigin[0]) write_coord(iOrigin[1]) write_coord(iOrigin[2]) write_short(sprite_fire) write_byte(10) write_byte(115) message_end() entity_set_int(id , EV_INT_gaitsequence , 8) }
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) } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
Problem is that i dont know how to add jetpack in option 2 (jet pack must be removed, when player die, and when he respawn, he get menu again.)
|