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