Jump to content

[GTA IV|LUA]De basis


Recommended Posts

Geplaatst:

Lua



basis

1. Introductie

Ik ga jullie in deze tutorial proberen uit te leggen hoe Lua werkt. Ik ga uitleggen welke data types je hebt, hoe je ze gebruikt, vergelijkingen en hun operators, loops en de structuur van Lua. Gebruik deze tutorial alleen als je voor GTA 4 wil scripten, omdat ik me vooral richt op de functies die je daar voor gebruikt. Ik wens je veel succes, Lua is zeker niet ingewikkeld maar als je al wat ervaring hebt met scripting of programmeren maakt het het wel makkelijker dan als je het niet hebt. Desalniettemin is het goed te volgen voor beginners. Vragen m.b.t. Lua, die scripting taal, mag je hier posten.

GTAGames.nl afbeelding

2. Wat is Lua?

Het woord Lua betekent "maan" in het Portugees. Lua is een lichtgewichte scriptingtaal die gebruikt wordt voor applicaties maar vooral in games. Het is erg snel en object georiënteerd. Het is niet erg uitgebreid zodat het klein en compact blijft. Toch heeft het genoeg functies om goed missie scripts te maken. Lua scripts voor GTA 4 worden niet gecompiled. Dit houd in dat je ze gewoon met kladblok kan openen. Er is wel een mogelijkheid om ze te compileren. In GTA IV kan je Lua gebruiken door middel van Alice. Alice is gemaakt door Alexander Blade, hier staat zijn release topic. Wil je scripts maken in Lua, dan heb je dit nodig.

3. Werkomgeving

Om in Lua te scripten, is het wel handig een fijn programma te hebben die je code een bepaald kleurtje geeft en aanvulling geeft op bepaalde variabelen. Er is nog géén IDE ("Integrated Development Enviroment") voor Alice/Lua voor GTA 4. Er zijn wel wat Lua IDE's, maar dat is niet fijn om te gebruiken voor GTA IV. Ik vind Notepad++ het best om te gebruiken. Het heeft syntax highlighting en vult bepaalde dingen aan. Het heeft mooie lijntjes voor wanneer je een regel inspringt en het mooiste is dat het weer lichtgewicht is.

Geplaatst:

4. variabelen

Introductie

Een variabel kan je zien als een klein stukje uit je geheugen. In dit stukje geheugen kan je van alles opslaan. Je kan er tekst (string), een getal (number), een kommagetal (ook number) of een boolean (ja/nee, 1/0) in opslaan. Ook heb je "tables", dat is één variabele waar je meerdere waardes of variabelen in kan opslaan. Er zijn nog meer soorten variabelen, maar ik ga ze niet allemaal op noemen. In Lua kan je elke soort in elke variabele stoppen. Dit is lang niet zo in alle programmeertalen. Het is belangrijk in Lua (in elke programmeer/script -taal, eigenlijk) dat je weet wat wat is. Je kan namelijk bij functies niet een string invullen waar een number moet.

Lokaal en globaal

Je kan alle variabelen nog eens in twee groepen delen: globaal en lokaal. Globale variabelen kun je gebruiken in het hele script. Lokale variabelen kun je alleen gebruiken in de functie waar hij gedeclareerd is. Een globale variabele declaar je zo:

variabele = waarde

Waar "waarde" is wat de variabel moet gaan bevatten. Deze variabele kan je dus overal gebruiken; het zal altijd blijven bestaan. Een lokale variabele declareer je zó:

local variabele = waarde

Waar "waarde" is wat de variabel moet gaan bevatten. Het is belangrijk dat je onthoud dat wanneer je een variabele lokaal declareert, je het alleen kan aanpassen/gebruiken in de functie waarin je het gedeclareerd hebt. Probeer je het te gebruiken in een functie erbuiten, zal het een foutmelding geven dat hij de functie niet kent.

Zie de volgende 2 voorbeelden wat goed is en wat fout is. Je zal nog niet begrijpen hoe de functies werken, maar dat leg ik later uit. Het volgende script heeft 2 functies: main() en printMijnVariabele(). In printMijnVariabele() zit de functie: print(). Dit print de variabele die je erbij geeft (in dit geval: variabele). In de functie main wordt de variabele variabele gemaakt. Let op bij het 1ste, goede, voorbeeld het een globale variabele is en bij de 2de een lokale.

GOED

function printMijnVariabele()
  print(variabele)
end

function main()
   variabele = "Beagle"
   printMijnVariabele()
end

main();

Uitvoer: Beagle

FOUT

function printMijnVariabele()
  print(variabele)
end

function main()
   local variabele = "Beagle"
   printMijnVariabele()
end

main();

Uitvoer: -Foutmelding-

Strings

In een string kan je een tekstje zetten. Je mag hier gewoon getallen en karakters gebruiken, dat maakt allemaal niet uit. Een string staat altijd tussen twee aanhalingstekens ("). Een variabele maken met een string doe je zo:

stringVariabele = "Hier de tekst"

Wil je een stukje tekst bij een andere string variabele toevoegen ("append"), doe je dat zo:

stringVariabele1 = "Wil je een stuk toevoegen,"
stringVariabele2 = " dan doe je dat zo."
volledigeString = stringVariabele1 .. stringVariabele2
print(volledigeString)

Uitvoer: Wil je een stuk toevoegen, dan doe je dat zo.

Ander voorbeeld:

stringVariabele = "De eerste tekst " .. "plus de tweede tekst" .. " zijn 2 teksten bij elkaar."
print(stringVariabele)

Uitvoer: De eerste tekst plus de tweede tekst zijn 2 teksten bij elkaar.

Verder zijn er nog een aantal functies die met het verwerken van tekst te maken hebben:

string1 = "SeXy ThInG"

lengte = string.len(string1)
omgedraaid = string.reverse(string1)
upper = string.upper(string1)
lower = string.lower(string1)
x5 = string.rep(string1, 5)
volledig = string1 .. "; lengte: " .. lengte .. "; omgedraaid: " .. omgedraaid .. "; Blokletters: " .. upper .. "; kleine letters: " .. lower .. "; x5:" .. x5 .. "."
print(volledig)

Uitvoer: SeXy ThInG; lengte: 10; omgedraaid: GnIhT yXeS; Blokletters: SEXY THING; kleine letters: sexy thing; x5: SeXy ThInGSeXy ThInGSeXy ThInGSeXy ThInGSeXy ThInG

  • 1: Verkrijg de lengte van de ingevulde string.
  • 2: Verkrijg de omgedraaide tekst van de ingevulde string.
  • 3: Verkrijg de string in hoofdletters.
  • 4: Verkrijg de string in kleine letters.
  • 5: Zet de string, ingevuld bij het 1ste argument, achter elkaar. Bij het 2de argument geef je aan hoeveel.

Je moet vaak ook een number in een string omzetten. Dat doe je met deze functie:

tostring(6018.10)

Je gebruikt deze functie omdat je géén number in kan vullen waar een string gevraagd wordt.

Numbers

Een number is een getal. In andere programmeertalen onderscheiden ze dit in twee types: "float" en "integer". Een "integer" is een getal zónder kommagetal (5, 20, 100). Een "float" is een getal met één of meer kommagetallen (2.5, 10.10, 201.979). De "komma" is altijd een punt. Een number declareer je zo:

variabele = 25

Heb je een string waar een getal in staat en je wil dat getal eruit halen (en converteren naar een number), kan je het volgende gebruiken:

tonumber("l337")

Als er geen getal in staat wat hij kan begrijpen, geeft het nil terug.

Booleans

Een boolean kan alléén true of false zijn. Een 1 of 0 is hetzelfde. Veel functies geven een boolean terug, zodat je later kan controleren of de operatie gelukt is of niet. Je kan natuurlijk ook zelf eentje maken om later te controleren of iets waar of niet waar is. Een boolean declareer je zo:

variabele = true

Tables

In een table kan je verscheidene data opslaan in één variabele. Dit is handig, omdat je soms niet weet hoeveel je van iets binnen krijgt (van de gebruiker) en dat gemakkelijk in een table kan toevoegen. Een lege table maak je zo:

variabele = {}

Je hebt twee types van een table: Een table array en een table dictionary. Het verschil is dat bij het 1ste type je de verschillende data alleen kan aanroepen met cijfers. Bij het 2de kan je ook aangeven met welke tekst je een bepaalde waarde wilt. Zo declareer je een table array met wat fruit als data:

variabele = {"appel", "peer", "mango"}

Wanneer je deze variabele gemaakt hebt, kan je de data er op deze manier uithalen:

variabele[index]

Index is het cijfer dat staat voor een van de waardes in de table. De eerste waarde "appel" is index 1, "peer" is index 2 en "mango" index 3. Let op dat het tellen dus altijd vanaf 1 begint, en niet 0 zoals bij bijna alle andere talen. Om alle drie de waardes te laten zien (met de functie print() en het "commando" voor het aanvoegen van tekst wat je hierboven kan leren), doe je dat dus zo:

variabele = {"appel", "peer", "mango"}
print("'variabele' bevat: " .. variabele[1] .. variabele[2] .. variabele[3])

Uitvoer: 'variabele' bevat: appel peer mango

In een table dictionary kan je de manier van aanroepen van hierboven ook gebruiken, maar hier kan je ook definiëren wat de "sleutel" is voor de waarde. De sleutel is wat je invult om de toegewezen waarde te verkrijgen. Een table dictionary declareer je zo, met wat namen van gebruikers:

wie_is = {Jet = "Dutchy3010", Benjamin = "Beagle", Patrick = "PatrickW"}

Als ik nu de waardes zou willen verkrijgen en willen laten zien (weer met functie print()), doe ik dat zo:

wie_is = {Jet = "Dutchy3010", Benjamin = "Beagle", Patrick = "PatrickW"}
print("Jet = " .. wie_is["Jet"] .. ", Benjamin = " .. wie_is["Benjamin"] .. ", Patrick = " .. wie_is["Patrick"])

Uitvoer: Jet = Dutchy3010, Benjamin = Beagle, Patrick = PatrickW

Nog steeds kan je de waardes op roepen met een index waarde. Hier is dezelfde uitvoer, maar dan op de 1ste manier:

wie_is = {Jet = "Dutchy3010", Benjamin = "Beagle", Patrick = "PatrickW"}
print("Jet = " .. wie_is[1] .. ", Benjamin = " .. wie_is[2] .. ", Patrick = " .. wie_is[3])

Uitvoer: Jet = Dutchy3010, Benjamin = Beagle, Patrick = PatrickW

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...