Knife_mod z kosami dla vip
RiderS
23.02.2017
Cześć.
Mam problem.
Próbuje przerobić plugin KNIFE MOD, tak aby np. kosa z gravitka i regeneracją HP, były na flage ADMIN_LEVEL_H "t".
Mógłby ktoś napisać jaki warunek mam dać i gdzie go dać.
Warunek jaki ja dodaje :
if(!is_user_connected(id) || !(get_user_flags(id) & read_flags("t"))) return PLUGIN_HANDLED;
Nie wiem czy dobry
Gdy daje ten warunek tutaj :
public display_knife(id) { if(!is_user_connected(id) || !(get_user_flags(id) & read_flags("b"))) return PLUGIN_HANDLED; new menuBody[512] add(menuBody, 511, "\rKnife Mod\w^n^n") add(menuBody, 511, "1. Machete \y(More Damage/Low Speed)\w^n") add(menuBody, 511, "2. Bak Knife \y(No Footsteps)\w^n") add(menuBody, 511, "3. Pocket Knife \y(High Speed)\w^n") add(menuBody, 511, "4. Butcher Knife \y(Low Gravity)\w^n") add(menuBody, 511, "5. Default Knife \y(Health Regeneration)\w^n^n") add(menuBody, 511, "0. Exit^n") new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 ) show_menu(id, keys, menuBody, -1, "Knife Mod") return PLUGIN_CONTINUE; }
To plugin mi działa
Użytkownik RiderS edytował ten post 23.02.2017 15:25
_McHappy
05.03.2017
Rozpiska flag i ich powiązane makra dostępna m.in. w pliku configs/users.ini
Użytkownik _McHappy edytował ten post 05.03.2017 21:28
RiderS
05.03.2017
get_user_flags(id) & ADMIN_LEVEL_H
Rozpiska flag i ich powiązane makra dostępna m.in. w pliku configs/users.ini
Tak, tylko moje pytanie gdzie to dać?
Dać to tak, aby np. kosa z gravitka i regeneracją HP były dla VIP/flage
_McHappy
05.03.2017
Podaj treść funkcji uchwytu menu.
Użytkownik _McHappy edytował ten post 05.03.2017 21:42
RiderS
05.03.2017
Warunek dodaje w miejscach
public display_knife(id) { new menuBody[512] add(menuBody, 511, "\rKnife Mod\w^n^n") add(menuBody, 511, "1. Machete \y(More Damage/Low Speed)\w^n") add(menuBody, 511, "2. Bak Knife \y(No Footsteps)\w^n") add(menuBody, 511, "3. Pocket Knife \y(High Speed)\w^n") add(menuBody, 511, "4. Butcher Knife \y(Low Gravity)\w^n") if(!is_user_connected(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) return PLUGIN_HANDLED; add(menuBody, 511, "5. Default Knife \y(Health Regeneration)\w^n^n") add(menuBody, 511, "0. Exit^n") new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 ) show_menu(id, keys, menuBody, -1, "Knife Mod") }
Wtedy po wpisaniu komendy /knife menu wyświetli się, jeśli gracz ma flagę
public knifemenu(id, key) { switch(key) { case 0: SetKnife(id , 4) if(!is_user_connected(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) return PLUGIN_HANDLED; 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 }
Mam błędy podczas kompilacji, tutaj podaje błędy
//// knife_mod.sma // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(79) : error 002: only a single statement (or expression) can follow each "case" // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(81) : warning 225: unreachable code // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(81) : error 014: invalid statement; not in switch // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(81) : warning 215: expression has no effect // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(81) : error 001: expected token: ";", but found ":" // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(81) : error 029: invalid expression, assumed zero // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(81) : fatal error 107: too many error messages on one line //
Gdy dam tu
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/v_knife.mdl") format(pModel,55,"models/p_knife.mdl") } case 1: { format(vModel,55,"models/knife-mod/v_butcher.mdl") format(pModel,55,"models/knife-mod/p_butcher.mdl") if(!is_user_connected(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) return PLUGIN_HANDLED; } case 2: { format(vModel,55,"models/knife-mod/v_bak.mdl") format(pModel,55,"models/knife-mod/p_bak.mdl") } case 3: { format(vModel,55,"models/knife-mod/v_pocket.mdl") format(pModel,55,"models/knife-mod/p_pocket.mdl") } case 4: { format(vModel,55,"models/knife-mod/v_machete.mdl") format(pModel,55,"models/knife-mod/p_machete.mdl") } } entity_set_string(id, EV_SZ_viewmodel, vModel) entity_set_string(id, EV_SZ_weaponmodel, pModel) return PLUGIN_HANDLED; }
Gracz dostanie moc, a modelu nie
Nwm może dasz radę to jakoś ogarnąć (bo mnie to przerasta ) i podesłać *sma, ewentualnie wycinek kodu w którym dasz warunek
_McHappy
05.03.2017
Treść case'a zawierająca kilka linijek musi zostać objęta klamrami.
Wystarczy zawarcie warunku w 2. wrzuconym kodzie.
Użytkownik _McHappy edytował ten post 05.03.2017 22:25
RiderS
06.03.2017
Że tak? Bo ja już głupieje
public knifemenu(id, key) { switch(key) { { case 0: SetKnife(id , 4) if(!is_user_connected(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) return PLUGIN_HANDLED; } 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 }
Może(pewno tak) w złym miejscu to daję
_McHappy
06.03.2017
Case x:
{
}
Użytkownik _McHappy edytował ten post 06.03.2017 14:08
RiderS
06.03.2017
Treść case'a, nie sam case.
Case x:
{
}
public knifemenu(id, key) { switch(key) { case 0: SetKnife(id , 4) { if(!is_user_connected(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) return PLUGIN_HANDLED; } 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 }
Mam wysyp errorów
//// knife_mod.sma // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(80) : error 002: only a single statement (or expression) can follow each "case" // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(83) : warning 209: function "knifemenu" should return a value // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(84) : error 010: invalid function or declaration // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(85) : error 010: invalid function or declaration // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(86) : error 010: invalid function or declaration // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(87) : error 010: invalid function or declaration // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(88) : error 010: invalid function or declaration // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(92) : error 054: unmatched closing brace // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(272) : error 021: symbol already defined: "SaveData" // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(300) : warning 203: symbol is never used: "SaveData"
a gdy tak dam
public knifemenu(id, key) { switch(key) { case 0:{ SetKnife(id , 4) if(!is_user_connected(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) return PLUGIN_HANDLED; } 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 }
kompiluje się (tam wyskakuje warrning o tabulacji (chyba )), ale nie działa po mojej myśli
retsam.
06.03.2017
case 0: {if(is_user_connected(id) && (get_user_flags(id) & ADMIN_LEVEL_H)){SetKnife(id, 4)}}Proszę
Użytkownik retsam. edytował ten post 06.03.2017 15:24
RiderS
06.03.2017
case 0: {if(is_user_connected(id) && (get_user_flags(id) & ADMIN_LEVEL_H)){SetKnife(id, 4)}}Proszę
//// knife_mod.sma // C:\Documents and Settings\Witek\Pulpit\scripting WINDOWS\knife_mod.sma(79) : error 001: expected token: ";", but found "}" //
public knifemenu(id, key) { switch(key) { case 0: {if(is_user_connected(id) && (get_user_flags(id) & ADMIN_LEVEL_H)){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 }
_McHappy
06.03.2017
Oczywiście upewniając się, że zmieniłeś odpowiedni case (jest kilka, każdy odnosi się do innego typu noża)
Oraz funkcję SetKnife() należy umieścić po tym warunku, lecz nie w nim (uwzględnieniając te 2 negacje w if'ie)
Użytkownik _McHappy edytował ten post 06.03.2017 16:56
retsam.
06.03.2017
case 0: { if(is_user_connected(id) && (get_user_flags(id) & ADMIN_LEVEL_H)){ SetKnife(id, 4) } }
RiderS
06.03.2017
case 0: { if(is_user_connected(id) && (get_user_flags(id) & ADMIN_LEVEL_H)){ SetKnife(id, 4) } }
dzięki
Happy wiem, że ciężko mi coś wytłumaczyć i dzięki że próbowałeś
Można zrobić close