Skocz do zawartości
Minokon

Spis najczęstszych błędów i ich rozwiązania!

Rekomendowane odpowiedzi

Witam

Na początku proszę o przyklejenie tego tematu, uważam że jest potrzebny i raczej ograniczy ilość pisanych postów w dziale "Problemy".

Postanowiłem napisać informacje, na temat najczęściej spotykanych błędów "wyskakujących" podczas kompilacji gamemodu/skryptu. Wydawało mi się, że ten temat już tu był, ale to chyba na starym forum.

Zajrzyj także na stronę codeGenerators.pl gdzie znajdziesz parser błędów: KLIK

Typy errorów:

Error - zwykły błąd, nie przerywający dalszej kompilacji. Nie jest jednak tworzony plik .amx. Numery błędów tego typu są numerowane od 1 do 99.

Fatal error - błąd krytyczny. Po jego wystąpieniu kompilator wstrzymuje pracę. Jego numery: 100-199.

Warning - ostrzeżenie. Kompilator kończy swoją pracę, jednocześnie tworząc plik .amx, jednakże mogą wystąpić problemy w poprawnym działaniu. Numery od 200 do 299.

Spis zwykłych błędów:

error 001: expected token: ";", but found "return"

Prosty błąd, kompilator znalazł "return" zamiast ";" w danej linijce. Podana jest linijka "return", więc trzeba szukać wcześniej.

error 004: function "Nazwa" is not implemented

Oznacza, że dany public został zdefiniowany, ale nie został użyty (Jest forward, ale brak "public Nazwa()").

error 017: undefined symbol "Nazwa"

Kompilator nie wie co to jest "Nazwa". Trzeba to zdefiniować, np. wpisując "new Nazwa;", lub tworząc funkcję "Nazwa" (zależy jak zostało to "Nazwa" użyte i do czego ma służyć).

error 021: symbol already defined: "Nazwa"

Powstaje w wyniku wpisania np. takiego kodu:

new Nazwa;
new Nazwa;
Wystarczy wtedy zmienić nazwę drugiej zmiennej na np. "Nazwa2", lub usunąć jedną jeśli jest niepotrzebna. error 025: function heading differs from prototype Oznacza, że dany public został źle zdefiniowany. Czyli coś takiego:
forward NazwaPublica(playerid);
public NazwaPublica(playerid, text[])
{
	return 1;
}
Można sobie ułatwić pracę dodając coś takiego na początku GameModu/skryptu:
#define Callback:%0(%1) \
	forward %0(%1); \
	public %0(%1)
A następnie w taki sposób używać callbacków (public'ów):
Callback:NazwaPublica(playerid, text[])
{
	return 1;
}
error 035: argument type mismatch (argument NUMER) Oznacza, że dany argument w funkcji jest nieprawidłowy. Np. podaliśmy zmienną zawierającą liczbę, zamiast tablicy zawierającej ciąg znaków, lub liczby zmiennoprzecinkowej (Float). Występuje przy wpisaniu np.:
CreateVehicle(400, 0.0, 0.0, 0, 0.0, 1, 6, -1); //podaliśmy 0 dla pozycji Z, to nie jest liczba zmiennoprzecinkowa
error 054: unmatched closing brace ("}") Czyli mamy za dużo zamkniętych klamer. Brakuje otwartej. Spis krytycznych błędów: fatal error 100: cannot read from file: "Nazwa" Błąd oznacza, że dodaliśmy jakiś nieistniejący include. Plik "Nazwa.inc" powinien być w folderze "include", który znajduje się w folderze z Pawno. Radzę uważnie sprawdzać czym kompilujemy, bo możemy posiadać include w jednym, a kompilować drugim. fatal error 107: too many error messages on one line Błąd oznacza, że mamy zbyt dużo błędów w jednej linii. Zazwyczaj są one wyświetlone przed przerwaniem pracy kompilatora. Po usunięciu tego błędu jest możliwość pojawienia się kolejnych (bo kompilator dalej nie pracuje). Spis ostrzeżeń: warning 201: redefinition of constant/macro (symbol "Nazwa") Oznacza, że dwa razy zdefiniowaliśmy to samo, ale inaczej.
//Nie będzie ostrzeżenia
#define C_RED 0xFF0000FF
#define C_RED 0xFF0000FF

//Będzie ostrzeżenie
#define C_RED 0xFF0000FF
#define C_RED 0xFFFFFFFF
warning 202: number of arguments does not match definition Oznacza, że podaliśmy za mało lub za dużo argumentów w danej linijce, w funkcji.
//Nie będzie ostrzeżenia
SendClientMessage(playerid, COLOR_RED, "Hello World!");

//Będzie ostrzeżenie
SendClientMessage(playerid, "Hello World!");
warning 203: symbol is never used: "Nazwa" Oznacza że ani razu nie użyliśmy danej zmiennej/tablicy/funkcji. warning 209: function "Nazwa" should return a value Oznacza że dana funkcja powinna zwracać jakąmś wartość. Występuje po wpisaniu np:
public OnGameModeInit()
{
    if(zmienna == 0)
    {
        return 1; 
    }
    //tu powinien też być return
}
warning 213: tag mismatch Oznacza, że użyliśmy złej zmiennej/tablicy. Czyli np. normalną zmienną, zamiast zmiennej liczby zmiennoprzecinkowej (z Float: na początku). Przykład wystąpienia:
new Angle; //Brakuje Float:
GetPlayerFacingAngle(playerid, Angle);
warning 217: loose indentation Błąd oznacza, że mamy źle poukładany kod.
//Poprawnie
if(GetPlayerWeapon(playerid == 23)
{
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid, 24, 300);
}
//Niepoprawnie
if(GetPlayerWeapon(playerid == 23)
{
  ResetPlayerWeapons(playerid);
      GivePlayerWeapon(playerid, 24, 300);
}
Błędu można się łatwo pozbyć dodając poniższy kod na początku GameModu/skryptu. Jednakże jest to nieprofesjonalne.
#pragma tabsize 0
warning 219: local variable "Nazwa" shadows a variable at a preceding level Błąd oznacza, że dana zmienna lokalna, została zdefiniowana poziom wyżej. Przykład wystąpienia:
new Nazwa;
public OnGameModeInit()
{
    new Nazwa; //Zdefiniowane wcześniej
    return 1;
}
warning 235: public function lacks forward declaration Oznacza, że dodaliśmy nowy public, nie definiując go. Każdy public musi zostać wcześniej zdefiniowany w taki sposób:
forward Nazwa(argumenty);

Zakończenie

Proszę o pisanie w temacie, które błędy jeszcze wyjaśnić ;p To zaraz się tym zajmę.

Wypisałem tylko te, co akurat mi przyszły do głowy.

Pozdrawiam, Minokon

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zapomniałeś o błędzie

error 001: expected token: ")", but found "{"
Oznacza jeśli np. w warunku brakuje nawiasu. Przykład:
if(IsPlayerConnected(playerid)
Brakuje nawiasu ')'.
if(IsPlayerConnected(playerid))

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

mi się pojawia ten

warning 202: number of arguments does not match definition

i chyba bład masz w jednym

u mnie takie cos jest w pawno

: error 017: undefined symbol "AttachObjectToVehicle"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

error 010: invalid function or declaration

W tym błędzie zazwyczaj chodzi o klamry, sprawdź dokładnie czy w funkcji którą wskazuje błąd jest tyle samo otwierających: {, jak i zamykających: }.

polecam używać licznik.pawno.pl.

===================================================================================================================
error 090: public functions may not return arrays (symbol cos tam) Funkcja jest public i nie może zwracać tablic. Rozwiązanie - usuń public przed funkcją.
===================================================================================================================

fatal error 100: cannot read from file: cos tam

Kompilator nie może odczytać danego pliku/bądź go w ogóle nie ma, jedyne wyjście z tej sytuacji to ściągnąć plik o podanej nazwie, wszystkie możliwe pliki include znajdziesz na forum.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A jeżeli jest taki warning:

warning 208: function with tag result used before definition, forcing reparse

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@CRX funkcja z tagiem czyli Float: File: etc. musi być zdefiniowana przed jej wykonaniem, to znaczy na górze mapy najlepiej to wklej (całą funkcję wraz z { } etc.)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

error 047: array sizes do not match, or destination array is too small
Oto linijka z błędem:
PlayerInfo[playerid][pHaslo] = dj(UFile, "Haslo");
W strukturze ‘pInfo’ postanowiłem powiększyć pole pHaslo do 5000 znaków, lecz ten błąd dalej występował. Co na to zaradzić? Tak wygląda enum:
 enum pInfo
{
	pHaslo[32],
	pAdministrator,
	pDutyA,
	pReg,
	pMoney,
	pKicks,
	pWarns,
	pGodziny,
	pMinuty,
	pSekundy,
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To nie jest temat w którym rozwiązuje się błędy, możesz co najwyżej zasugerować dodanie danego błędu do pierwszego postu.

Odpowiadanie na takie pytania w tym temacie zostanie uznane za offtopic i ukarane.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ogólnie przydało by się napisać nowy taki temat bo Minokon chyba rzadko tu zagląda

co do wyjaśnienia twojego błędu to tablica docelowa jest za mała, bo przepisujesz do niej wartości z tablicy większej, zobacz jaką wielkość ma tablica która zwraca ten wynik w pliku .inc lub lepiej użyj po prostu funkcji format lub jeśli tablica jest na pewno pusta strcat

@gr56 sorry ale ten temat i tak jest już zasyfiony że się tak wyrażę

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ogólnie przydało by się napisać nowy taki temat bo Minokon chyba rzadko tu zagląda

co do wyjaśnienia twojego błędu to tablica docelowa jest za mała, bo przepisujesz do niej wartości z tablicy większej, zobacz jaką wielkość ma tablica która zwraca ten wynik w pliku .inc lub lepiej użyj po prostu funkcji format lub jeśli tablica jest na pewno pusta strcat

@gr56 sorry ale ten temat i tak jest już zasyfiony że się tak wyrażę

No to napisz nowy temat, dopóki nie będzie lepszego ten będzie przyklejony.

PS:

Dostajesz 5% ostrzeżenia za zignorowanie tego co napisałem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przepraszam, że się czepiam, może nie mam racji, może coś przeoczyłem, ale spójrzcie na to: (pierwszy post)

Error - zwykły błąd, umożliwiający kompilację. Numery błędów tego typu są numerowane od 1 do 99.

Umożliwiający?

//PKua:

Poprawię na

nie przerywający dalszej kompilacji

Lepiej brzmi

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

O co chodzi w warnie nr 204:

J:\Mój server samp\Moje skrypty\MAPA\mapa.pwn(173) : warning 204: symbol is assigned a value that is never used: "objazdlslot"
J:\Mój server samp\Moje skrypty\MAPA\mapa.pwn(23) : warning 204: symbol is assigned a value that is never used: "trs"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


2 Warnings.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tłumaczenie z głowy:

Ostrzeżenie nr 204: Symbol z przypisaną wartością nie został nigdzie użyty: "nazwa_symbolu"

Oznacza to, że stworzyłeś tablicę/zmienną, do której przypisałeś jakąś wartość i nigdzie jej nie użyłeś.

Możesz to zignorować, użyć odpowiedniej dyrektywy lub usunąć te symbole.

Ta dyrektywa to:

#pragma unused objazdslot
#pragma unused trs

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja natomiast mam 26 errorów 036 gdy wstawiam ten kod:

CreateVehicle(515, -2102.7456054688, -197.3487701416, 36.474033355713, 90,108, 108, -1);
CreateVehicle(515, -2102.8168945313, -202.59831237793, 36.474033355713, 90,108, 108, -1);;
CreateVehicle(515, -2102.8220214844, -208.34765625, 36.474033355713, 90,108, 108, -1);;
CreateVehicle(515, -2102.8264160156, -213.59765625, 36.474033355713, 90,108, 108, -1);;
CreateVehicle(515, -2102.8312988281, -218.84765625, 36.474033355713, 90,108, 108, -1);;
CreateVehicle(515, -2102.8361816406, -224.09765625, 36.474033355713, 90,108, 108, -1);;
CreateVehicle(403, -2102.2299804688, -229.13087463379, 36.020313262939, 90,108, 108, -1);;
CreateVehicle(403, -2102.25, -233.6309967041, 36.020313262939, 90,108, 108, -1);;
CreateVehicle(403, -2102.25390625, -238.380859375, 36.020313262939, 90,108, 108, -1);;
CreateVehicle(403, -2102.2687988281, -242.88108825684, 36.020313262939, 90,108, 108, -1);;
CreateVehicle(403, -2102.2734375, -247.63108825684, 36.020313262939, 90,108, 108, -1);;
CreateVehicle(403, -2102.2824707031, -252.1311340332, 36.020313262939, 90,108, 108, -1);;
CreateVehicle(514, -2103.1057128906, -256.72650146484, 36.019989013672, 90,108, 108, -1);;
CreateVehicle(514, -2103.1137695313, -261.22595214844, 36.019989013672, 90,108, 108, -1);;
CreateVehicle(514, -2103.1298828125, -265.72613525391, 36.019989013672, 90,108, 108, -1);;
CreateVehicle(514, -2103.1335449219, -270.22613525391, 36.019989013672, 90,108, 108, -1);;
CreateVehicle(514, -2103.142578125, -274.47619628906, 36.019989013672, 90,108, 108, -1);;
CreateVehicle(514, -2103.0546875, -278.724609375, 36.019989013672, 90,108, 108, -1);;
CreateVehicle(591, -2117.6845703125, -112.57070922852, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6750488281, -115.8203125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6645507813, -119.3203125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6538085938, -122.8203125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6423339844, -126.5703125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6313476563, -130.0703125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6206054688, -133.5703125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6105957031, -136.8203125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.6000976563, -140.3203125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(591, -2117.5886230469, -144.0703125, 35.5703125, 90,108, 108, -1);;
CreateVehicle(450, -2153.0144042969, -173.96502685547, 35.5703125, 270,108, 108, -1);;
CreateVehicle(450, -2152.2238769531, -169.76666259766, 35.5703125, 270,108, 108, -1);;
CreateVehicle(450, -2150.8544921875, -165.97470092773, 35.5703125, 270,108, 108, -1);;
CreateVehicle(450, -2150.3103027344, -161.81927490234, 35.5703125, 270,108, 108, -1);;
CreateVehicle(450, -2150.1845703125, -157.8203125, 35.5703125, 270,108, 108, -1);;
CreateVehicle(584, -2159.4458007813, -192.1722869873, 36.0703125, 90,108, 108, -1);;
CreateVehicle(584, -2159.34375, -195.42028808594, 36.0703125, 90,108, 108, -1);;
CreateVehicle(584, -2159.234375, -198.91821289063, 36.0703125, 90,108, 108, -1);;
CreateVehicle(584, -2170.6313476563, -214.20855712891, 36.0703125, 270,108, 108, -1);;
CreateVehicle(584, -2170.6965332031, -217.4705657959, 36.0703125, 270,108, 108, -1);;
CreateVehicle(584, -2170.8679199219, -220.97009277344, 36.0703125, 270,108, 108, -1);;
CreateVehicle(584, -2170.8017578125, -210.71228027344, 36.0703125, 270,108, 108, -1);;
CreateVehicle(435, -2150.4157714844, -108.04334259033, 35.890312194824, 270,108, 108, -1);;
CreateVehicle(435, -2150.5029296875, -104.29399871826, 35.890312194824, 270,108, 108, -1);;
CreateVehicle(435, -2150.5908203125, -100.54497528076, 35.890312194824, 270,108, 108, -1);;
CreateVehicle(435, -2099.0354003906, -86.432090759277, 35.897342681885, 180,108, 108, -1);;
CreateVehicle(435, -2102.2912597656, -86.402435302734, 35.897342681885, 180,108, 108, -1);;
CreateVehicle(435, -2105.541015625, -86.409233093262, 35.897342681885, 180,108, 108, -1);;
CreateVehicle(435, -2109.041015625, -86.516311645508, 35.897342681885, 180,108, 108, -1);;
CreateVehicle(435, -2112.291015625, -86.615104675293, 35.897342681885, 180,108, 108, -1);;
CreateVehicle(435, -2115.541015625, -86.713737487793, 35.897342681885, 180,108, 108, -1);;
CreateVehicle(435, -2118.791015625, -86.812370300293, 35.897342681885, 180,108, 108, -1);;
A błędy są takie:
H:\Moje skrypty\Mapa\mapa.pwn(411) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(412) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(413) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(414) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(415) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(416) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(417) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(418) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(419) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(420) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(421) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(422) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(423) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(424) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(425) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(426) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(427) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(428) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(429) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(430) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(431) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(432) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(433) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(434) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(435) : error 036: empty statement
H:\Moje skrypty\Mapa\mapa.pwn(436) : error 036: empty statement

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


26 Errors.

Jak mam się pozbyć tych błędów ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×