←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Jak przedłużyć Message Screen...


Najlepsza odpowiedź K!113r 16.05.2013 21:33

wszystko można zrobić taskiem i usuwaniem taska (dodatkowo wiadomością o efekcie zerowym, czyli usuwającą w tym wypadku screenshake)

Przejdź do postu
Zablokowany

  • +
  • -
Niide - zdjęcie Niide 16.05.2013

Cześć. Mam takie nietypowe pytanko. Jak przedłużyć message Screen Shake?

public pijany(id)
{
	if(is_user_alive(id))
	{
		new gmsgShake = get_user_msgid("ScreenShake");
		message_begin(MSG_ONE, gmsgShake, {0,0,0}, id);
		write_short(255 << 14);
		write_short(10 << 14);
		write_short(255 << 14);
		message_end();
		set_task(10.0, "pijany", id+66, _, _, "b");
	}
}

Zrobiłem coś takiego ale po jednym razie się wyłącza i nie działa już następnym...

 

Czy dałoby się to także zrobić tak, że będzie nam się ekran trząsł aż do wyłączenia tego poprzez menu czy też innym sposobem? I czy dało by się to przerobić na takie bardziej kołysanie ekranem jak gdyby by się było pijanym?


Użytkownik Niide edytował ten post 16.05.2013 20:57
Odpowiedz

  • +
  • -
Najlepsza odpowiedź K!113r - zdjęcie K!113r 16.05.2013

wszystko można zrobić taskiem i usuwaniem taska (dodatkowo wiadomością o efekcie zerowym, czyli usuwającą w tym wypadku screenshake)

Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.05.2013

#define bitfloatvalue(%1) floatround((%1)*(1<<12))

public TrzesEkranem(id, Float:ampli, Float:dur, Float:freq) {
if(is_user_alive(id)) {
static gmsgShake;
if(!gmsgShake) gmsgShake = get_user_msgid("ScreenShake");
message_begin(MSG_ONE_UNRELIABLE, gmsgShake, _, id);
write_short(bitfloatvalue(ampli));
write_short(bitfloatvalue(dur));
write_short(bitfloatvalue(freq));
message_end();
}
}

I kombinuj z różnymi wartościami, szczególnie z tymi poniżej 1.
Odpowiedz

  • +
  • -
Niide - zdjęcie Niide 16.05.2013

Dzięki wam :) Sebul, Twojego rozwiązania nie próbowałem, bo rozwiązanie Killera działa poprawnie. O coś takiego mi nawet chodziło. Obaj otrzymujecie plusiki :P

 

Jeżeli kogoś ciekawi jak to zrobiłem to tak:

public pijany(id)
{
	if(is_user_alive(id))
	{	
		set_task(4.0, "pijany_off", id);
		
		new gmsgShake = get_user_msgid("ScreenShake");
		message_begin(MSG_ONE, gmsgShake, {0,0,0}, id);
		write_short(255 << 14);
		write_short(10 << 14);
		write_short(255 << 14);
		message_end();
	}
	
}

public pijany_off(id)
{
	new gmsgShake = get_user_msgid("ScreenShake");
	message_begin(MSG_ONE, gmsgShake, {0,0,0}, id);
	write_short(0);
	write_short(0);
	write_short(0);
	message_end();
	
	pijany(id);
}

Może się komuś przyda moje rozwiązanie.

Odpowiedz
Zablokowany