Zmniejszanie rozrzutu - 2 metody, która le...
Rivit
29.06.2015
Witam, bawiąc się ostatnio broniami znalazłem dwa kody... z Cod Moda
Jeden usuwa rozrzut, a drugi go zmniejsza...
new const perk_desc[] = "Usuwa rorzut broni"; public plugin_init() { register_forward(FM_PlayerPreThink, "PreThink"); register_forward(FM_UpdateClientData, "UpdateClientData", 1) } public PreThink(id) { if(ma_perk[id]) set_pev(id, pev_punchangle, {0.0,0.0,0.0}) } public UpdateClientData(id, sw, cd_handle) { if(ma_perk[id]) set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0}) }
new const perk_desc[] = "Zmniejsza rorzut broni"; public plugin_init() { register_forward(FM_CmdStart, "CmdStart"); } public CmdStart(id, uc_handle) { if(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]*=0.9; set_pev(id, pev_punchangle, punchangle) } }
(zostawiłem najpotrzebniejsze rzeczy, reszta to cod modowy syf)
Który sposób wpływania na rozrzut jest lepszy?
Wiem, że jeden kod usuwa, a drugi zmniejsza rozrzut, ale dlaczego ktoś nie zrobił np. usuwania rozrzutu w CmdStart lub zmniejszania w prethinku i updateclientdata?
Proszę o rozjaśnienie...
wiwi249
29.06.2015
Znaczy moim zdaniem przede wszystkim druga metoda jest lepsza (gdyby zastosować podobne instrukcje) bo nie wywołuje się w każdej klatce jak UpdateClientData i PreThink. Zawsze to troche mniejsze obciążenie.
Spróbowałbym jeszcze użyć Ham_Weapon_PrimaryAttack.
Rivit
29.06.2015
Pytanie, czy to w cmdstart działa, ja nie zauważyłem zmniejszenia rozrzutu
Rivit
29.06.2015
To dlaczego eliminator jest robiony na prethinku, których unikam jak ognia?
Asiap
29.06.2015
#include <amxmodx> #include <fakemeta> #include <hamsandwich> new Float:g_fPushAngle[33][3]; public plugin_init() { register_plugin("No Recoil", "0.1", "AsiaP"); new szName[24]; for(new i = 1; i <= 30; i++) { if(!((1<<CSW_KNIFE|1<<CSW_C4|1<<CSW_FLASHBANG|1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE) & 1<<i) && get_weaponname(i, szName, 23)) { RegisterHam(Ham_Weapon_PrimaryAttack, szName, "PrimaryAttackPre"); } } for(new i = 1; i <= 30; i++) { if(!((1<<CSW_KNIFE|1<<CSW_C4|1<<CSW_FLASHBANG|1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE) & 1<<i) && get_weaponname(i, szName, 23)) { RegisterHam(Ham_Weapon_PrimaryAttack, szName, "PrimaryAttackPost", 1); } } } public PrimaryAttackPre(ent) { new id = pev(ent, pev_owner); pev(id, pev_punchangle, g_fPushAngle[id]); } public PrimaryAttackPost(ent) { new id = pev(ent, pev_owner); static Float:fPush[3]; pev(id, pev_punchangle, fPush); fPush[0] -= g_fPushAngle[id][0]; fPush[1] -= g_fPushAngle[id][1]; fPush[2] -= g_fPushAngle[id][2]; fPush[0] *= 0.0; fPush[1] *= 0.0; fPush[2] *= 0.0; fPush[0] += g_fPushAngle[id][0]; fPush[1] += g_fPushAngle[id][1]; fPush[2] += g_fPushAngle[id][2]; set_pev(id, pev_punchangle, fPush); }