←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] ScreenFade - jak dokładnie us...

Locked

  • +
  • -
venom1324's Photo venom1324 30.05.2013

Witam, mam pytanie. Jak dokładnie ustawić czas trwania ScreenFade? Chcę tak, aby Hold time trwał 80 sekund, a na operacjach bitowych mi to nie wychodzi, proszę o pomoc.

 

    message_begin( MSG_ONE, g_msg_screenfade,{0,0,0},id )
    write_short( 1<<15)    // Duration of fadeout
    write_short( 1<<13)    // Hold time of color - Tutaj ma być 80 s, ale nie wiem jak to zrobić ;/
    write_short( 1<<12 )    // Fade type
    write_byte ( random_num(0,255 ))        // Red
    write_byte ( random_num(0,255 ))        // Green
    write_byte ( random_num(0,255 ))        // Blue
    write_byte ( 255 )    // Alpha
    message_end()
}


Edited by venom1324, 30.05.2013 01:07.
Quote

  • +
  • -
radim's Photo radim 30.05.2013

1<<12 == 1 sekunda
2 sekundy to 2*(1<<12) = 1<<13
3 sekundy to 3*(1<<12)
4 sekundy to 4*(1<<12) = 1<<14

Lub zajrzyj tu: 
http://darkgl.amxx.p...-ekranu-gracza/ ; ))

Quote

  • +
  • -
sebul's Photo sebul 30.05.2013

A najlepiej zrobić coś takiego
#define bitfloatvalue(%1) floatround((%1)*(1<<12))

a potem używamy tego tak
bitfloatvalue(1.0) // 1 sekunda
bitfloatvalue(0.5) // pół sekundy
// itd.
Quote

Gość_21977_* 30.05.2013


write_short( 1<<13)    // Hold time of color - Tutaj ma być 80 s, ale nie wiem jak to zrobić ;/

 

Dobrze myślisz. Jednakże, HoldTime to short int, a więc przyjmuje maksymalną wartość 32767.

 

Innymi słowy, jesteś w stanie za pomocą jednej wiadomości zakryć ekran na maksymalnie 32767/1!12 = ~5 sekund.

Aby osiągnąć dłuższy efekt, musisz wysłać wiadomość kilkukrotnie, tutaj aż kładnia się funkcja set_task z flagą "a".

 

Problem, pamiętam, był już kiedyś poruszany na AMXX.pl, musisz dobrze poszukać albo pobawić się z funkcjami czasowymi.

Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 30.05.2013

Wystarczy użyć dwukrotnie ;) Screenfade można ustawić na nigdy nie wygasający, a następnie po 80 sekundach rozpocząć fadeout drugim screenfade.

Quote

  • +
  • -
venom1324's Photo venom1324 30.05.2013

 


write_short( 1<<13)    // Hold time of color - Tutaj ma być 80 s, ale nie wiem jak to zrobić ;/

 

Dobrze myślisz. Jednakże, HoldTime to short int, a więc przyjmuje maksymalną wartość 32767.

 

Innymi słowy, jesteś w stanie za pomocą jednej wiadomości zakryć ekran na maksymalnie 32767/1!12 = ~5 sekund.

Aby osiągnąć dłuższy efekt, musisz wysłać wiadomość kilkukrotnie, tutaj aż kładnia się funkcja set_task z flagą "a".

 

Problem, pamiętam, był już kiedyś poruszany na AMXX.pl, musisz dobrze poszukać albo pobawić się z funkcjami czasowymi.

 

Ok, dzięki, zrobiłem z set_taskiem. Do zamknięcia.

Quote

  • +
  • -
sebul's Photo sebul 30.05.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked