Beschreibung | In dieser Doku werden die Grundkenntnisse des Scriptens erklärt. Ich musste sie als PDF hochladen, da sonst die schöne Formatierung flöten gegangen wäre. Aber so kann man sich das auch Offline anschauen und jeder besitzt ja irgendein PDF-Viewer. Die Doku wurde nun noch einmal stark überarbeitet und ist jetzt noch toller.
Ich bin jetzt bei 22 DinA4 Seiten, in denen meiner Meinung nach anschaulich die Grundkenntnisse des Scritpens dargelegt werden.
Hier kann ich nicht mehr viel dazu sagen außer, dass Kommentare, Fehlermeldungen und Verbesserungswünsche wie immer erwünscht sind. Sie war jetzt zwar schon länger ~fertig aber ich wollte sie erst nach den Ferien hochladen, da ich sonst nicht auf Kommentare usw reagieren könnte.
Update 1: -Ein paar Sachen (hoffentlich) etwas klarer gemacht. -Semikolonabschnitt verkürzt
Update 2: -Static Abschnitt ausführlicher -Fehler verbessert
Update 3: -Einige neue Fehler aufgeführt |
Besser ist das (leider noch unfertige) Tutorial in der Clonk Wiki.
Dort ist alles an einem Beispiel ausgeführt, mit dem man dann schon seine ersten Erfolge erzielen kann. Leider sind die Dinge dort nicht so genau und von Grund auf erklärt.
Meine Erfolgsstrategie war, zuerst das Tutorial in der Wiki durchzuarbeiten und sich dann diesen Beitrag durchzulesen, da manches dadurch klarer wird.
Leider gibt es noch kein wirklich fertiges und anschauliches Einsteigertutorial zum Thema Clonk-Scripting, der Anfänger muss sich alles selbst zusammensuchen. (Ich habe schon einmal Programmiert,hatte also ein Plus. Der Aufbau ist bei den meisten Sprachen eh gleich.)
Aber ich denke, wir befinden uns auf dem besten Weg dorthin.
Wäre noch gut wenn du noch ein paar Fragen noch zum Schluss reinmachen kanst damit man gucken kann ob man alles verstanden hat. :)
vieles kenn ich zwar schon aber ich bin ja auch kein 100%newcomer mehr :)
Da kannst du dann zB KOmmentare zu Scriptzeilen einfließen lassen.
Das soll bedeuten das die Zeilen in einem Script, die nach // stehen von der Engine ignoriert werden.
Dort könntest du dann Beispielsweise eine Beschreibung deines Scripts hinschreiben (Siehe in einem Objekt von RedWolf Design, dort werden vielen Scripts so kommentiert).
Zuletzt geändert: 09.08.2006 12:09
(Ja ok, etwas übertrieben)
Zuletzt geändert: 09.08.2006 12:09
Aber ScheduleCall ist imo eine gute alternative zu einer Aktion. Wenn mans nur einmal braucht und ausshcließt, dass das Objekt vorher verschwinden ^^
Er meinte wohl Schedule();, aber Schedule ist für einen Newbie mMn etwas zu früh.
bearbeite oder ansatzweise weiß, wie ne ActMap funktioniert.
Grafiken kann ich auch wesentlich besser.
Trotzdem ein + vote, für die mühe usw.
Zuletzt geändert: 30.05.2006 21:53
1 Vote
[5 Sterne]
Zuletzt geändert: 30.05.2006 21:53
Soll ich dann machen,w enn ich Zeit habe?
Oder sag mir noch unter welcher Überschrift und so.
Aber dann hab ichs wieder rausgenommen, weil ich denke, dass dsa nicht in die Doku gehört.
Hoffentlich hast du unrecht :/
der steht tatsächlich im Text. Aber schadet wohl nicht, wenn man den auch noch aufnimmt.
@Konsti
Dann habe ich dich wirklich falsch verstanden ^^
Kann es sein das du es falsch verstanden hast? Ich rede von der Doku.
Wenn du wirklich von der (Orginal) Doku redest, dann kann ich dir nicht zustimmen. Z.B. wurde in der Doku sehr wenig über Scripttimer und anderes Erklärt.
Zuletzt geändert: 19.04.2006 09:31
Deswegen paste ich mal diesen Link zur Clonk-Wiki hier, da das anscheinend nicht wirklich bekannt ist.
Zapper: Man könnte den Link ja auch noch in die Beschreibung/in das Tutorial tun ;)
Zuletzt geändert: 19.04.2006 09:15
Wieso? Meiner Meinung ist alles auch ohne Vorkenntnisse verstehbar erklärt.
Wenn man davon ausgeht, dass man einfach immer #strict vor den Script schreibt. Das würde keinem nützen, wenn ich noch erklären würde, wieso.
Vielleicht mache ich noch Seitenzahlen, mal sehen ^^
Zuletzt geändert: 19.04.2006 09:08
ich vermisse nur ein inhaltsverzeichnis und seitenzahlen :D. man muss immer suchen auf welcher seite was stand ist ein bisschne lästig vorallem wichtig wenn du das nohc umfangreicher machen willst! :D
find ich ansonsten mal ganz schön!
Weiter so!
Meine Landscape.bmp war 10 mal so groß, wie sie eigentlich sein sollte.
Das hat die engine wohl nicht verkraftet.
@Raven
das mit Schedule ist dann ja ein richtig schlimer Fehler. Ich war mir ziemlich sicher, dass ich das richtig hatte.
Um die globalen Variablen werde ich mich kümmern.
Und bei der Einrückung werden wir mal sehen ^^
Das ist so nicht richtig. Statics kann man wie Golbale, unbenannte Variablen behandeln, sie also aus jedem Objekt abrufen, da sie im gesamten Szenariokontext gültig sind. Eventuell solltest du aber auch noch die Probleme benennen, die beim scripten mit globalen Variablen auftreten können. Ausserdem kann ich doch in jedem Objekt eine static-Variable deklarieren.
Dann beschreibst du noch die ScheduleCall() - Parameter falsch:
ist falsch.
-> ScheduleCall(object pObject, string Function, int Timer, int Repeat);
ist richtig.
Anstonsten würde ich dir auch nochmal raten wirklich einzurücken. Habe ich auch früher nicht gemacht, aber ist eine ganz böse angewohnheit. Versuche das mal konsequent zu machen, dann wirst du merken, dass die Scripte gleich viel einfacher zu lesen sind.
Zuletzt geändert: 18.04.2006 08:14
Bei mir gab es beim starten eines Szenarios einen Fehler:
[08:45:18] Erstellung der Landschaft...
[08:49:14] Error creating surface
Dann ist der Computer abgestürzt und weder der Taskmanager noch der Aus-Knopf haben funktioniert. Irgendwann gings dann wieder, aber erst nach einem Neustart konnte ich CE wieder starten. Dieser Fehler ist in Grundkenntnisse des Scriptens nicht erklärt. Kannst du mir sagen, warum er aufgetreten ist?
5Sternvote
Message("Es gibt %s Spieler!", FindObject(CLNK), GetPlayerCount());
Zuletzt geändert: 17.04.2006 14:35
Ich nehme das alles noch in die fehlerliste auf, konsti, danke.
PS: Bei dem Teil mit dem %d stürzt es aber nicht ab? Da wird dann ne Nummer ausgegeben.
Zuletzt geändert: 17.04.2006 14:25
Aber die Doku ist gut.
+5 vote
[Nachtrag1:]
Ganz am Ende bei der Fehlerliste mit denn Abstürzen solltest du noch sagen das z.B. es bei so einen Script passiert:
Message("Ich bin %d", FindObject(CLNK), GetName(FindObject(CLNK) );
(Falls du es nicht sofort siehst, bei Message wurde %d statt %s geschrieben).
[Nachtrag2:]
Bei ScripGo(1) solltest du schreiben das man auch ScriptGo(true) schreiben kann, hätte denn Gleichen Effekt. Ich hab mich da nähmlich Früher gewundert. Und noch das mit ScriptGo(0) oder ScriptGo(false) der Scriptcounter gestopt wird.
[Nachtrag3:]
Bei der Fehlermeldung kannst du die hier noch hinzufügen:
Fehlermeldung:
::unknown identifier: pClonk
Fehler:
pClonk wurde vorher nicht eingespeichert.
Beispiel:
Kill(pClonk);
Fehlermeldung:
'func': expecting opening block ('{') after func declaration
Fehler:
Ein '{' Vergessen.
Beispiel:
func Script10() {
Message("Hallo", FindObject(CLNK) );
Zuletzt geändert: 17.04.2006 11:51
Schön, dass das deine einzige Kritik war ^^
PS: Um Einrückung versuche ich mich später nochmal zu kümmern. Das ich das nicht drinhabe kommt daher, dass ich in C4Script selbst eigentlich völlig ohne Einrückung schreibe.
Zuletzt geändert: 17.04.2006 11:25
e:/
^- Da steht aber "var Clonk;"
e2:/ Du könntest auch ein bisschen gleich die Leute dazu bringen ihren code einzurücken d.h. statt:
eher:
e3:/
Ich als Newb hätte mich gefragt, "Hä, warum steht da "goldzahl" in der Mitte?"
Mach doch lieber:
und erkläre:
Du solltest mal mehr nachdenken, für dich als Script kenner ist das einleuchtend, setz das nem Newb vor und er versteht kein Wort. Diese ausnahmen solltest du weglassen.
Ausser einigen kleinen Rechtschreifehlern war das alles was ich zu kritiesieren habe.
Zuletzt geändert: 17.04.2006 11:05