Spoiler
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #include <hamsandwich> #include <amxmisc> #include <cstrike> #include <fun> #define DMG_BULLET (1<<1) new bool:ma_klase[33]; new klasa_gracza[33]; new const nazwa[] = "Snajper"; new const opis[] = "Zwiekszone obrazenia z karabinow snajperskich"; new const bronie = 1<<CSW_DEAGLE | 1<<CSW_SCOUT; new const zdrowie = 5; new const kondycja = 10; new const inteligencja = 0; new const wytrzymalosc = 0; new bron[33]; new daj[33]; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); RegisterHam(Ham_Spawn, "player", "g_Spawn", 1); } public cod_class_enabled(id) { ma_klase[id] = true; if(klasa_gracza[id]) { bron[id] == 1; } else { menu(id); } } public cod_class_disabled(id) ma_klase[id] = false; public menu(id) { new menu = menu_create("Wybierz swoj karabin snajperski", "g_Choose"); new MyMenuAwp = menu_makecallback("MenuAwp"); new MyMenuKampa = menu_makecallback("MenuKampa"); menu_additem(menu, "SCOUT","",0); menu_additem(menu, "AWP (Od 10 poziomu)","",0, MyMenuAwp); menu_additem(menu, "SG550 (Od 25 poziomu)","",0, MyMenuKampa); menu_additem(menu, "G3SG1 (Od 25 poziomu)","",0, MyMenuKampa); menu_setprop(menu, MPROP_EXITNAME, "Wyjscie"); menu_display(id, menu); } public g_Spawn(id) { if(ma_klase[id] && is_user_alive(id)) { if(bron[id] == 1) { cod_take_weapon(id, CSW_SCOUT) cod_take_weapon(id, CSW_AWP) cod_take_weapon(id, CSW_SG550) cod_take_weapon(id, CSW_G3SG1) cod_take_weapon(id, CSW_USP) menu(id); bron[id] = 0; if(daj[id] == 1) { cod_give_weapon(id, CSW_SCOUT); cs_set_weapon_ammo (id, 30); cs_set_user_bpammo(id, CSW_SCOUT, 90); } else if(daj[id] == 2) { cod_give_weapon(id, CSW_AWP); cs_set_weapon_ammo (id, 10); cs_set_user_bpammo(id, CSW_AWP, 30); } else if(daj[id] == 3) { cod_give_weapon(id, CSW_SG550); cs_set_weapon_ammo (id, 30); cs_set_user_bpammo(id, CSW_SG550, 90); } else if(daj[id] == 4) { cod_give_weapon(id, CSW_G3SG1); cs_set_weapon_ammo (id, 30); cs_set_user_bpammo(id, CSW_G3SG1, 90); } } else { return PLUGIN_CONTINUE } } } public g_Choose(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu) return PLUGIN_HANDLED } switch(item) { case 0:{ daj[id] == 1; cod_give_weapon(id, CSW_SCOUT); cs_set_weapon_ammo (id, 30); cs_set_user_bpammo(id, CSW_SCOUT, 90); bron[id] == 0; } case 1:{ daj[id] == 2; cod_give_weapon(id, CSW_AWP); cs_set_weapon_ammo (id, 10); cs_set_user_bpammo(id, CSW_SCOUT, 30); bron[id] == 0; } case 2:{ daj[id] == 3; cod_give_weapon(id, CSW_SG550); cs_set_weapon_ammo (id, 30); cs_set_user_bpammo(id, CSW_SG550, 90); bron[id] == 0; } case 3:{ daj[id] == 4; cod_give_weapon(id, CSW_G3SG1); cs_set_weapon_ammo (id, 30); cs_set_user_bpammo(id, CSW_G3SG1, 90); bron[id] == 0; } } return PLUGIN_CONTINUE; } public MenuAwp(id, menu, item) { if(cod_get_user_level(id) < 10) { return ITEM_DISABLED; } return ITEM_ENABLED; } public MenuKampa(id, menu, item) { if(cod_get_user_level(id) < 25) { return ITEM_DISABLED; print(id,print_chat, } return ITEM_ENABLED; } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(damagebits & DMG_BULLET) { new weapon = get_user_weapon(idattacker); if(weapon == CSW_AWP || weapon == CSW_SCOUT || weapon == CSW_SG550 || weapon == CSW_G3SG1) { cod_inflict_damage(idattacker, this, 0, 0.5, idinflictor, damagebits); } } return HAM_IGNORED; }
Mógłby ktoś poprawić klasę, chodzi mi o takie poprawki:
-Jeżeli teraz mamy wybraną klasę, to po wybraniu menu z wyborem broni pokazuje się w następnej rundzie.
-Odblokowywanie broni (aktualnie po wbiciu 11 awp nadal jest zablokowane, a od 10 powinno być odblokowane).
-Po wbiciu 10 lub 25 lvla pokazuje się menu z wyborem broni (tylko raz i w następnej rundzie).
-Komenda /bronie - w następnej rundzie wyświetla się menu z broniami.
Plugin ma dużo warningów, sam się zamotałem w kodzie. Jakby ktoś mógł go zoptymalizować, to też proszę.