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
Zombie Plague 5.0

Błędy Assassin Mode

zombie plague 5.0

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

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 04.08.2018 17:38

To już chyba błąd autora, bo ja tego nie zmieniałem. Po włączeniu Assassin Mode na więcej niż ~10 osób, w logach jest błąd w którym plugin wysyła wiadomość do id 0.

Na Nemesis Mode nie występuje ten błąd, bo wogóle nie ma message ScreenFade i ScreenShake.

 

Spoiler

 

zp50_gamemode_assassin.amxx:

Spoiler

 

Dodam, że tryby testowałem na XFakePlayers (bo podboty mózgu nie mają >.<).

W sumie to może być też wina botów bo co runde bez powodu ginie ich powoła.

Można jakoś naprawić ten błąd ?


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

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

Napisano 04.08.2018 17:43

Pokaż całe sma, a jeśli to silnik to pokaż deklarację;

g_msgScreenFade

  • +
  • -
  • 0

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


#3 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 04.08.2018 17:48

ZP 5.0 to raczej kilkanaście - kilkadziesiąt mini-silników, nie widziałem jeszcze tej wersji z jednym dużym silnikiem, jest w ogóle taki ? xD

 

Cały plik zp50_gamemode_assassin.sma:

Załączony plik  zp50_gamemode_assassin.sma   6,28 KB  74 Ilość pobrań
  zp50_gamemode_assassin.amxx


  • +
  • -
  • 0

#4 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

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

Napisano 04.08.2018 18:06

g_msgScreenShake = get_user_msgid("ScreenShake")
g_msgScreenFade = get_user_msgid("ScreenFade")

Nie powinno to być w init? Nie jestem pewny, czy zrobi to jakąkolwiek różnicę, ale według starego zp 4.3 jest to w init i warto spróbować. Jak nie zadziała, to poszukamy przyczyny gdzie indziej.


  • +
  • -
  • 0

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


#5 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 04.08.2018 18:26

Dodałem to do init i nic to nie zmieniło :P


  • +
  • -
  • 0

#6 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

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

Napisano 04.08.2018 20:05

Sugerując się silnikiem 4.3 spróbuj zamienić pierwszy argument message_begin na:

MSG_ONE_UNRELIABLE

Podobno jest to "zawodna" metoda, ale warto spróbować. Od dłuższego czasu grzebie się z silnikiem 4.3 i nie miałem nigdy problemu z tym konkretnym errorem.

 

 

Sama rejestracja ScreenFade jest raczej poprawna - niezbyt złożona (zaledwie z deklaracji handlera, przypisania indexu wiadomości i użycia w message_begin), więc też mało prawdopodobne, że jest to problemem.


Użytkownik aSiorr edytował ten post 04.08.2018 20:06

  • +
  • -
  • 0

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


#7 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 04.08.2018 20:24

Już tego próbowałem, nic to nie dało :/


  • +
  • -
  • 0

#8 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

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

Napisano 04.08.2018 21:47

Sprawdź, potem dołącz plik z logiem z linii 216.

Załączone pliki


  • +
  • -
  • 1

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


#9 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 05.08.2018 11:38

Dalej to samo (chociaż to już chyba ten drugi message ?)

L 08/05/2018 - 12:36:19: gmsgScreenFade message id = 98 (Playerid: 2)
L 08/05/2018 - 12:36:19: Plugin called message_begin with an invalid message id (0).
L 08/05/2018 - 12:36:19: [AMXX] Displaying debug trace (plugin "zp50_gamemode_assassin.amxx")
L 08/05/2018 - 12:36:19: [AMXX] Run time error 10: native error (native "message_begin")
L 08/05/2018 - 12:36:19: [AMXX]    [0] zp50_gamemode_assassin.sma::zp_fw_gamemodes_start (line 166)
L 08/05/2018 - 12:36:19: Log file started (file "cstrike\addons\amxmodx\logs\ZombiePlague_20180805.log") (game "cstrike") (amx "1.8.2")

@edit aSiorr, zrobiłem tak samo z ScreenShake i już działa, nie bardzo wiem co to za różnica ale poprawione :P


Użytkownik csMaster edytował ten post 05.08.2018 11:50

  • +
  • -
  • 0

#10 Robiin

    Godlike

  • Support Team

Reputacja: 1 103
Super Hero

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

Napisano 05.08.2018 12:41

message_begin( MSG_ONE, gmsgScreenFade, {0,0,0}, id );

a

message_begin(MSG_ONE, g_msgScreenFade, _, id);

Przekazanie "_" czyli pominięcie argumentu powinno zostawić przypisaną do zmiennej wartość początkową:

float vecOrigin[3];

Jak na moje warunek pokazany niżej łapie się na tym, że vecOrigin ma wartości < 1, ale to może być tylko moje krzywe myślenie na ten moment.

 

Dokumentacja message_begin mówi, że argument ten:

origin - położenie źródła wiadomości, nie zawsze potrzebne.

Nie zawsze, ale ewidentnie czasami wymagane - jak widać po wcześniejszych postach.

 

Według source-code "messages":

if (params[2] < 1 || ((params[2] > 63) && !GET_USER_MSG_NAME(PLID, params[2], NULL))) // maximal number of engine messages 
{
	LogError(amx, AMX_ERR_NATIVE, "Plugin called message_begin with an invalid message id (%d).", params[2]);
	return 0;
}

"maximal number of engine messages" więc jest możliwość (jeśli dobrze interpretuje komentarz), że rzeczywiście zawołane zostało zbyt dużo "engine messages".

Wypadałoby wyprintować origin podawany do funkcji message_begin, żeby sprawdzić jaką rzeczywiście przyjmuje wartość - jeśli > 1 to nie przeszła druga część ifa, czyli zbyt dużo wiadomości silnika. Nie mam teraz czasu, żeby zagłębiać się w to, ale skoro problem rozwiązany to chyba nie ma co szukać dziury w całym.

 


Użytkownik aSiorr edytował ten post 05.08.2018 12:51

  • +
  • -
  • 0

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






Również z jednym lub większą ilością słów kluczowych: zombie plague 5.0

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

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