Spring naar: Inleiding - Errornummer 50 - Reactie knop / tekstvak voor snelle reactie1)
Unexpected symbol in expression.Dit kan een aantal oorzaken hebben:
- Je hebt een foutje gemaakt met {, }, ( of ). Ook kan het zijn dat je }else{ verkeerd hebt staan. Bijv:
if( i==10 )
{
show_message("10");
}
else
{
show_message("niet 10");
}
else
{
show_message("Ook niet 10");
}
Die tweede else kan natuurlijk niet, en dit staat hier behoorlijk stom, maar als je een minder overzichtelijke en complexere code hebt kan het gebeuren.
Andere mogelijke fouten:
if keyboard_check(vk_escape)){ ... } //een ) te veel aangezien je bij het begin van het if-statement geen ( gebruikt
if(a==2){if(b>3){ ... }}} //een } te veel
if(a==2) ... } //een { vergeten aan het begin
if a!==2 //!= kan, maar !== niet (kan bijv. wel in PHP maar in GML niet)
Het kan overigens zijn dat het een afwijking heeft met de positie;
if a==2 then a=2; //werkt
if a==2) then a=2; //error at position 8
if a==2( then a=2; //error at position 10
Het kan dus zelfs voorkomen dat je een regel eerder moet kijken.
- Je bent achter
var var1,var2 een
; vergeten. Daarom is het trouwens beter overal ;'s te gebruiken na een statement, kun je ze nooit vergeten als het opeens toch nodig is.
- Operators worden niet op de juiste manier gebruikt. Een
assignment operator zoals bijvoorbeeld
-= of
+= werkt niet binnen een expressie. De volgende voorbeelden zullen dus deze error produceren:
variabele = 12 -= 3; //om af te trekken, gebruik - zonder = teken
variabele += (100+x) /= y; //om te delen, gebruik / zonder = teken
variabele = (10:=12); //om te delen, gebruik / in plaats van : (en ook geen = teken dus)
Overigens, de complete regel code heet een statement, en het deel achter de
variabele= of
variabele+= is een expressie (of beter gezegd, het deel achter de assignment operator).
- Je hebt een keyword op de verkeerde plaats staan, zoals
not als argument in een functie (
instance_change(obj_x, not); moet
instance_change(obj_x, false); zijn).
2)
Wrong number of arguments to function or script.Dit is een fout aantal 'dingen' die je tussen haakjes achter een functie hebt gezet. Dus bijvoorbeeld instance_destroy() heeft geen argumenten (er moet niks tussen de haakjes). Als je dan
instance_destroy(obj_auto) doet krijg je die foutmelding.
Ander voorbeeld
draw_text(x,y,string) moet iets zijn als
draw_text(100,50,"TEKST"). Als je dan
draw_text(100,50,"TEKST",10) intypt krijg je deze error ook.
3)
Error in function real().Dit betekent dat een string-variabele geen getal kan zijn. Het kan voorkomen bij
getal = get_string("Vul een getal in:", "")
Als de gebruiker geen getal invult, of een letter of iets anders erbij is het geen getal. Dan geeft dus
real(getal) de foutmelding.
Als je de variabele op een andere manier 'genereert' kan het ook voorkomen dat
abc="12x". Dan geeft
real(abc) een error. Met
het script is_valid_real van BlueMoonProductions kun je kijken of het een geldig getal is:
if( is_valid_real(abc) )
{
abcAlsGetal = real(abc);
}
else
{
show_message("De variabele abc is geen geldig getal!");
}
(Let op: Je moet dus een nieuw script aanmaken, het de naam geven
is_valid_real, en in de inhoud die tutorial van BlueMoonProductions zetten).
Update: De tekst hierboven klopt nu, eerst stond er is_real in plaats van is_valid_real. Echter,
is_real("5") geeft false! Dit zijn een paar voorbeelden van hoe het werkt:
is_real( 1 ); //geeft true terug
is_real( "1" ); //geeft false terug
is_valid_real( "1" ); //geeft true terug
is_real( "-10.1" ); //false
is_valid_real( "-10.1" ); //true
is_real( "-10.1.1" ); //false
is_valid_real( "-10.1.1" ); //false
Mocht het verschil tussen
is_valid_real en
string_digits niet helemaal duidelijk zijn, zie
deze reactie van mij in het topic over het script (mocht het niet goed doorlinken, ik heb het over antwoord nummer 16).
4)
Unknown variable <varnaam> or array index out of boundsOf de variable players bestaat niet, of de index* is zo groot dat het niet in de array past. De index kan tot 32000 gaan dus dat laatste is onwaarschijnlijk.
*index is dus het getal tussen []:
asdf[INDEX]=10;Zorg er dus voor dat je in het create event
varnaam[0]=0; (of andere waarde) hebt staan (treat uninitialized variables as 0 in de global game settings lost het ook op, maar het wordt afgeraden dit te gebruiken).
edit: Het kan ook zijn dat je gewoon vergeten bent om het object in de room te zetten, en het daarom niet herkend wordt.
5)
Negative array indexDe index van een array is negatief. vb.
asdf[-1]=1; kan niet.
6)
Unknown variable <varnaam>Dit kan een aantal oorzaken hebben:
- [D&D] Je hebt relative aangevinkt bij het aanmaken/instellen van de variabele. Je kan relative alleen gebruiken bij een variabele die al bestaat, in het create event meestal niet.
- Controleer of je de variabele goed gespeld hebt, kopieer eventueel de variabelenaam zodat je geen kleine foutjes over het hoofd ziet (ik heb wel eens 10 minuten zitten debuggen op
recieved in plaats van
received :p)
[Vanaf hier gaat de rest meer over GML, maar als de bovenstaande punten niet hielpen kun je hieronder toch even doorlezen om te kijken of het dat misschien is]
- Je hebt de variabele die op de plek <varnaam> staat nog niet ingesteld. Vaak werkt het door in het create event van het betreffende object
<varnaam>=0; te zetten. Hierdoor krijgt de variabele een waarde (0), en zal hij niet meer als onbekend aangemerkt worden.
- Als je
var test; gebruikt kun je niet direct
test+=1; doen, aangezien test wel aangemaakt is maar nog geen waarde heeft. Je moet het voorstellen als dat een stukje in het geheugen gereserveerd wordt, maar nog niks erin staat. Je zou immers kunnen zeggen dat 'leeg' dus "" is (lege tekst), maar het kan ook 0 zijn. Aangezien je het geen waarde hebt gegeven, weet het niet wat het is.
- Als je
objectnaam.variabelenaam gebruikt, controleer of het object wel in de room staat. Dit kan bijvoorbeeld als volgt:
if( instance_exists(objectnaam) )
{
//doe wat je wilde doen
}
else
{
show_message("Error: objectnaam staat niet in de room!");
}
Natuurlijk is dit alleen om te testen of je code nu wel werkt. Het staat een beetje stom als je iemand anders z'n spel download en je krijgt zo'n foutmelding!
- Ook kan bijvoorbeeld zijn dat je een bestandsnaam of URL zonder aanhalingstekens gebruikt, bijvoorbeeld:
ini_open(voorbeeld.ini);
//voorbeeld.ini is geen variabele, en er moet een string staan. Dus met "" erom:
ini_open("voorbeeld.ini");
//Wat eventueel ook kan:
bestandsnaam = "voorbeeld.ini";
ini_open( bestandsnaam );
- Bij variable_...-functies een variabele in plaats van string ingevuld:
variable_local_set(global.test, 0);
//moet zijn:
variable_local_set("global.test", 0);
//nu zet hij variabele met de naam 'global.test' op 0.
//omdat je >de naam< moet opgeven moet het dus een string zijn, en geen variabele
7)
Cannot assign to the variableKan de variabele niet toewijzen. Bijvoorbeeld dingen als
x = "a"; kunnen niet want "a" is geen positie op het scherm.
(kan wel a zijn zonder "", als a een getal is (
a=5;) )
Sommige variables kunnen ook niet aangepast worden (bijvoorbeeld mouse_x, zoiets heet een read-only variable (alleen-lezen variabele)), dan krijg je ook deze error.
8)
error creating stand-alone: cannot find the required dllsAls je zeker weet dat de DLL's nog staan waar ze stonden toen je ze eerst toevoegde ('includde') en de gmk ook niet verplaatst is, is het een interne fout in Game Maker waar je weinig aan kan doen. Ik heb de error nooit gezien en het topic erover is niet opgelost, maar misschien werkt gamemaker opnieuw installeren.
9)
Cannot compare arguments.Kan de argumenten niet vergelijken. Bijv als je hebt
if( naam==0 )
{
//code
}
kan het zijn dat je deze fout krijgt (aangenomen dat naam een string bevat zoals 'piet'). Hierbij is ongeveer hetzelfde aan de hand als bij de real()-error: naam (of enige andere string-variabele) is geen getal, en kan daarmee dus niet vergeleken worden.
Andersom gaat ook niet, if(getal=="abc") zal niet werken als getal een integer/real is.
Dit is een fout die ik net tegenkwam:
target = instance_nearest(x, y, object6);
if( target != "" )
{
//knip
}
Aangezien instance_nearest het instance ID teruggeeft, kan het niet vergeleken worden met een lege string (tekst). Het id is een getal.
Het makkelijkste is dit op te lossen door beide waarden een string te maken:
if( string(getal) == "abc" )
{
//code
}
Let hier ook op als je een ini uitleest, je kan het resultaat van een ini_read_string natuurlijk niet kunnen vergelijken met een getal (of omgekeerd een ini_read_real met tekst vergelijken).
Spring naar: Inleiding - Errornummer 1 - Errornummer 50 - Reactie knop / tekstvak voor snelle reactie
10)
Variable/Function name expectedDit kan vanalles zijn. Het meest voorkomende is dat je een objectnaam hetzelfde hebt als een variabele of functie.
Bijvoorbeeld je hebt een object speler, maar ook de variabele van de naam van de speler heet ook speler. Dan weet de game niet of het over het object gaat of de variabele.
Ook kan het zijn dat de naam 'ongeldig' is waardoor het niet wordt herkend als zodanig, of je hebt er iets anders gezet als variabele/functie. De eisen voor een variabele staan in de handleiding:
A variable has a name that must start with a letter and can contain only letters, numbers, and the underscore symbol '_'. (The maximal length is 64 symbols.)
Vertaling: Een variabele naam moet beginnen met een letter, en kan alleen letters, cijfers en een underscore (laag streepje '_') bevatten. De maximale lengte is 64 tekens.
Een voorbeeld van wat ik zelf had:
global.player.x probeerde ik uit te lezen, maar dat gaf deze error. Bleek dat degene waarmee ik samenwerkte een sprite
player had aangemaakt, waardoor dus het als een resource gezien werd in plaats van variabele naam. Het is vrij makkelijk te herkennen als je er even op let: in je code krijgen resources altijd een apart kleurtje, dus als een deel van je variabele een vreemde kleur krijgt weet je dat er een gelijknamige resources is.
Tip: gebruik altijd dingen als
sprPlayer of
spr_player voor resource namen (spr voor sprites, obj voor objects, rm voor rooms, enzovoorts), dan kan dit nooit verkeerd lopen.
11)
Symbol , or ) expected.'Je bent een ) of , vergeten.' Oplossing: controleer je script of je niet ergens een ) of , vergeten bent..
Maar dit klopt vaak niet, er kan hierbij heel veel aan de hand zijn waar GM niet op bedacht is. Hier een voorbeeld wat ik ben tegengekomen op het forum:
obj=instance_create(x+=0,y+=0,obj_bullet);In een functie kun je geen variabelen bewerken (wat x+=0 doet). x+0 kan wel, al heeft dat dezelfde uitwerking als x. (x+y is een realistischer voorbeeld, maar x+=y kan dus ook niet binnen een functie).
Nog een voorbeeld:
draw_text(64x,48y,string(global.naam))
64x is wiskundig goed, maar in programmeertaal moet het 64*x zijn.
En nog een:
draw_text draw_text (x,y,"lives:" lives)moge duidelijk zijn, driemaal zelfs

-draw_text draw_text kan niet,
-(x,y,"lives:" lives) kan niet,
-en variabele lives is geen string maar een integer (getal/real).
Moet dus zijn draw_text(x,y,"lives: "+string(lives))
Tot slot het laatste voorbeeld:
draw_sprite(spr_pistool,0,obj_speler.x,obj_speler.y,)Achter de laatste obj_speler.y moet de komma weg.
Er zijn nog veel meer voorbeelden te bedenken, maar daarover zou je een heel nieuwe topic kunnen starten.
12)
File is not opened for reading.Bestand is niet geopend om te lezen. Voorbeeld van fout:
file_text_open_write("...\Bureaublad\Hoi.txt")
file_text_write_string("...\Bureaublad\Hoi.txt", "Hoi")
file_text_close("...\Bureaublad\Hoi.txt")
file_text_open_write, geeft een fileid terug. Hiermee moet je dan gaan werken.
dus:
file = file_text_open_write("...\Bureaublad\Hoi.txt")
file_text_write_string(file, "Hoi")
file_text_close(file)
Ook kan het voorkomen dat je gewoon vergeten bent het bestand te openen.
13)
Trying to close unexisting text file.Probeert een nietbestaand bestand te sluiten.
Vrijwel zelfde probleem als vorige error.
14)
Wrong type of arguments to .. .Verkeerd type argument voor .. .
'..' kan zijn +, -, /, *, div, mod, &&, ||, ^^, |, &, ^, << en >>.
Bijvoorbeeld
var="lol"+12; kan niet omdat 12 en "lol" andere type variabelen/gegevens zijn (namelijk 12 is een getal en "lol" is string (=tekst)).
Oplossing:
var="lol"+string(12); of
var="lol"+"12";
15)
Unknown function or scriptDit betekent dat de functie of het script dat je probeert aan te roepen dat niet bestaat. Bijvoorbeeld had ooit iemand het probleem met If. De oplossing was dat If met een kleine letter moest

(trouwens ook de meest lullige fout die ik ken

).
Andere oplossingen kunnen zijn typfoutjes verbeteren, het script aanmaken, of het kan zijn dat je de naam van de functie verkeerd had onthouden.
16)
Error defining an external functionError bij het definiëren van een functie in een DLL, dit kan komen door:
- De DLL staat niet in de juiste map, of heeft een andere naam;
- De DLL bevat de functie die je probeert de definiëren niet, dit is dan een fout van de maker;
- Een variabele die je gebruikt bij het definiëren is al in gebruik als constante.
17)
Unexpected error occured when running the gameDit is de ergste error die er is. Je weet hiermee namelijk helemaal niets. Het betekent dat er intern in Game Maker een error is ontstaan, waarmee Game Maker geen rekening had gehouden. Soms kan je het oplossen door na te gaan wanneer de error voorkomt, of welk stuk code de error veroorzaakt.
"An unexpected error occured when running the game" betekent eigenlijk gewoon: Er is een error, maar ik weet niet zeker wat er is misgelopen of waar het is misgelopen. Dit komt omdat game maker zelf niet alle errors kan voorzien. In de meeste gevallen ziet Game Maker zelf in dat iets niet kan (bijvoorbeeld als je een getal probeert te delen door nul), maar soms vergeet Game Maker iets. Dit heeft dan als resultaat dat het programma vastloopt.
Bijna alle oorzaken gaat uiteindelijk bijna altijd over teveel RAM gebruik. Zoek dus eerst eens of je spel niet ergens per ongeluk een oneindige loop heeft, waardoor er ergens oneindig veel instances of oneindig grote arrays/data structures gemaakt worden.
Lijst met bekende oorzaken:
- Dlls en extensies:
Als er een fout gebeurt in een DLL, dan zal dat er in game maker uitzien als een 'unexpected error occured' error. Controleer dus eerst of de fout niet bij de Dlls of de extensies zit, voor je verder zoekt.
- Teveel resources gebruiken met de 'preload' checkbox aan:
Zet de checkbox uit bij de dingen die te groot zijn (voornamelijk backgrounds en muziek, en zeer grote sprites).
- Array index groter dan 32000:
In de meeste omstandigheden geeft dit een errorbericht 'array index >= 32000' maar in sommige andere omstandigheden gaat het spel eerst zeer veel RAM gebruiken, om vervolgens de 'unexpected error occured' error te geven.
- In d3d_set_projection_ext de angle of aspect op 0 zetten:
Als angle of aspect 0 is, zal DirectX een error geven, wat in game maker een 'unexpected error' geeft.
- Een te lang getal gebruiken:
In sommige omstandigheden zal dit een 'unexpected error occured' error geven. Maar dit gebeurt pas vanaf getallen met 20+ cijfers, dus dit is niet vaak de oorzaak.
Er is ook een variant op deze error. Als de fout zich voordoet tijdens het starten van je spel (dus bij het laden of in een create event) krijg je meestal deze error. Maar als dit gebeurt tijdens de rest van het spel, kan er ook iets anders gebeuren: Game Maker stopt gewoon met het verder uitvoeren van het script en gaat meteen verder met het volgende script. (Vergelijkbaar met het exit commando, maar in dit geval zal Game Maker het geheugen dat in het script gebruikt werd niet wissen, waardoor je merkt dat het spel steeds meer RAM gebruikt.) Of nog erger: het stopt met het uitvoeren van de huidige step en gaat meteen door naar de volgende. Meestal lijkt het alsof het spel plots veel te snel gaat maar het beeld zal niet meer werken (maar je hoort bijvoorbeeld nog wel het geluid, dat veel te snel gaat).
Ook kan het zijn dat je bij ini bestanden het tweede argument ('key') als getal hebt in plaats van als string, of als het een lege string is. Misschien dat hetzelfde geld voor het eerste argument ('chapter'), mocht iemand een unexpected error krijgen check dit voor de zekerheid ook.
En tot slot is nog een bekende oorzaak wanneer je een
ini_write_* functie gebruikt op een bestand dat door een ander proces in gebruik is. Dit gebeurt bijvoorbeeld wanneer je twee executables in dezelfde map runt met de volgende code:
//executable1.exe
file_text_open_write("test.ini");
//executable2.exe
ini_open("test.ini");
while (true) { //voor altijd
ini_write_string("testgame", "key", "waarde");
}
Dan zal de tweede executable een unexpected error geven omdat gamemaker het niet goed afhandelt wanneer een ini_write functie faalt - en deze faalt omdat die file_open_write het bestand markeert als 'in gebruik' tot je file_close gebruikt.
Stel dat je executable1.exe tweemaal runt, dan zal de tweede "error opening file for writing" of iets dergelijks geven. Errors met file_ functies worden wel goed afgehandeld.
18)
.. by 0.. kan division, of modulo zijn.
Division kan komen door delen door 0, of door
div gebruiken in combinatie met 0:
getal = get_integer("Getal?", 0); //vraagt een getal, 0 is standaard
//als niks of 0 wordt ingevuld zullen de volgende functies dus de error geven:
a = 1/getal;
b = 1 div getal;
Modulo is dus als je
mod gebruikt in combinatie met 0:
c = 1 mod getal;
Makkelijk op te lossen met:
if(variable!=0){/*uit te voeren code*/}
//oftewel:
getal = get_integer("Getal?", 0);
if( getal != 0 )
{
a = 1/getal;
b = 1 div getal;
c = 1 mod getal;
}
else
{
show_message("0 kan niet!");
}
19)
Wrong type of arguments to unary operatorVerkeerd type argumenten voor een unaire operator. Meestal is het wat Erik Leppen hier uitlegt:
Een unaire operator is een operator met maar één argument. Dit in tegenstelling tot een binaire operator, die twee argumenten heeft. Dat heeft niets met binair rekenen te maken, maar simpelweg met het feit dat bi = 2. Hetzelfde geldt voor un = 1. Een voorbeeld van een binaire operator is + (optellen); je hebt A + B en je moet dus twee dingen opgeven om op te tellen; de operator + heeft dus twee argumenten (die dan worden opgeteld). Een unaire operator heeft maar één argument. Eentje die ik kan verzinnen is - (negatief, niet aftrekken), want de uitdrukking is -A en dat heeft maar één argument, en not (ontkenning) want de uitdrukking is not A en dat heeft maar één argument. Maar er zijn er vast nog meer (zie handleiding, bij iets als "operators"). Merk op dat GM onderscheid maakt tussen operator en function, want random() heeft ook maar één argument, maar valt in GM onder de categorie van functies en niet die van de operatoren.
En deze foutmelding zegt dus dat dat ene argument dat je hebt gebruikt van het verkeerde type is. Bijvoorbeeld de code not "hoi" geeft een foutmelding, want je kunt een string niet ontkennen want er is geen true of false aan een string te koppelen.
Een afgeleide hiervan is als je bijvoorbeeld deze code probeert te gebruiken:
if not vari="abc" then {}
Het zal proberen te doen:
Als (niet vari) gelijk is aan ("abc") dan ...Maar wat je wilt dat het doet is:
Als niet ((vari) is gelijk aan ("abc")) dan ...Dan zal het namelijk kijken of vari niet "abc" is. De code hiervoor is:
if not (vari="abc") then {}
Spring naar: Inleiding - Errornummer 1 - Errornummer 50 - Reactie knop / tekstvak voor snelle reactie
20)
Video file not found (or name too long).'Video niet gevonden (of naam te lang).'
Zorg dat het bestand altijd in dezelfde map staat als de game, en het een niet te lange naam heeft. In de handleiding staat echter niet hoelang het maximaal mag zijn, maar normaal hoef je geen duizenden video's te hebben. Een paar letters zullen dus altijd volstaan voor unieke bestandsnamen.
21)
Runtime errorDeze error geeft net als bij 'unexpected error occured when running the game' zeer weinig informatie. Je zal waarschijnlijk stukje voor stukje je code na moeten gaan om te kijken waar het probleem zit.
Het is in ieder geval geen syntax fout en waarschijnlijk ook geen dll fout.
22)
Wrong type of array indexJe kan geen string gebruiken voor een array index.
//Fout:
array["nul"] = 10; //"nul" kan niet gebruikt worden als array index
array["0"] = 10; //0 staat nog altijd tussen "" dus kan niet gebruikt worden omdat het een string is
//Goed:
array[0] = 10;
//Dit kan ook:
nul = 0;
array[nul] = 10; //nul zonder aanhalingstekens wordt behandeld als variabele
//dus omdat de variabele op 0 gezet is zal het array nummer 0 uitlezen
23)
Failed to initalize drawing surfacesDit is hoogstwaarschijnlijk als je videokaart (ookwel grafische kaart) de surfaces niet aankan. Wat je kan proberen is je computer herstarten, of een stappenplan van Matrebatre:
- klik met de rechtermuisknop op het bureaublad en kies eigenschappen
- ga naar het tabblad 'instellingen'
- druk op de knop 'geavanceerd'
- ga naar het tabblad 'probleem oplossen'
- schuif de hardwareversnelling meter volledig naar rechts
- herstart de computer
Probeer het daarna nog eens.
Een andere tip van tristanb is even
hier of op de site van je videokaart kijken voor de laatste drivers van je videokaart.
Nog een oplossing (die schijnbaar ook in de error vermeld wordt) is de schermresolutie lager zetten:
Rechtsklikken op bureaublad (naast een icoontje dus), naar het tabblad instellingen gaan, en de schermresolutie lager schuiven.
Als het allemaal niet helpt kun je proberen te downgraden naar GameMaker 6 of zelfs 5. Je hebt dan natuurlijk een stuk minder functionaliteit, maar voor die ene game kan het werken.
24)
Assignment operator expected.Betekent meestal '= teken verwacht'.
Ergens staat waarschijnlijk een typfoutje of code die niet bestaat. Let op dingen als spaties in (resource* of variabele) namen, variabelen met dezelfde naam als een resource (of omgekeerd), en of je geen haakjes vergeten bent achter functies (dus '()' ). Ook kan het zijn dat je in één event tweemaal
var gebruikt (dit mag slechts eenmaal), of dat je
var 1; gebruikt wat niet kan aangezien je een variabele probeert te maken en variabelen geen getallen mogen zijn.
*resource is wat links in de 'resource tree' staat, sprites, backgrounds, sounds, fonts, rooms, objecten, etc.
25)
Program ends before end of the code.Als je execute a piece of code begint met
{, en je achter de laatste
} nog code hebt staan komt deze error. Bijvoorbeeld:
{
//code
}
//meer code
Die 'meer code' mag niet omdat het buiten de laatste
} staat, dus buiten het einde van het script.
Hoe dus op te lossen? Gewoon die laatste code binnen de
} zetten, of het script niet beginnen met een
{ (het is namelijk niet verplicht).
Ook kan het zijn dat je
while(a==b) zonder iets erachter gebruikt, of een ander statement waar iets achter móet (if, for, repeat of else).
26)
Cannot apply sqrt to negative number.sqrt betekent square root, vertaald naar het Nederlands vierkantswortel. Aangezien een wortel het tegenovergestelde is van een kwadraat, kan het niet negatief zijn. Probeer maar eens een negatief getal te maken uit een kwadraat!
Dus om de error op te lossen gewoon zorgen dat het niet negatief kan zijn, of een if-voorwaarde eraan stellen.
if( x>0 )
{
sqrt(x);
}
27)
Failed to run the gameDit is een hele vervelende error. 'Kon het spel niet uitvoeren' zegt uitermate weinig, en het kan vanalles zijn. Soms ligt het aan gamemaker zelf; als je in plaats van op de play knop drukt een executable maakt werkt het vaak wel.
Als je trouwens eerder error nummer 83 ('error saving the game') hebt gekregen en dan probeert de game te runnen, krijg je ook deze error. Gamemaker probeert de 'working directory' (zie handleiding) op die map in te stellen, en als je daar geen rechten hebt werkt dat dus niet.
Ook vaak is het probleem verholpen zodra gamemaker herstart wordt (afgesloten en weer geopend dus). Vergeet je werk niet op te slaan, bij voorkeur in een tweede GMK in plaats van over het origineel heen (als dat al ging). Stel dat het opslaan ook een fout bevat is je hele game weg. Als alles na het opnieuw starten van gamemaker (of je hele computer) weer werkt kun je natuurlijk de originele naam weer gaan gebruiken.
28)
Array index >= 32000De index van de array is groter dan of gelijk aan 32000, en zoals de handleiding al noemt mag dit niet. De index van de array is dat wat tussen [ en ] staat. Dus bijvoorbeeld bij a[5] is '5' de index. De index kan ook een variabele zijn.
Om dit probleem op te lossen kun je een gewone variabele gebruiken in plaats van een array, maar let op dat je spel nu wel erg veel geheugen gebruikt.
Om een gewone variabele in te stellen kun je bijvoorbeeld dit doen:
variable_local_set("XX"+string( YY ),"ZZ");
Hierin is XX de arraynaam, YY wat normaal het arraynummer zou aangeven, en ZZ wat er achter het =-teken staat. Voorbeeld:
a[x]=y;
//vervang je dan door
variable_local_set("a"+string(x),y);
29)
Cannot open another file (maximum exceeded).Vertaling: Kan geen ander bestand openen (maximum overschreden).
Kort gezegd: je hebt al een aantal bestanden geopend via file functies, en daar kan geen meer bij.
Oplossing: gebruik file_close direct wanneer het mogelijk is. Je kan het later toch weer openen om verder in het bestand te werken.
Spring naar: Inleiding - Errornummer 1 - Errornummer 50 - Reactie knop / tekstvak voor snelle reactie
30)
Trying to set the room speed to a value <= 0.Vertaling: Probeert de room speed naar een waarde kleiner of gelijk aan 0 te zetten.
De roomspeed is wat de game probeert te halen in frames per seconde (fps). 0 zou pauze zijn en dat pikt 'ie kennelijk niet (dan zou het ook nooit meer verder kunnen, niks checkt wanneer het verder moet want alles ligt stil), en kleiner dan 0 is onmogelijk. Zelfs al ging de game achteruit dan is de framerate (fps) nog groter dan 0.
Oplossing: zorg dat de waarde waaraan je de room speed gelijk stelt nooit kleiner kan zijn dan 0. Voorbeeld:
//origineel
room_speed=level;
//oplossing
if( level>0 )
{
room_speed=level;
}
31)
Verzameling van de volgende errors:Error in function exp().
Error in function ln().
Error in function log2().
Error in function arcsin().
Error in function arctan2().
Error in function logn().
Dit zijn allemaal errors die komen doordat je iets met een van die wiskundige functies hebt geprobeert wat niet kan. Zoek in de handleiding of op internet op hoe de functie precies gebruikt moet worden. Als je er niet uit komt, post maar dan zet ik die even apart.
32)
Trying to rewrite unopened file.Vertaling: Probeert een ongeopend bestand opnieuw te schrijven.
Waarschijnlijk ben je gewoon vergeten het bestand te openen. Voor meer uitleg over files, zie
hier.
33)
File is not opened.Vertaling: Bestand is niet geopend.
Oplossing: Open het bestand voor je die file functie gebruikt. Voor meer uitleg over files, zie
hier.
34)
Default statement only allowed inside switch statement.Je probeert
default: ergens buiten een switch-statement te gebruiken.
Voorbeeld:
//goed
switch( health )
{
case 0: /*doe iets*/ break;
default: /*nogiets*/ break;
}
//fout
switch( health )
{
case 0: /*doe iets*/ break;
}
default: /*nogiets*/ break;
35)
Case statement only allowed inside switch statement.Zelfde als vorige error, maar dan met case in plaats van default. Zorg dat nergens losse case's rondzwerven!
36)
INTERNAL ERROR: Adding too many variablesVertaling: INTERNE ERROR: Teveel variabelen toe aan het voegen
Ik denk dat je gewoon de game lichter moet maken (zo min mogelijk resources en efficient werken), en minder variabelen gebruiken.
37)
Trying to .. a non-existing .. .Zorg ervoor dat de/het sprite/font/script/timeline/object/room/background/sound/path/surface/bestand/bitmap (altijd) bestaat en de variabele of naam goed is. Ook kan het probleem veroorzaakt worden door het niet goed inladen van een externe resource.
38)
Trying to save .. to empty image file name.Probeert .. (background, surface) op te slaan in een lege bestandsnaam.
Een bestand moet natuurlijk altijd een naam hebben, zorg dat als je een variabele gebruikt het geen lege string is.
39)
Trying to read/write from undefined INI fileJe moet een ini bestand openen met ini_open(bestandsnaam) voor je in dat ini kan lezen of schrijven. Dit moet er dus voor gebruiken van de ini-functies staan
filename="naam.ini";
ini_open(filename);
//of
ini_open("naam.ini");
Je kan wel op beide plekken waar naam.ini staat een eigen bestandsnaam invullen, maar laat de quotes ( " ) wel staan (overigens de naam hoeft niet te eindingen op .ini, het kan ook bla.pietjepuk zijn).
Voor meer informatie over ini bestanden kijk
hier.
Spring naar: Inleiding - Errornummer 1 - Errornummer 50 - Reactie knop / tekstvak voor snelle reactie
40)
Failed to create temp dir. This can cause serious problems with sounds, etc.Tijdelijke map kan niet worden aangemaakt waardoor grote problemen met geluid enzo kunnen ontstaan.
Het kan zijn dat de schijf beveiligd is tegen schrijven. Hier is denk ik niks aan te doen.
41)
Unexpected end of code reached.Dit komt voor als je achter bijvoorbeeld een if-voorwaarde iets bent vergeten te zetten. Bijvoorbeeld if(iets==true) geeft die error (als je er dus niks achter hebt staan). Het is simpelweg een half afgemaakt statement.
Hier is een lijstje waarbij het kan voorkomen:
if(..) zonder {} of iets erachter
do {} zonder until
repeat zonder {}
42)
This program must be run under Win32'Dit programma moet uitgevoerd worden onder Win32', wat zoveel betekent als dat je een moderne versie van Windows modig hebt om het programma uit te voeren.
43)
Error opening file for writing.'Fout bij het openen van bestand om in te schrijven.'
Je hebt hoogstwaarschijnlijk een van de volgende tekens in de bestandsnaam:
\ / : * ? < > |
Die mogen niet voorkomen in bestandsnamen, probeer maar eens in windows een bestand te hernoemen naar ??.?? ofzo, dan krijg je ook zo'n ballonnetje met dat je die tekens niet mag gebruiken. Het kan ook dat je probeert te schrijven naar een beveiligde plaats (bijvoorbeeld de C-schijf als de gebruiker geen administrator is, of als bij Windows Vista of 7 UAC ingeschakeld is).
44)
Error Creating Stand-Alone: Cannot find valid runner dataDit is een fout van Game Maker zelf, niet van het spel. Als de schijf of USB stick waarvanaf je gamemaker draait (tussendoor) uitgetrokken is zul je deze error krijgen (dus bijvoorbeeld als je gamemaker van een usbstick start, en dan je usbstick eruit hebt getrokken, krijg je de error).
Als het dat niet is kun je opnieuw installeren proberen.
45)
Trying to get texture from non-existing backgroundHet betekent dat je een functie hebt gebruikt (waarschijnlijk background_get_texture) waarin je dus bezig bent een texture te maken van een background. Alleen bestaat de background die jij hebt ingevuld niet.
46)
Keyword until expectedAls je
do { ... } gebruikt zonder
until. Dus NIET zo:
do
{
i+=1;
}
Maar zo:
do
{
i+=1;
}
until( i>10 )
47)
Symbol : expected.Je bent hoogstwaarschijnlijk achter
case <waarde> vergeten een : te zetten. Bijvoorbeeld:
//fout:
switch a
{
case 0 draw_background(background2); break;
case 1 draw_background(background3); break;
}
//goed
switch a
{
case 0: draw_background(background2); break;
case 1: draw_background(background3); break;
}
48)
Repeat count must be a numberBij het
repeat-statement moet je een getal in vullen.
//fout:
repeat("honderd"){ ... }
//fout:
repeat("100"){ ... }
//fout:
repeat( real("honderd") ){ ... } //geeft 'error in function real'
//goed:
repeat(100){ ... }
//goed:
repeat( real("100") ){ ... }
49)
Data structure with index does not exist.Data structuur met index bestaat niet.
Je probeert een datastructuur te benaderen die niet bestaat. Misschien vergeten aan te maken met ds_*_create(..)? De asteriks (dus de *) staat voor grid, queue, stack, list, map of priority. Kijk in je code welk type je probeert te benaderen, en welke je dus moet aanmaken.
Waarschijnlijk als je de error niet snapt ben je nog niet gevorderd genoeg om datastructuren te gebruiken. Vraag de schrijver van de code als je dit niet zelf bent hoe het werkt, probeer een simpelere manier (arrays), lees de handleiding over datastructuren of lees een tutorial erover.