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
 

Zdjęcie

Problem z wiadomością


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 27.04.2020 11:08

public plugin_precache()
{
       gLaser = precache_model("sprites/zbeam4.spr");
}

public psychic_power_beamring(data[])
{
	if(!is_user_alive(data[0]) || !bHasPsychicPower[data[0]] || iPsychicPowerStatus[data[0]] != PSYCHIC_POWER_ACTIVE)
		return;
	
	new entlist[32];
	new entfound = find_sphere_class(data[0], "player", 700.0, entlist, charsmax(entlist));
	
	for(new i = 0; i < entfound; i++)
	{
		if(!is_user_alive(entlist[i]) || !is_user_connected(entlist[i]))
			continue;
		
		if(entlist[i] == data[0])
			continue;
		
		message_begin(MSG_ALL, SVC_TEMPENTITY);
		write_byte(TE_BEAMRING);
		write_short(data[0]); // start entity
		write_short(entlist[i]); // end entity
		write_short(gLaser); // sprite index
		write_byte(0); // starting frame
		write_byte(0); // frame rate 0.1's
		write_byte(1); // life 0.1's
		write_byte(10); // width 0.1's
		write_byte(10); // noise amplitude 0.1's
		write_byte(235); // red
		write_byte(1); // green
		write_byte(101); // blue
		write_byte(255); // brightness
		write_byte(8); // scroll speed 0.1's
		message_end();
	}
	
	set_task(0.1, "psychic_power_beamring", _, data, 1);
}

Mam oto taki task i jak widać wykonuje się on w pętli co 0.1 sekundy. Ten task zostanie przerwany za 15 sekund.

Przez te 15 sekund wszyscy gracze otrzymują te wiadomość z poprawnym efektem, ale momencie przerwania, serwer się crashuje z tym błędem:

L 04/26/2020 - 22:11:02: FATAL ERROR (shutting down): PF_MessageBegin_I: with no target entity

Już sporo czasu poświęciłem na szukanie błędu, ale jakoś nic nie widzę. Chyba że popełniłem jakiś błąd w tym message o którym nie wiem.


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 107
Super Hero

  • Postów:2 051
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 27.04.2020 13:26

Debugowanie to ciężka sprawa, ale nie w amxxie. W amxxie mamy d*pa-debbuging; log_amx, najczęściej.

 

Przed wiadomością, którą podejrzewasz o crashowanie serwera wstawiasz loga, który podrzuci Ci customowe informacje, które będą pomocne w zdiagnozowaniu źródła problemu.

Tym samym;

log_amx("Debug log: Start ent: %i (%s) End ent: %i (%s)", data[0], is_valid_ent(data[0]) ? "Valid" : "Invalid", entlist[i], is_valid_ent(entlist[i]) ? "Valid" : "Invalid");

Plusy:

  • Customowe informacje o błędzie
  • Łatwość użycia

Minusy:

  • Spam w konsoli, jeśli wykonujesz coś tak często

Robiin (27.04.2020 13:27):
Niemniej jednak treść błędu jest bardzo wymowna, więc podejrzewam, że entlist[i] == 0.

  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 27.04.2020 16:31

Pozwole sobie wtrącić info odnośnie debuggera.

 


Debugowanie to ciężka sprawa, ale nie w amxxie. W amxxie mamy d*pa-debbuging; log_amx, najczęściej.

 

 

Rzućcie okiem na to. Mam to od pewnego czasu w zakładkach "do sprawdzenia", ale niestety brak czasu na testy, jakby ktoś stestował i powiedział, że warto to proszę o info ;)

https://github.com/G...code-amxx-debug

https://github.com/G...debugger-server

 

 

A co do tematu, takich błędów warto poszukać u źródła, czyli na przykład w źródłach ReHLDS - wystarczy wpisać fraze błędu (albo całość) i dojść dlaczego dana rzecz się wysypuje.

Spoiler
		if (!ed)
			Sys_Error("%s: with no target entity\n", __func__);

Czyli tak jak Pan Asior powiedział.


  • +
  • -
  • 1

#4 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 28.04.2020 11:24

L 04/28/2020 - 12:17:35: [pl.amxx] Debug log: Start ent: 3 (Valid) End ent: 2 (Valid)
L 04/28/2020 - 12:17:35: [pl.amxx] Debug log: Start ent: 3 (Valid) End ent: 15 (Valid)
L 04/28/2020 - 12:17:35: [pl.amxx] Debug log: Start ent: 3 (Valid) End ent: 2 (Valid)
L 04/28/2020 - 12:17:35: [pl.amxx] Debug log: Start ent: 3 (Valid) End ent: 15 (Valid)

Od samego początku aż do crasha były tylko takie logi. Oczywiście inne id, ale wszędzie '(Valid)'.

Pierwszy log 12:17:22, ostatni 12:17:37.


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych