TheSpaniard |
09-20-2017 10:02 |
Re: how to set keys of show_menu function
Quote:
Originally Posted by Napoleon_be
(Post 2549857)
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)
}
|