Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

aSiorr - zdjęcie

aSiorr

Rejestracja: 26.12.2015
Aktualnie: Przegląda profil aSiorr
Poza forum Ostatnio: wczoraj, 23:15
-----

Moje posty

W temacie: [ROZWIĄZANE] Problem z zmianą sound'ów w ZP 4.3

wczoraj, 00:09

Pliki się poprawnie pobrały?

Ścieżki na pewno poprawne?

W temacie: dodanie expa graczu ktory skoczyl na glowe

18.07.2019 22:56

Ok, do zamknięcia, z wszystkim jak na razie się uporałem :)

 

Warto powiedzieć w jaki sposób Ci się udało dla uniknięcia przyszłych tematów z tym samym problemem.

W temacie: [ROZWIĄZANE] Losowy kolor barriery

16.07.2019 22:25

new Float:colors[3];

colors[0] = random_float(0.0, 255.0);
colors[1] = random_float(0.0, 255.0);
colors[2] = random_float(0.0, 255.0);

set_pve(g_iEntBarrier, pev_rendercolor, colors);

"must be a constant expression" -> "Musi być wyrażenie stałe", co znaczy, że wartość musi być stała, a nie tworzona w locie.

W temacie: dodanie expa graczu ktory skoczyl na glowe

16.07.2019 17:07

To może być overkill:

  • Sprawdzaj czy gracz A podskoczył (np. używając flag),
  • Sprawdzaj dotknięcie się dwóch entity o classname "player",
  • Sprawdzaj wysokość gracza B i gracza A (jeśli A jest wyżej o wysokość bytu B, to przyjmijmy, że podskoczył mu nad głowę lub równo z nią)

 

Drugi sposób (zważając na to, że już do tej pory widzieliśmy taski co 0.1 sekundy z wykorzystaniem mnóstwa natywów i złożonych funkcji aby formatować tekst HUDu przy 32 graczach):

  • Dla gracza, który się zrespi uruchom task co 0.1 sek.,
  • Sprawdzaj dotknięcie się dwóch entity o classname "player",
  • Sprawdzaj różnicę w wysokości graczy, których indeksy otrzymasz z eventu entity touch (podobnie do powyższego; jeśli A jest wyżej...),
  • Sprawdzaj w tasku flagę FL_ONGROUND (jeśli dobrze pamiętam) - jeśli będzie ustawiona to znaczy, że gracz skaczący dotknął podłoża (więc tym samym nie może stać komuś na głowie)

W temacie: Task się nie wyłącza.

12.07.2019 16:49

Pokaż cały kod.

 

Zmień public Poczatek_Rundy na to:

public Poczatek_Rundy()
{
	for(new i = 1; i <= 32; i++)
	{
		if(!is_user_connected(i))
		{
			continue;
		}

		remove_task(i + POKAZ_HUD);
	}
}

Dodaj:

public client_disconnect(index)
{
	if(!task_exists(index + POKAZ_HUD))
	{
		return;
	}

	remove_task(index + POKAZ_HUD);
}

Dodaj w Poczatek_Rundy log_amx'a, sprawdzającego czy task istnieje, przykładowo:

log_amx("Player: %i, Task id: %i, exist: %s", id, id + POKAZ_HUD, task_exists(id + POKAZ_HUD) ? "True" : "False");

Tak jak napisał TibacK, możesz uzywać argumentu "task_id" zamiast "id + POKAZ_HUD", wartości wyjdą dokładnie te same.

 

Polecam też pomyśleć nad estetyką kodu (odezwij się na PW, chętnie Ci podpowiem co i jak) i nazywaniem zmiennych po angielsku.