Senior Member
Join Date: Jul 2017
Location: Hell
|
09-20-2017
, 10:02
Re: how to set keys of show_menu function
|
#3
|
Quote:
Originally Posted by Napoleon_be
Why do you need the old one? What do you wanna do? Basicly anything can be done with the new one as could be done with the old one.
|
See this is the code :-
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>
#define PLUGIN "Knife Mod"
#define VERSION "2.1"
#define AUTHOR "spunko, TheSpaniard"
#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255
new knife_model[33]
new g_Menu
new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE
new CVAR_INVISIBLITY
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "Damage", "event_damage", "be" )
register_event("CurWeapon","CurWeapon","be","1=1")
g_Menu = register_menuid("Knife Mod")
register_menucmd(g_Menu, 1023, "knifemenu")
register_clcmd("say /knife", "display_knife")
CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
CVAR_DAMAGE = register_cvar("km_damage", "2")
CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
CVAR_INVISIBLITY = register_cvar("km_invis", "100")
set_task(480.0, "kmodmsg", 0, _, _, "b")
}
public plugin_precache() {
precache_model("models/knife-modv2/v_butterfly.mdl")
precache_model("models/knife-modv2/p_butterfly.mdl")
precache_model("models/knife-modv2/v_huntsman.mdl")
precache_model("models/knife-modv2/p_huntsman.mdl")
precache_model("models/knife-modv2/v_flip.mdl")
precache_model("models/knife-modv2/p_flip.mdl")
precache_model("models/knife-modv2/v_karambit.mdl")
precache_model("models/knife-modv2/p_karambit.mdl")
precache_model("models/knife-modv2/v_gut.mdl")
precache_model("models/knife-modv2/p_gut.mdl")
precache_model("models/knife-modv2/v_bayonet.mdl")
precache_model("models/knife-modv2/p_bayonet.mdl")
}
public display_knife(id) {
new menuBody[512]
add(menuBody, 511, "\rKnife Mod\w^n^n")
add(menuBody, 511, "1. Huntsman \y(More Damage/Low Speed)\w^n")
add(menuBody, 511, "2. Flip Knife \y(No Footsteps)\w^n")
add(menuBody, 511, "3. Karambit \y(High Speed)\w^n")
add(menuBody, 511, "4. Butterfly Knife \y(Low Gravity)\w^n")
add(menuBody, 511, "5. Gut Knife \y(Health Regeneration)\w^n^n")
add(menuBody, 511, "6. Bayonet \y(Invisbility)\w^n", ADMIN_LEVEL_H)
add(menuBody, 511, "0. Exit^n")
new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<9 )
show_menu(id, keys, menuBody, -1, "Knife Mod")
}
public knifemenu(id, key) {
switch(key)
{
case 0: SetKnife(id , 4)
case 1: SetKnife(id , 2)
case 2: SetKnife(id , 3)
case 3: SetKnife(id , 1)
case 4: SetKnife(id , 0)
case 5: SetKnife(id , 5)
default: return PLUGIN_HANDLED
}
SaveData(id)
return PLUGIN_HANDLED
}
public SetKnife(id , Knife) {
knife_model[id] = Knife
new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
if ( Weapon != CSW_KNIFE )
return PLUGIN_HANDLED
new vModel[56],pModel[56]
switch(Knife)
{
case 0: {
format(vModel,55,"models/knife-modv2/v_gut.mdl")
format(pModel,55,"models/knife-modv2/p_gut.mdl")
}
case 1: {
format(vModel,55,"models/knife-modv2/v_butterfly.mdl")
format(pModel,55,"models/knife-modv2/p_butterfly.mdl")
}
case 2: {
format(vModel,55,"models/knife-modv2/v_flip.mdl")
format(pModel,55,"models/knife-modv2/p_flip.mdl")
}
case 3: {
format(vModel,55,"models/knife-modv2/v_karambit.mdl")
format(pModel,55,"models/knife-modv2/p_karambit.mdl")
}
case 4: {
format(vModel,55,"models/knife-modv2/v_huntsman.mdl")
format(pModel,55,"models/knife-modv2/p_huntsman.mdl")
}
case 5:
{
format(vModel, 63, "models/knife-modv2/v_bayonet.mdl")
format(vModel, 63, "models/knife-modv2/p_bayonet.mdl")
}
}
entity_set_string(id, EV_SZ_viewmodel, vModel)
entity_set_string(id, EV_SZ_weaponmodel, pModel)
return PLUGIN_HANDLED;
}
public event_damage( id ) {
new victim_id = id;
if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
new dmg_take = read_data( 2 );
new dmgtype = read_data( 3 );
new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
new Float:damage = dmg_take * multiplier;
new health = get_user_health( victim_id );
new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
return PLUGIN_HANDLED
}
if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) {
if( floatround(damage) >= health ) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE
}else{
log_kill( attacker_id, victim_id, "knife", 0 );
}
return PLUGIN_CONTINUE
}else {
if( victim_id == attacker_id ) return PLUGIN_CONTINUE
fakedamage( victim_id, "weapon_knife", damage, dmgtype );
}
}
return PLUGIN_CONTINUE
}
public CurWeapon(id)
{
new Weapon = read_data(2)
// Set Knife Model
SetKnife(id, knife_model[id])
// Task Options
if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
else if(task_exists(id))
remove_task(id)
// Abilities
set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
set_user_gravity(id , Gravity)
// Speed
new Float:Speed
if(Weapon != CSW_KNIFE || knife_model[id] < 3)
return PLUGIN_CONTINUE
else if(knife_model[id] == 3)
Speed = get_pcvar_float(CVAR_HIGHSPEED)
else if(knife_model[id] == 4)
Speed = get_pcvar_float(CVAR_LOWSPEED)
set_user_maxspeed(id, Speed)
if (Weapon == CSW_KNIFE && knife_model[id] == 5)
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,(255/100*get_pcvar_num(CVAR_INVISIBLITY)))
return PLUGIN_HANDLED
}
stock log_kill(killer, victim, weapon[],headshot) {
user_silentkill( victim );
message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
write_byte( killer );
write_byte( victim );
write_byte( headshot );
write_string( weapon );
message_end();
new kfrags = get_user_frags( killer );
set_user_frags( killer, kfrags++ );
new vfrags = get_user_frags( victim );
set_user_frags( victim, vfrags++ );
return PLUGIN_CONTINUE
}
public task_healing(id) {
new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)
if (!addhealth)
return
new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)
if (maxhealth > MAX_HEALTH) {
set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)
maxhealth = MAX_HEALTH
}
new health = get_user_health(id)
if (is_user_alive(id) && (health < maxhealth)) {
set_user_health(id, health + addhealth)
set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
show_hudmessage(id,"<< !!HEAL IN PROGRESS!! >>")
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(0)
write_byte(75)
message_end()
}
else {
if (is_user_alive(id) && (health > maxhealth))
remove_task(id)
}
}
public client_disconnect(id) {
if(task_exists(id)) remove_task(id)
}
public kmodmsg() {
client_print(0,print_chat,"[AMXX] Type /knife to change your knife skins")
}
public client_authorized(id)
{
LoadData(id)
}
SaveData(id)
{
new authid[32]
get_user_authid(id, authid, 31)
new vaultkey[64]
new vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
format(vaultdata, 63, "%d", knife_model[id])
set_vaultdata(vaultkey, vaultdata)
}
LoadData(id)
{
new authid[32]
get_user_authid(id,authid,31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
get_vaultdata(vaultkey, vaultdata, 63)
knife_model[id] = str_to_num(vaultdata)
}
I added one more knife model and one more ability but its not working properly.
the code with added knife model and ability:-
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>
#define PLUGIN "Knife Mod"
#define VERSION "2.1"
#define AUTHOR "spunko, TheSpaniard"
#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255
new knife_model[33]
new g_Menu
new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE
new CVAR_INVISIBLITY
new CVAR_TELEPORT
new CheckOrigin[33][3]
new bool:checked[33]
new OldOrigin[33][3]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "Damage", "event_damage", "be" )
register_event("CurWeapon","CurWeapon","be","1=1")
g_Menu = register_menuid("Knife Mod")
register_menucmd(g_Menu, 1023, "knifemenu")
register_clcmd("say /knife", "display_knife")
register_clcmd("say /save", "check")
register_clcmd("say /teleport", "teleport")
register_clcmd("say /stuck", "stuck")
CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
CVAR_DAMAGE = register_cvar("km_damage", "2")
CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
CVAR_INVISIBLITY = register_cvar("km_invis", "100")
CVAR_TELEPORT = register_cvar("km_teleport", "1")
set_task(480.0, "kmodmsg", 0, _, _, "b")
}
public plugin_precache() {
precache_model("models/knife-modv2/v_butterfly.mdl")
precache_model("models/knife-modv2/p_butterfly.mdl")
precache_model("models/knife-modv2/v_huntsman.mdl")
precache_model("models/knife-modv2/p_huntsman.mdl")
precache_model("models/knife-modv2/v_flip.mdl")
precache_model("models/knife-modv2/p_flip.mdl")
precache_model("models/knife-modv2/v_karambit.mdl")
precache_model("models/knife-modv2/p_karambit.mdl")
precache_model("models/knife-modv2/v_gut.mdl")
precache_model("models/knife-modv2/p_gut.mdl")
precache_model("models/knife-modv2/v_bayonet.mdl")
precache_model("models/knife-modv2/p_bayonet.mdl")
precache_model("models/knife-modv2/v_beast.mdl")
precache_model("models/knife-modv2/p_beast.mdl")
}
public display_knife(id) {
new menuBody[512]
add(menuBody, 511, "\rKnife Mod\w^n^n")
add(menuBody, 511, "1. Huntsman \y(More Damage/Low Speed)\w^n")
add(menuBody, 511, "2. Flip Knife \y(No Footsteps)\w^n")
add(menuBody, 511, "3. Karambit \y(High Speed)\w^n")
add(menuBody, 511, "4. Butterfly Knife \y(Low Gravity)\w^n")
add(menuBody, 511, "5. Gut Knife \y(Health Regeneration)\w^n")
if(get_pcvar_num(CVAR_TELEPORT) == 1)
{
add(menuBody, 511, "6. Beast \y(Teleport)\w^n")
}
add(menuBody, 511, "7. Bayonet \y(Invisbility)\w^n", ADMIN_LEVEL_H)
add(menuBody, 511, "0. Exit^n")
new keys = ( 1<<0 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 0<<9 )
show_menu(id, keys, menuBody, -1, "Knife Mod")
}
public knifemenu(id, key) {
switch(key)
{
case 1: SetKnife(id , 1)
case 2: SetKnife(id , 2)
case 3: SetKnife(id , 3)
case 4: SetKnife(id , 4)
case 5: SetKnife(id , 6)
case 6: SetKnife(id , 7)
case 0: return PLUGIN_HANDLED
}
SaveData(id)
return PLUGIN_HANDLED
}
public SetKnife(id , Knife) {
knife_model[id] = Knife
new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
if ( Weapon != CSW_KNIFE )
return PLUGIN_HANDLED
new vModel[56],pModel[56]
switch(Knife)
{
case 1: {
format(vModel,55,"models/knife-modv2/v_huntsman.mdl")
format(pModel,55,"models/knife-modv2/p_huntsman.mdl")
}
case 2: {
format(vModel,55,"models/knife-modv2/v_karambit.mdl")
format(pModel,55,"models/knife-modv2/p_karambit.mdl")
}
case 3: {
format(vModel,55,"models/knife-modv2/v_flip.mdl")
format(pModel,55,"models/knife-modv2/p_flip.mdl")
}
case 4: {
format(vModel,55,"models/knife-modv2/v_butterfly.mdl")
format(pModel,55,"models/knife-modv2/p_butterfly.mdl")
}
case 5: {
format(vModel,55,"models/knife-modv2/v_gut.mdl")
format(pModel,55,"models/knife-modv2/p_gut.mdl")
}
case 6:
{
format(vModel, 63, "models/knife-modv2/v_beast.mdl")
format(vModel, 63, "models/knife-modv2/p_beast.mdl")
}
case 7:
{
format(vModel, 63, "models/knife-modv2/v_bayonet.mdl")
format(vModel, 63, "models/knife-modv2/p_bayonet.mdl")
}
}
entity_set_string(id, EV_SZ_viewmodel, vModel)
entity_set_string(id, EV_SZ_weaponmodel, pModel)
return PLUGIN_HANDLED;
}
public event_damage( id ) {
new victim_id = id;
if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
new dmg_take = read_data( 2 );
new dmgtype = read_data( 3 );
new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
new Float:damage = dmg_take * multiplier;
new health = get_user_health( victim_id );
new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
return PLUGIN_HANDLED
}
if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 1 ) {
if( floatround(damage) >= health ) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE
}else{
log_kill( attacker_id, victim_id, "knife", 0 );
}
return PLUGIN_CONTINUE
}else {
if( victim_id == attacker_id ) return PLUGIN_CONTINUE
fakedamage( victim_id, "weapon_knife", damage, dmgtype );
}
}
return PLUGIN_CONTINUE
}
public CurWeapon(id)
{
new Weapon = read_data(2)
// Set Knife Model
SetKnife(id, knife_model[id])
// Task Options
if(knife_model[id] == 5 && !task_exists(id) && Weapon == CSW_KNIFE)
set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
else if(task_exists(id))
remove_task(id)
// Abilities
set_user_footsteps(id , ( (knife_model[id] == 3 && Weapon == CSW_KNIFE) ? 1 : 0) )
new Float:Gravity = ((knife_model[id] == 4 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
set_user_gravity(id , Gravity)
// Speed
new Float:Speed
if(Weapon != CSW_KNIFE || knife_model[id] < 3)
return PLUGIN_CONTINUE
else if(knife_model[id] == 2)
Speed = get_pcvar_float(CVAR_HIGHSPEED)
else if(knife_model[id] == 1)
Speed = get_pcvar_float(CVAR_LOWSPEED)
set_user_maxspeed(id, Speed)
if (Weapon == CSW_KNIFE && knife_model[id] == 7)
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,(255/100*get_pcvar_num(CVAR_INVISIBLITY)))
return PLUGIN_HANDLED
}
stock log_kill(killer, victim, weapon[],headshot) {
user_silentkill( victim );
message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
write_byte( killer );
write_byte( victim );
write_byte( headshot );
write_string( weapon );
message_end();
new kfrags = get_user_frags( killer );
set_user_frags( killer, kfrags++ );
new vfrags = get_user_frags( victim );
set_user_frags( victim, vfrags++ );
return PLUGIN_CONTINUE
}
public task_healing(id) {
new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)
if (!addhealth)
return
new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)
if (maxhealth > MAX_HEALTH) {
set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)
maxhealth = MAX_HEALTH
}
new health = get_user_health(id)
if (is_user_alive(id) && (health < maxhealth)) {
set_user_health(id, health + addhealth)
set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
show_hudmessage(id,"<< !!HEAL IN PROGRESS!! >>")
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(0)
write_byte(75)
message_end()
}
else {
if (is_user_alive(id) && (health > maxhealth))
remove_task(id)
}
}
public check(id)
{
new Weapon = read_data(2)
if(Weapon == CSW_KNIFE && knife_model[id] == 6 && get_pcvar_num(CVAR_TELEPORT) == 1)
{
if(is_user_alive(id)==1)
if(!checked[id])
checked[id] = true
get_user_origin(id, CheckOrigin[id])
client_print(id,print_chat,"[Knife-Mod] Checkpoint saved!")
}
return PLUGIN_HANDLED
}
public teleport(id)
{
new Weapon = read_data(2)
if(Weapon == CSW_KNIFE && knife_model[id] == 6 && get_pcvar_num(CVAR_TELEPORT) == 1)
{
if(!checked[id])
{
client_print(id,print_chat,"[Knife-Mod] You must set an origin First using say /save")
return PLUGIN_HANDLED
}
new Origin[3];
get_user_origin(id,Origin);
for(new i=0;i<3;i++)
OldOrigin[id][i] = Origin[i]
set_user_origin(id, CheckOrigin[id])
client_print(id,print_chat,"[Knife-Mod] You have been teleported to your checkpoint")
}
return PLUGIN_HANDLED
}
public stuck(id)
{
new Weapon = read_data(2)
if(Weapon == CSW_KNIFE && knife_model[id] == 6 && get_pcvar_num(CVAR_TELEPORT) == 1)
set_user_origin(id, OldOrigin[id])
client_print(id,print_chat,"[Knife-Mod] You have been teleported to your last checkpoint to be unstuck")
return PLUGIN_HANDLED
}
public client_disconnect(id) {
if(task_exists(id)) remove_task(id)
}
public kmodmsg() {
client_print(0,print_chat,"[Knife-Mod] Type /knife to change your knife skins")
}
public client_authorized(id)
{
LoadData(id)
}
SaveData(id)
{
new authid[32]
get_user_authid(id, authid, 31)
new vaultkey[64]
new vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
format(vaultdata, 63, "%d", knife_model[id])
set_vaultdata(vaultkey, vaultdata)
}
LoadData(id)
{
new authid[32]
get_user_authid(id,authid,31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
get_vaultdata(vaultkey, vaultdata, 63)
knife_model[id] = str_to_num(vaultdata)
}
__________________
And I Am Back.
|
|