prosiłbym o przerobienie klasy tak, by po przeładowaniu miała 60 naboi. Dodatkowo o naprawę drugiej rzeczy. Wszystkie "bonusy" nie działają w 1 rundzie.
#include <amxmodx> #include <amxmisc> #include <codmod> #include <engine> #include <hamsandwich> #include <cstrike> #include <fun> #include <fakemeta> #include <fakemeta_util> new const nazwa[] = "Elitarny zolnierz"; new const opis[] = "Ma dwie MP5 i Elite oraz zmniejszoną grawitację."; new const bronie = (1<<CSW_MP5NAVY | 1<<CSW_ELITE); new const zdrowie = 30; new const kondycja = 30; new const inteligencja = 0; new const wytrzymalosc = 0; new bool: ma_klase[33]; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_Spawn, "player", "Spawn", 1); register_event("CurWeapon", "CurWeapon", "be", "1=1") } public cod_class_enabled(id) { ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; } public Spawn(id) { if(ma_klase[id] && is_user_alive(id)) { new weapon_id = find_ent_by_owner(-1, "weapon_mp5navy", id); //szuka id bytu broni ak47 u gracza o id == id if(weapon_id) //jeżeli znaleziono broń - byt ma inną wartość niż 0 { cs_set_weapon_ammo(weapon_id, 60); //ustaw broni 50 ammo cs_set_user_bpammo(id, CSW_MP5NAVY, 200) } set_user_gravity(id, 0.75) } } public plugin_precache() { precache_model("models/v_mp5dual.mdl"); //powyżej zmieniasz ścieżki do nowych modeli } public CurWeapon(id) { new weapon = read_data(2); if(ma_klase[id]) //tutaj wstawiamy ma_klase lub ma_perk { if(weapon == CSW_MP5NAVY) //tutaj ustawiamy broń, jakiej model będziemy zmieniać { set_pev(id, pev_viewmodel2, "models/v_mp5dual.mdl") //tu dajemy ścieżkę do nowego modeli v_ } } new iWeapon = read_data(2); new iEnt; static Float:fSpeedMultiplier = 0.7; if(iWeapon == CSW_MP5NAVY) { iEnt = fm_find_ent_by_owner(-1, "weapon_mp5navy", id) set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 ); set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 ); } }
wpadłem na pomysł, by wykorzystać perk "Zwinne Palce"
działa prawie dobrze:
jak wystrzelamy cały magazynek ładnie dodaje 60 do magazynka i odejmuje 60 z plecaka (tyle, że od razu, jak w perku i to nie wiem na razie jak poprawić)
a jak przeładujemy sami znów dodaje 60 i odejmuje 60 z plecaka ale po chwili ustawia 30 i dodaje 30 z powrotem do plecaka. jakieś pomysły?
#include <amxmodx> #include <amxmisc> #include <codmod> #include <engine> #include <hamsandwich> #include <cstrike> #include <fun> #include <fakemeta> #include <fakemeta_util> new const nazwa[] = "Elitarny zolnierz"; new const opis[] = "Ma 2 UZI i Elite oraz zmniejszoną grawitację."; new const bronie = (1<<CSW_MP5NAVY | 1<<CSW_ELITE); new const zdrowie = 30; new const kondycja = 30; new const inteligencja = 0; new const wytrzymalosc = 0; new bool: ma_klase[33]; new const max_clip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_Spawn, "player", "Spawn", 1); register_event("CurWeapon", "CurWeapon", "be", "1=1") register_event("Spawn", "Spawn", "be", "1=1") register_forward(FM_CmdStart, "CmdStart"); } public cod_class_enabled(id) { Spawn(id); ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; } public Spawn(id) { if(ma_klase[id] && is_user_alive(id)) { new weapon_id = find_ent_by_owner(-1, "weapon_mp5navy", id); //szuka id bytu broni ak47 u gracza o id == id if(weapon_id) //jeżeli znaleziono broń - byt ma inną wartość niż 0 { cs_set_weapon_ammo(weapon_id, 60); //ustaw broni 50 ammo cs_set_user_bpammo(id, CSW_MP5NAVY, 200) } set_user_gravity(id, 0.75) } } public plugin_precache() { precache_model("models/v_mp5dual.mdl"); //powyżej zmieniasz ścieżki do nowych modeli } public CurWeapon(id) { new weapon = read_data(2); if(ma_klase[id]) //tutaj wstawiamy ma_klase lub ma_perk { if(weapon == CSW_MP5NAVY) //tutaj ustawiamy broń, jakiej model będziemy zmieniać { set_pev(id, pev_viewmodel2, "models/v_mp5dual.mdl") //tu dajemy ścieżkę do nowego modeli v_ } } new iWeapon = read_data(2); new iEnt; static Float:fSpeedMultiplier = 0.7; if(iWeapon == CSW_MP5NAVY) { iEnt = fm_find_ent_by_owner(-1, "weapon_mp5navy", id) set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 ); set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 ); } } public CmdStart(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) return FMRES_IGNORED; new buttons = get_uc(uc_handle, UC_Buttons); new oldbuttons = pev(id, pev_oldbuttons); new clip, ammo, weapon = get_user_weapon(id, clip, ammo); if((max_clip[weapon]+30) == -1 || !ammo) return FMRES_IGNORED; if((buttons & IN_RELOAD && !(oldbuttons & IN_RELOAD) && !(buttons & IN_ATTACK)) || !clip) { cs_set_user_bpammo(id, weapon, ammo-((max_clip[weapon]+30)-clip)); new new_ammo = ((max_clip[weapon]+30) > ammo)? clip+ammo: (max_clip[weapon]+30); set_user_clip(id, new_ammo); } return FMRES_IGNORED; } stock set_user_clip(id, ammo) { new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _); get_weaponname(weapon, weaponname, 31); while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0) if (pev(weaponid, pev_owner) == id) { set_pdata_int(weaponid, 51, ammo, 4); return weaponid; } return 0; }
Użytkownik Eustachy8 edytował ten post 28.12.2011 18:47