Page 1 of 2

freeze

Posted: 2011 Jun 16 17:39
by KamiN
Kaip padaryti, kad zaidejai sustingtu kokiom 5sec, jei kazkoks kintamasis yra true?

Re: freeze

Posted: 2011 Jun 16 19:36
by beast
Nustatai maxspeed ant 0.1 ir paleidi 5 sek. task, kurioje atstatysi speed į normalų.

Re: freeze

Posted: 2011 Jun 16 21:17
by KamiN
Gal gali pavizdi duot? Dar gerai butu kad ta sustingus komanda negaletu ir saudyt.

Re: freeze

Posted: 2011 Jun 16 21:19
by psychical
set_user_maxspeed(id) //uzstato -1.0, kada judet nebegali
set_user_maxspeed(id, 250.0) //optimalus kiekvieno zaidejo greitis

-- 2011 Bir 16 21:19 --
KamiN wrote:Gal gali pavizdi duot? Dar gerai butu kad ta sustingus komanda negaletu ir saudyt.

O jei tu nori taip, tai amx_pause, ir stapdyk visa srw... :D

Re: freeze

Posted: 2011 Jun 16 21:43
by KamiN
Tai zodziu, jei del judejimo bendroj sumoj butu kazkas tokio

Code: Select all

 new bool:kazkas if(kazkas){    if(cs_get_user_team(id) == CS_TEAM_T)        set_user_maxspeed(id, 0.1)     set_task(5.0, "kazkas1", id)} public kazkas1{set_user_maxspeed(id, 250.0)} 
Kaip padaryt, kad nebutu galima saudyt?

Alliedmoduose radau kazka. Rase, kad ir dmg ir speed cia sustabdo.
// How to freeze:
set_pev(id, pev_flags, (pev(id, pev_flags) | FL_FROZEN));

// How to unfreeze:
set_pev(id, pev_flags, (pev(id, pev_flags) & ~FL_FROZEN));
Tai jei sitas veikia, tada kodas atrodytu taip?

Code: Select all

 new bool:kazkas if(kazkas){    if(cs_get_user_team(id) == CS_TEAM_T)        set_pev(id, pev_flags, (pev(id, pev_flags) | FL_FROZEN));     set_task(5.0, "kazkas1", id)} public kazkas1{set_pev(id, pev_flags, (pev(id, pev_flags) & ~FL_FROZEN));}

Re: freeze

Posted: 2011 Jun 16 22:21
by psychical
Duok linka, ten kur tu kazka radai allied...

Re: freeze

Posted: 2011 Jun 16 22:36
by KamiN
Sustingt sustingsta, bet po 5 sec niekas neatstingsta. Kaip istaisyt sita klaida?

Code: Select all

 new bool:HasTurn register_forward(FM_PlayerPreThink, "fwdPlayerPreThink", 0); public fwdPlayerPreThink(id){     if(HasTurn)    {        if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)        {            set_pev(id, pev_flags, (pev(id, pev_flags) | FL_FROZEN));            set_task(5.0, "unfreeze")        }    }} public unfreeze(id){    set_pev(id, pev_flags, (pev(id, pev_flags) & ~FL_FROZEN));}

Re: freeze

Posted: 2011 Jun 16 22:44
by beast
set_task id pamiršai nurodyt. Beje prasta idėja atlikt tokius veiksmus fwdPlayerPreThink, nes jie bus iškviečiami fps dažniu. Jeigu jau kitaip neišeina, tai daryk taip:

Code: Select all

 new bool:HasTurn register_forward(FM_PlayerPreThink, "fwdPlayerPreThink", 0); public fwdPlayerPreThink(id){    if(HasTurn)    {        if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T && ~pev(id, pev_flags) & FL_FROZEN)        {            set_pev(id, pev_flags, (pev(id, pev_flags) | FL_FROZEN));            set_task(5.0, "unfreeze", id)        }    }} public unfreeze(id){    if(!is_user_connected(id))        return     set_pev(id, pev_flags, (pev(id, pev_flags) & ~FL_FROZEN));}
Bet ir tai abejoju ar tik vieną kartą bus iškviečiama...

Re: freeze

Posted: 2011 Jun 16 23:05
by KamiN
Vistiek, sustingsta, bet nebeatstingsta po 5sec.

Re: freeze

Posted: 2011 Jun 16 23:23
by hleV
Tiesiog pridėk FL_FROZEN flag'ą, kai kintamasis tampa true (tikiuos žinai, kada) ir atimk jį po 5 sek.