Aufbau
-Einleitung
-Syntax
-Definieren
-tonumber/tostring
-end
-Ich verstehe den Syntax einer Funktion nicht oder weiß nicht was wie definiert wird.
-Ich möchte Scripten lernen.
Einleitung
Sehr geehrte User,
hiermit möchte ich euch ein wenig die minimalen Grundlagen des Scripten näher bringen, um eventuell einige Themen zu verhindern bzw. Probleme zu lösen.
Syntax, Parameter, String, Integer... "What?!" Genau das möchte ich aufklären.
Syntax
Was ist denn ein Syntax?!
Syntax bedeutet Reihenfolge bzw. Ordnung und ist die Struktur einer Funktion.
Nehmen wir outputChatBox, weil diese Funktion einen Serverseitigen und einen Clientseitigen Syntax hat.
Alles was durch [ ] gekennzeichnet ist, ist optional, Standartwerte werden angezeigt.
Als erstes wird als String der Text angegeben, ein String ist eine Zeichenkette in Anführungszeichen z.B "HALLO ICH BIN EIN STRING".
Wie man sieht, sagt uns der Syntax hier schon was benötigt wird: string, int = integer, bool = boolean (true/false).
Danach geben wir an, an welchen Spieler die Nachricht geschickt werden soll, da wir keinen Spieler definiert haben, nehmen wir einen zufälligen.
Jetzt möchten wir die Farbe einstellen, in der der Text angezeigt wird.
Der Aufbau ist R G B (Rot, Grün, Blau).
Genau zu finden auf colorpicker.com
Als letztes geben wir an ob wir colorcodes ( z.B #123456 ) im Text erlauben möchten.
Da dies clientseitig ist, brauchen wir keinen Spieler angeben, der Rest ist oben zu entnehmen. Es wird nur an den lokalen Spieler gesendet.
Definieren
Wie definiere ich etwas?
Alles was definiert wurde, ist eine Variable, wie auch in Mathe x für eine Zahl steht.
z.B Möchten wir unseren Text als variable speichern um ihn im Script jederzeit einfach per text ausgeben lassen zu können.
( Siehe für local/global Noneatmes Erklärung [Tutorial] Globale und lokale Variablen )
local text = "HALLO"
addCommandHandler("gibmirdentext",
function(player)
outputChatBox(text,player,255,255,255) --Player wurde nun durch den CommandHandler definiert (Serverseitig).
end)
Würde text oben nicht mit "Hallo" definiert werden, würde keine outputChatBox möglich sein, auch wenn text in einer Funktion definiert wird, diese aber noch nicht aufgerufen wurde.
Eine Variable ändert man ganz einfach
Text = "Hallo" --String
Text = "Nicht mehr Hallo" --String
Text = "Gummi" --String
Text = 123456 --Integer
Text = false --Boolean
Text = true --Boolean
tonumber/tostring
Ich befürchte meine Zahl ist ein String!
Ganz einfach gelöst, mit tonumber(variable) oder andersrum mit tostring(variable)
end
Oft wird ein end vergessen z.B
Jedes "function","if","for" "while" etc. braucht ein end.
Ich verstehe den Syntax einer Funktion nicht oder weiß nicht was wie definiert wird.
Ihr findet zu jeder Funktion, einem EventHandler etc. einen Eintrag im MTA Wiki ( wiki.mtasa.com )
Eine definierung durch einen EventHandler ist einfach.
function playerConnect(playerNick,playerIP,playerUsername,playerSerial,playerVersionNumber,playerVersionString) --Kann beliebig benannt werden, auch Kartoffel.
end
addEventHandler("onPlayerConnect",getRootElement(),playerConnect)
Sieht man sich den Wiki Eintrag an, weiß man ob man es mit einem String oder sonstigem zu tun hat.
Wird etwas nicht definiert, wie z.B oben playerNick, so kann man es auch nicht aufrufen.
Sonstiges
Wenn ihr einen Fehler bekommt, nicht direkt ein Thema eröffnen, weil ihr ihn nicht versteht (gemeint ist Englisch - Deutsch). Übersetzt ihn, sowas wie z.B "No Database selected" sollte eigentlich selbst erklärend sein.
Ich möchte Scripten lernen.
http://wiki.multitheftauto.com/wiki/DE/MTA_Scripting_Grundlagen
Abschluss
Ich hoffe das ich ein wenig geholfen habe, ich wollte kein Scripting Tutorial erstellen, sondern nur Grundlagen näher bringen.
In letzter Zeit, habe ich häufiger Themen gesehen, die dadurch hätten nicht sein müssen.
Dieses Thema, werde ich immer erweitern um die meisten Unklarheiten zu beseitigen, Vorschläge können gerne per PM, cChat oder in diesem Thema geäußert werden, aber wie gesagt ich möchte kein scripting Tutorial erstellen.
Mit freundlichen Grüßen
Dawi