←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Message EVENTY - Błędy

Zablokowany

  • +
  • -
dram - zdjęcie dram 21.08.2011

FATAL ERROR (shutting down): MSG_ONE or MSG_ONE_UNRELIABLE with no target entity

FATAL ERROR (shutting down): MSG_ONE or MSG_ONE_UNRELIABLE with no target entity


Mam taki błąd w konsoli i potem następuje crash - Niestety nie wiem który to plugin powoduje, dlatego domyślam się ,że

próbóje wywołać EVENT np. na graczu którego nie ma, bądź na ent który nie istnieje.

Na serwerze jest sporo pluginów i troche było to by nie wporządku wyłącząć każdy plugin i patrzeć czy to on. Dlatego rozumiem ,że wystarczyłoby przejrzeć .sma i przed wysyłaniem "eventu" sprawdzać czy gracz/ent istnieje.

if(pev_valid(id) || is_user_alive(id)){
		message_begin(MSG_ONE, gmsgShake, {0,0,0}, id)
		write_short( (1<<12) * 10 )
		write_short( (1<<12) * 3 )
		write_short( (1<<12) * 14)
		message_end()
	}

Takie coś wystarczy? Czy np. w przypadku wiadomości MSG_ALL też dobrze byłoby sprawdzać? Lub może w którejś wiadomości jakiś parametr jest błędny?
Użytkownik dram edytował ten post 21.08.2011 20:43
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 21.08.2011

if(is_user_alive(id)){
		message_begin(MSG_ONE, gmsgShake, {0,0,0}, id)
		write_short( (1<<12) * 10 )
		write_short( (1<<12) * 3 )
		write_short( (1<<12) * 14)
		message_end()
}

jak z pev_valid to nie || tylko &&
Odpowiedz

  • +
  • -
dram - zdjęcie dram 21.08.2011

Czy w przypadku gdy wiadomość wysyłana jest do wszystkich graczy też należy się zabezpieczyć?

btw. ten błąd od tych właśnie wiadomości pochodzi?
Użytkownik dram edytował ten post 21.08.2011 22:23
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 21.08.2011

dla msg_all nie ma znaczenia parametr id, tak jak we wszystkich innych wiadomościach musisz pilnować typu i ilości parametrów write_*
Odpowiedz

  • +
  • -
dram - zdjęcie dram 21.08.2011

Tak ale ten błąd z konsoli pochodzi w przypadku gdy

"message_begin" zostało wywołane do d*py tzn.

ENT który jest w wiadomości nie istnieje bądź go nie ma tak?

p.s

FATAL ERROR (shutting down): MSG_ONE or MSG_ONE_UNRELIABLE with no target entity

FATAL ERROR (shutting down): MSG_ONE or MSG_ONE_UNRELIABLE with no target entity


I z tego co widze są praktycznie tu dwa pod rząd to oznacza ,że message_begin wykonują się w małych odstępach czasowych?(pomoże mi to w szukaniu który plugin to robi:))
Użytkownik dram edytował ten post 21.08.2011 22:30
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 21.08.2011

ten błąd pojawia się tylko w związku z message_begin()
message_begin(MSG_ONE, gmsgShake, {0,0,0}, id)
kiedy id nie jest bytem, a często graczem

to z shutdownem to raczej nie ma znaczenia, jak poszła druga wiadomość to już serwer szedł spać; a czasu nie można dokładnie określić na podstawie takich logów
Odpowiedz

  • +
  • -
dram - zdjęcie dram 21.08.2011

To jak przed tym się zabezpieczyć? is_user_alive?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 21.08.2011

is_connected() wystarczy

sprawdzę czy FM_ łapie amxxowe wiadomości, to bardzo ułatwi debugging
Odpowiedz

  • +
  • -
dram - zdjęcie dram 21.08.2011

Mógłbyś mi spreparować kodzik? Tak się składa że posiadam orpheu na serwerze ;)

p.s Linux 64 bit

Te crashe są irytujące bo AMXX nie wywala który plugin crashuje a sprawdzać każdy z osobna to nie łatwe wyzwanie zwłaszcza że on występuje w różnych odstępach czasowych.
Użytkownik dram edytował ten post 21.08.2011 23:09
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 21.08.2011

ja mnie do jutra nikt nie ubiegnie to zrobię fixa na to
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 22.08.2011

a jak zachowuje sie is_user_alive/connected dla id=0 :?:

jest bląd/nic sie nie dzieje czy jest operacja na "cliencie" servera( tak jak przy get_user_name(0,buff,123)) :?:
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 22.08.2011

gracz numer 0 nie jest ani podłączony ani żywy, więc te funkcje zwracają 0, serwer nie ma żadnego klienta ani bytu; to z name i ip to są czyste haxy
Odpowiedz

  • +
  • -
dram - zdjęcie dram 22.08.2011

Czekam na FIXA, jak napiszesz powiadom o tym tutaj ;) :kwiaty:
Odpowiedz
Zablokowany