[ROZWIĄZANE] jak zwiększyć rozrzut
Eustachy8
04.07.2012
Robię klasy z nowymi modelami broni oraz parametrami tych broni, wiem jak zmienić szybkość strzelania, dmg ale jak zwiekszyć rozrzut? Gdy robie w ten sposób:
if(ma_klase[id] && get_uc(uc_handle, UC_Buttons) & IN_ATTACK) { new Float:punchangle[3] pev(id, pev_punchangle, punchangle) for(new i=0; i<3;i++) punchangle[i]*=1.1; set_pev(id, pev_punchangle, punchangle) }to podczas strzelania serią, kamera robi obroty o 360 stopni. W jaki inny sposób to zmieniać?
ric0
04.07.2012
punchangle[i]*=1.1;
zmieniasz liczbę 1.1 . tylko nie wiem czy im mniejsza liczba tym mniejszy rozrzut . najlepiej zmień liczbę na mnieszją i testuj potem na większą i testuj.
A jeśli się mylę to proszę mnie poprawić.
Eustachy8
04.07.2012
ogieR8
18.12.2014
Przepraszam, że odświeżam.. ale moje pytanie jest prawie identyczne, jak twórcy tematu.. w jaki inny sposób to zmienić ?
Mam teraz taki kod:
public fwd_CmdStart(id, uc_handle, seed) { if(!is_alive[id] || !is_user_alive(id) || !is_user_connected(id)) return FMRES_HANDLED if(ofiara_rozrzutu[id] == 1 && get_uc(uc_handle, UC_Buttons) & IN_ATTACK) { new Float:punchangle[2] pev(id, pev_punchangle, punchangle) for(new i=0; i<2;i++) punchangle[i]*=1.2; set_pev(id, pev_punchangle, punchangle) } return FMRES_IGNORED }
Ale.. za każdym razem rozrzut kieruję się w prawy górny róg, ponadto, biorąc np takie AK47.. po kilku kulach z serii ekran nadal mi się obraca dookoła, później łapie wręcz teleporty (widok przód -> tył -> przód -> tył itd), najgorsze, gdy dochodzą do tego obroty do góry nogami. Jest jakiś dobry sposób ? Znalazłem kilka 'nowych broni' i w jednej z nich jest taki oto kodzik:
#define RECOIL 3.8 Float:cl_pushangle[33][3] RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_galil", "fw_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_galil", "fw_PrimaryAttack_Post", 1) public fw_PrimaryAttack(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if (ma_bron[Player]) pev(Player,pev_punchangle,cl_pushangle[Player]) } public fw_PrimaryAttack_Post(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if(ma_bron[Player]) { new Float:push[3] pev(Player,pev_punchangle,push) xs_vec_sub(push,cl_pushangle[Player],push) xs_vec_mul_scalar(push,RECOIL,push) xs_vec_add(push,cl_pushangle[Player],push) set_pev(Player,pev_punchangle,push) } }
Ale nie będę oszukiwał, że go nie rozumiem.
I teraz tak:
a) aby to działało jak chcę (tak jak kod 'nowej broni') musi być to w primmaryattack ? Jak zastosować to do wszystkich broni ? Nie chce dla jednej..
wyjasni mi ktos te ostatnie linijki z 'nowej broni' ? Chce nie tylko mieć to zrobione, ale zrozumieć to.. te xs_vec.. - proszę nie kierować na poradniki zagraniczne, mój angielski i składnia translate daje marne wyniki.
DarkGL
18.12.2014
Jak zastosować to do wszystkich broni ?
tutaj zmieniasz to
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_galil", "fw_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_galil", "fw_PrimaryAttack_Post", 1)
ogieR8
18.12.2014
Dobra, jak zwykle po napisaniu tematu zacząłem szperać ostro po necie.. Jest taki plugin jak Recoil Control - wyrzuciłem z niego niepotrzebne rzeczy dotyczące cvarów do recoila na wybrane bronie i został mi piękny kodzik, wrzucę, może komuś się również przyda
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <xs> #define PLUGIN "Recoil Control" #define AUTHOR "OT" #define VERSION "1.5" #define NO_RECOIL_WEAPONS_BITSUM (1<<2 | 1<<CSW_KNIFE | 1<<CSW_HEGRENADE | 1<<CSW_FLASHBANG | 1<<CSW_SMOKEGRENADE | 1<<CSW_C4) #define RECOIL 3.8 new Float:cl_pushangle[33][3] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) new weapon_name[20] for (new i=CSW_P228;i<=CSW_P90;i++) { if(!(NO_RECOIL_WEAPONS_BITSUM & (1<<i)) && get_weaponname(i, weapon_name, charsmax(weapon_name))) { RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack") RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack_post",1) } } } public fw_primary_attack(ent) { new id = pev(ent,pev_owner) pev(id,pev_punchangle,cl_pushangle[id]) return HAM_IGNORED } public fw_primary_attack_post(ent) { new id = pev(ent,pev_owner) new Float:push[3] pev(id,pev_punchangle,push) xs_vec_sub(push,cl_pushangle[id],push) xs_vec_mul_scalar(push,RECOIL,push) xs_vec_add(push,cl_pushangle[id],push) set_pev(id,pev_punchangle,push) return HAM_IGNORED }
Dzięki DarkGL, a może mi ktoś objaśnić te xs_vec'y ? W dokumentacji nic nie umiałeś znaleźć
DarkGL
18.12.2014
xs_vec_sub - odejmowanie wektórów
xs_vec_mul_scalar - mnożenie wektora przez skalar
xs_vec_add - dodawanie wektorów
ogieR8
18.12.2014
Ok, dzięki, już chyba czaję wszystko, z mojej strony - temat wyczerpany.
radim
18.12.2014
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL