[ROZWIĄZANE] Jak zrobić Callbacka do knife...
Najlepsza odpowiedź
Droso
29.12.2013 11:25
ChicuuPlayGames
24.12.2013
Siema, przerobiłem knife-moda pod moje upodobania, chciałbym aby nóż 2,3,4 był zablokowany jeśli gracz nie posiada odpowiedniej do niego flagi. 2,3 to noże dla vipa, 4 jest dla admina. Od kumpla dostałem odpowiedz "Zrób Callback", niestety nie wiem na czym on polega.
edit: Nie chodzi tu żeby on był zablokowany tak jak teraz = Klikniesz i napisze ci na chat ze jest dla vipa, chodzi o to żeby ta opcja noża 2,3,4 była na szaro w menu.
SMA:
Użytkownik ChicuuPlayGames edytował ten post 24.12.2013 10:22
ChicuuPlayGames
24.12.2013
Czarowałem i to tyle z tego co zrozumiałem ;x
public display_knife(id) { new MyMenuFun=menu_makecallback("mcbMyMenu"); new menuBody[512] add(menuBody, 511, "\r *** Wybierz Noz *** - BETA TESTY\w^n^n") add(menuBody, 511, "1. Kastet \y(Gracz)\w^n,0,MyMenuFun") add(menuBody, 511, "2. Lom \y(VIP)\w^n",0,MyMenuFun) add(menuBody, 511, "3. Przepychacz \y(VIP)\w^n") add(menuBody, 511, "4. Baseball \y(Admin)\w^n^n^n") add(menuBody, 511, "0. Wyjscie^n") new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 ) show_menu(id, keys, menuBody, -1, "Knife Mod") } public mcbMyMenu(id, menu, item){ if(item==1) return ITEM_DISABLED; return ITEM_ENABLED; }
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team noz.sma(62) : error 088: number of arguments does not match definition noz.sma(69) : warning 204: symbol is assigned a value that is never used: "MyMenuFun" noz.sma(106) : warning 225: unreachable code noz.sma(113) : warning 225: unreachable code noz.sma(120) : warning 225: unreachable code 1 Error. Could not locate output file noz.amxx (compile failed).
Użytkownik ChicuuPlayGames edytował ten post 24.12.2013 10:44
Dragon1020
26.12.2013

Chciałem pomóc, pokombinowałem aż przekombinowałem

Tyle z tego wyszło nwm co źle wiem że z argumentami przy wyborze noży jest cuś nie tak
#include <amxmodx> #include <amxmisc> #include <engine> #include <vault> #include <fun> #pragma tabsize 0 #define PLUGIN "Knife Mod" #define VERSION "1.0" #define AUTHOR "spunko" #define TASK_INTERVAL 4.0 #define MAX_HEALTH 255 new knife_model[33] new g_Menu new CVAR_LOWGRAV new CVAR_NORMGRAV new CVAR_HEALTH_ADD new CVAR_HEALTH_MAX new CVAR_DAMAGE 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 /noz", "display_knife") register_clcmd("say /noze", "display_knife") register_clcmd("say /bron", "display_knife") register_clcmd("mymenu","display_knife"); CVAR_HEALTH_ADD = register_cvar("km_addhealth", "0") CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "0") CVAR_DAMAGE = register_cvar("km_damage", "0") CVAR_LOWGRAV = register_cvar("km_lowgravity" , "800") CVAR_NORMGRAV = get_cvar_pointer("sv_gravity") set_task(480.0, "kmodmsg", 0, _, _, "b") } public plugin_precache() { precache_model("models/knife-mod/v_baseball.mdl") precache_model("models/knife-mod/p_baseball.mdl") precache_model("models/knife-mod/v_lomek.mdl") precache_model("models/knife-mod/p_lomek.mdl") precache_model("models/knife-mod/v_kastet.mdl") precache_model("models/knife-mod/v_przepychacz.mdl") precache_model("models/knife-mod/p_przepychacz.mdl") } public display_knife(id) { new menuBody[512] new MyMenuFun=menu_makecallback("mcbMyMenu"); add(menuBody, 511, "\r *** Wybierz Noz *** - BETA TESTY\w^n^n") add(menuBody, 511, "1. Kastet \y(Gracz)\w^n","",0,MyMenuFun) add(menuBody, 511, "2. Lom \y(VIP)\w^n","",ADMIN_LEVEL_H,MyMenuFun) add(menuBody, 511, "3. Przepychacz \y(VIP)\w^n","",ADMIN_LEVEL_H,MyMenuFun) add(menuBody, 511, "4. Baseball \y(Admin)\w^n^n^n","",ADMIN_KICK,MyMenuFun) add(menuBody, 511, "0. Wyjscie^n") menu_display(id, display_knife,0); new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 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) 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 1: { if(!(get_user_flags(id) & ADMIN_KICK)) client_print(id, print_chat, "Bron dla Admina - Nie mozesz jej uzywac") return PLUGIN_HANDLED; format(vModel,55,"models/knife-mod/v_baseball.mdl") format(pModel,55,"models/knife-mod/p_baseball.mdl") } case 2: { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) client_print(id, print_chat, "Bron dla VIPa - Nie mozesz jej uzywac") return PLUGIN_HANDLED; format(vModel,55,"models/knife-mod/v_lomek.mdl") format(pModel,55,"models/knife-mod/p_lomek.mdl") } case 3: { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) client_print(id, print_chat, "Bron dla VIPa - Nie mozesz jej uzywac") return PLUGIN_HANDLED; format(vModel,55,"models/knife-mod/v_przepychacz.mdl") format(pModel,55,"models/knife-mod/p_przepychacz.mdl") } case 4: { format(vModel,55,"models/knife-mod/v_kastet.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 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 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,"[Noze] Aby zmienic wyglad swojego noza napisz: /noz") } 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) } public mcbMyMenu(id, menu, item){ if(!(get_user_flags(id) & ADMIN_LEVEL_H) & item==1 & item=2) if(!(get_user_flags(id) & ADMIN_KICK) & item==3) return ITEM_DISABLED; return ITEM_ENABLED; }Errory:
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team abc.sma(63) : error 035: argument type mismatch (argument 4) abc.sma(64) : error 035: argument type mismatch (argument 4) abc.sma(65) : error 035: argument type mismatch (argument 4) abc.sma(66) : error 035: argument type mismatch (argument 4) abc.sma(69) : error 029: invalid expression, assumed zero abc.sma(69) : warning 215: expression has no effect abc.sma(69) : error 001: expected token: ";", but found ")" abc.sma(69) : error 029: invalid expression, assumed zero abc.sma(69) : fatal error 107: too many error messages on one line Compilation aborted. 8 Errors.W efekcie próbowałem zablokować opcję(item) 1 i 2 dla osób które nie posiadają flagi t a item 3 dla osób które nie posiadają flagi c
callback wrzuciłem w public i nałożyłem na każdy z noży, ustawiłem że kastet ma czytać jako 0 czyli dla każdego a poniższe na daną flagę, errory są niestety nie potrafię poradzić sobie z nimi

Tam gdzie są błędy z argumentami gdy usuwam "" np. add(menuBody, 511, "1. Kastet \y(Gracz)\w^n","",0,MyMenuFun)
i tak w kolejnych to wyskakuje zamiast errory z argumentami taki oto:
abc.sma(63) : error 088: number of arguments does not match definition abc.sma(64) : error 088: number of arguments does not match definition abc.sma(65) : error 088: number of arguments does not match definition abc.sma(66) : error 088: number of arguments does not match definitionProszę o pomoc w imieniu Chicuu, ponieważ iż wspólnie "męczymy" się z takowym pluginem w tym samym celu
Dragon1020
26.12.2013
A potrafiłbyś takie coś zrobić ? żeby działało jak powinno
W sensie normalnie po wpisaniu /noz masz te menu z nożami ale żeby na przyciemniony kolor (nieaktywne) były te z flagami dla osób które takowej flagi nie posiadają
GwynBleidD
26.12.2013
public display_knife(id) { new menu = menu_create(" *** Wybierz Noz *** - BETA TESTY", "knifemenu") new CheckVip=menu_makecallback("mcbMyMenu") menu_additem(menu, "Kastet \y(Gracz)", "", 0) menu_additem(menu, "Lom \y(VIP)", "", ADMIN_LEVEL_H) menu_additem(menu, "Przepychacz \y(VIP)", "", ADMIN_LEVEL_H) menu_additem(menu, "Baseball \y(Admin)", "", ADMIN_KICK) menu_display(id, menu); }Do tego wywalasz linię 32 z plugin_init i tego callbacka, co na końcu go utworzyłeś (288-293).
ChicuuPlayGames
26.12.2013
#include <amxmodx> #include <amxmisc> #include <engine> #include <vault> #include <fun> #pragma tabsize 0 #define PLUGIN "Knife Mod" #define VERSION "1.0" #define AUTHOR "spunko" #define TASK_INTERVAL 4.0 #define MAX_HEALTH 255 new knife_model[33] new g_Menu new CVAR_LOWGRAV new CVAR_NORMGRAV new CVAR_HEALTH_ADD new CVAR_HEALTH_MAX new CVAR_DAMAGE public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event( "Damage", "event_damage", "be" ) register_event("CurWeapon","CurWeapon","be","1=1") register_menucmd(g_Menu, 1023, "knifemenu") register_clcmd("say /knife", "display_knife") register_clcmd("say /noz", "display_knife") register_clcmd("say /noze", "display_knife") register_clcmd("say /bron", "display_knife") register_clcmd("mymenu","display_knife"); CVAR_HEALTH_ADD = register_cvar("km_addhealth", "0") CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "0") CVAR_DAMAGE = register_cvar("km_damage", "0") CVAR_LOWGRAV = register_cvar("km_lowgravity" , "800") CVAR_NORMGRAV = get_cvar_pointer("sv_gravity") set_task(480.0, "kmodmsg", 0, _, _, "b") } public plugin_precache() { precache_model("models/knife-mod/v_baseball.mdl") precache_model("models/knife-mod/p_baseball.mdl") precache_model("models/knife-mod/v_lomek.mdl") precache_model("models/knife-mod/p_lomek.mdl") precache_model("models/knife-mod/v_kastet.mdl") precache_model("models/knife-mod/v_przepychacz.mdl") precache_model("models/knife-mod/p_przepychacz.mdl") } public display_knife(id) { new menu = menu_create(" *** Wybierz Noz *** - BETA TESTY", "knifemenu") new CheckVip=menu_makecallback("mcbMyMenu") menu_additem(menu, "Kastet \y(Gracz)", "", 0) menu_additem(menu, "Lom \y(VIP)", "", ADMIN_LEVEL_H) menu_additem(menu, "Przepychacz \y(VIP)", "", ADMIN_LEVEL_H) menu_additem(menu, "Baseball \y(Admin)", "", ADMIN_KICK) menu_display(id, menu); } 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) 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 1: { if(!(get_user_flags(id) & ADMIN_KICK)) client_print(id, print_chat, "Bron dla Admina - Nie mozesz jej uzywac") return PLUGIN_HANDLED; format(vModel,55,"models/knife-mod/v_baseball.mdl") format(pModel,55,"models/knife-mod/p_baseball.mdl") } case 2: { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) client_print(id, print_chat, "Bron dla VIPa - Nie mozesz jej uzywac") return PLUGIN_HANDLED; format(vModel,55,"models/knife-mod/v_lomek.mdl") format(pModel,55,"models/knife-mod/p_lomek.mdl") } case 3: { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) client_print(id, print_chat, "Bron dla VIPa - Nie mozesz jej uzywac") return PLUGIN_HANDLED; format(vModel,55,"models/knife-mod/v_przepychacz.mdl") format(pModel,55,"models/knife-mod/p_przepychacz.mdl") } case 4: { format(vModel,55,"models/knife-mod/v_kastet.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 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 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,"[Noze] Aby zmienic wyglad swojego noza napisz: /noz") } 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) }
Użytkownik GwynBleidD edytował ten post 28.12.2013 11:27
ChicuuPlayGames
27.12.2013
L 12/27/2013 - 22:13:24: [AMXX] Displaying debug trace (plugin "noz.amxx") L 12/27/2013 - 22:13:24: [AMXX] Run time error 19: function not found L 12/27/2013 - 22:13:24: [AMXX] [0] noz_1951622.sma::display_knife (line 61) L 12/27/2013 - 22:13:25: Invalid function mcbMyMenu L 12/27/2013 - 22:13:25: [AMXX] Displaying debug trace (plugin "noz.amxx") L 12/27/2013 - 22:13:25: [AMXX] Run time error 19: function not found L 12/27/2013 - 22:13:25: [AMXX] [0] noz_1951622.sma::display_knife (line 61) L 12/27/2013 - 22:13:26: Invalid function mcbMyMenu L 12/27/2013 - 22:13:26: [AMXX] Displaying debug trace (plugin "noz.amxx") L 12/27/2013 - 22:13:26: [AMXX] Run time error 19: function not found L 12/27/2013 - 22:13:26: [AMXX] [0] noz_1951622.sma::display_knife (line 61) L 12/27/2013 - 22:13:33: Invalid function mcbMyMenu L 12/27/2013 - 22:13:33: [AMXX] Displaying debug trace (plugin "noz.amxx") L 12/27/2013 - 22:13:33: [AMXX] Run time error 19: function not found L 12/27/2013 - 22:13:33: [AMXX] [0] noz_1951622.sma::display_knife (line 61)
GwynBleidD
28.12.2013
new CheckVip=menu_makecallback("mcbMyMenu")i powinno śmigać.
ChicuuPlayGames
28.12.2013
Niby działa, ale jak wybieram nóż to nie widzę go, brak rąk ani niczego. Możliwe że to nie będzie działać na jailbreaku - trudno. Lecą plusiki za chęci