Wywolywanie freezetime w funkcji 2.0
MAGNET
04.07.2013
Siemka
Przedtem myślałem, że już sobie z tym freezetimem poradzę, ale plug wpleciony w drugi powoduje jego nie działanie.
Proszę o pokazanie mi, jak zablokować WSAD
d0naciak
04.07.2013
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <fakemeta> new bool:g_bFreeze[33]; public plugin_init() { register_plugin("freeze", "0.1", "d0naciak") register_forward(FM_CmdStart, "fw_CmdStart"); } public client_putinserver(id) g_bFreeze[id] = false; public fw_CmdStart(id, iUc) { if(!is_user_alive(id)) return FMRES_IGNORED; if(g_bFreeze[id]) { new iButtons = get_uc(iUc, UC_Buttons); if(iButtons & IN_RUN) { set_pev(id, pev_buttons, iButtons & ~IN_RUN); } } return FMRES_IGNORED; } stock set_freeze(id, iSet) { if(iSet == 1) { g_bFreeze[id] = true; set_pev(id, pev_buttons, pev(id, pev_buttons) & ~IN_RUN); } else { g_bFreeze[id] = false; } }
Uzywaj funkcji set_freeze to ustawiania freeza
set_freeze(id, iSet) id - index gracza iSet - po ustawieniu na 1 daje freeza, na 0 przywraca mozliwosc poruszania sie
Jak dziala/nie dziala daj znac (nietestowane)
d0naciak
04.07.2013
to nie brak zmiennej, to zle nawyki z mojej strony. Kod poprawiony
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <fakemeta> new bool:g_bFreeze[33]; public plugin_init() { register_plugin("freeze", "0.1", "d0naciak") register_forward(FM_CmdStart, "fw_CmdStart"); } public client_putinserver(id) g_bFreeze[id] = false; public fw_CmdStart(id, iUc) { if(!is_user_alive(id)) return FMRES_IGNORED; if(g_bFreeze[id]) { new iButtons = get_uc(iUc, UC_Buttons); if(iButtons & IN_RUN) { set_pev(id, pev_button, iButtons & ~IN_RUN); } } return FMRES_IGNORED; } stock set_freeze(id, iSet) { if(iSet == 1) { g_bFreeze[id] = true; set_pev(id, pev_button, pev(id, pev_button) & ~IN_RUN); } else { g_bFreeze[id] = false; } }
MAGNET
05.07.2013
Nie działa mi
Przypisałem SB pod komende say /freeze i nic sie nie stało niestety
d0naciak
07.07.2013
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <fakemeta> new const g_iKeysToBlock[5] = { IN_RUN, IN_MOVELEFT, IN_MOVERIGHT, IN_FORWARD, IN_BACK }; new bool:g_bFreeze[33]; public plugin_init() { register_plugin("freeze", "0.1", "d0naciak") register_forward(FM_CmdStart, "fw_CmdStart"); } public client_putinserver(id) g_bFreeze[id] = false; public fw_CmdStart(id, iUc) { if(!is_user_alive(id)) return FMRES_IGNORED; if(g_bFreeze[id]) { new iButtons = get_uc(iUc, UC_Buttons); for(new i = 0; i <= 4; i++) iButtons &= ~g_iKeysToBlock[i]; set_uc(iUc, UC_Buttons, iButtons); return FMRES_HANDLED; } return FMRES_IGNORED; } stock set_freeze(id, iSet) { if(iSet == 1) { g_bFreeze[id] = true; new iButtons = pev(id, pev_button); for(new i = 0; i <= 4; i++) iButtons &= ~g_iKeysToBlock[i]; set_pev(id, pev_button, iButtons); } else { g_bFreeze[id] = false; } }
Filip1512
07.07.2013
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <fakemeta> new const g_iKeysToBlock[5] = { IN_RUN, IN_MOVELEFT, IN_MOVERIGHT, IN_FORWARD, IN_BACK }; new bool:g_bFreeze[33]; public plugin_init() { register_plugin("freeze", "0.1", "d0naciak") register_forward(FM_CmdStart, "fw_CmdStart"); } public client_putinserver(id) g_bFreeze[id] = false; public fw_CmdStart(id, iUc) { if(!is_user_alive(id)) return FMRES_IGNORED; if(g_bFreeze[id]) { new iButtons = get_uc(iUc, UC_Buttons); for(new i = 0; i <= 4; i++) iButtons &= ~g_iKeysToBlock[i]; set_uc(iUc, UC_Buttons, iButtons); return FMRES_HANDLED; } return FMRES_IGNORED; } stock set_freeze(id, iSet) { if(iSet == 1) { g_bFreeze[id] = true; new iButtons = pev(id, pev_button); for(new i = 0; i <= 4; i++) iButtons &= ~g_iKeysToBlock[i]; set_pev(id, pev_button, iButtons); } else { g_bFreeze[id] = false; } }
Ten kod zadziała nawet jeśli modyfikujemy prędkość gracza poprzez set_user_maxspeed?
BlackPerfum
07.07.2013
Tak gdyż nie wpływa na prędkość poruszania się tylko na przyciski które używa gracz
d0naciak
07.07.2013
To tak jakby wklepać unbind klawiszów WASD - po prostu gracz ma zablokowane ich używanie - a prędkość chodu nie ma tu nic do rzeczy