Clonk-Center Titelbild

Clonk Archiv / Sonstiges / Grundkenntnisse des Scriptens


[ Statistik ]


Grundkenntnisse des Scriptens
Datum17.04.2006 09:57:52
AutorZapper
Dateigröße275.93 KB
Engine-Version-
DownloadGrundkenntnisse des Scriptens.pdf (3831 mal runtergeladen)
Bewertung****
BeschreibungIn 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

53 Kommentare


10.08.2010 17:24 von Marko10_000:
Ich muss sagen, dass diese Doku echt gut ist für Scriptanfänger. Ich wollt zwar selber eine Schreiben, aber ich dachte mir eh, dass es eine Bessere schon gibt. Naja also ich finde die Doku gut und man kann damit auch schon mahl ein bischen mit den Schleifen und Bedingungen reinschnuppern. Das mit den möglichen Fehlerquallen und die wichtige Informationen kursiv sind finde ich gut. Man sieht es halt blos nicht so gut. Ich würde dir vorschlagen es zu unterstreichen. Aber sonst ist es echt gut. Schade dass ich es mir umständlich selbst beigebracht habe. Die Doku hätte mir echt gehololfen aber jetzt ist es ja schon zu spät =( aber ich kann es ja trozdem =).

29.06.2008 19:58 von Winter3000:
gibts so was auch für CR?

25.05.2008 9:26 von REXon:
Danke...

15.05.2008 11:37 von Profpatsch:
Naja, also ich finde das für den Einstieg in die Clonk-Programmierug nicht sehr hilfreich.
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.

05.04.2008 19:00 von Liech:
Vielleicht solltest du noch drauf hinweisen wie man den Entwicklermodus bei Cr verwendet. (F6 drücken)

26.01.2007 18:16 von Saturas:
Ist gut erklärt schön gemacht.
Wäre noch gut wenn du noch ein paar Fragen noch zum Schluss reinmachen kanst damit man gucken kann ob man alles verstanden hat. :)

08.12.2006 19:48 von N4ppeL:
mir gefällt das irgendwie...
vieles kenn ich zwar schon aber ich bin ja auch kein 100%newcomer mehr :)

08.12.2006 17:05 von Zapper:
Maggi!

08.12.2006 16:06 von s_m_w:
Tyrons parser strikes back

08.12.2006 13:52 von Zapper:
Aber bei "Grafikkenntnisse" könnte man nicht wirklich etwas Clonkspezifisches machen.

08.12.2006 13:06 von Habicht:
Endlich etwas mit dem man das Scripten gut lernt nod. Weiter so Zapper! Wie wäre es, denn mit einem Touturial für "Grafikkenntnisse" smile.

31.10.2006 16:31 von Feuermonster:
CP hat eine andere Syntax als CE. CP Syntax sollte aber auf CE auch laufen. Einige alte CP Befehle sind in der System.c4g enthalten. So können alte Befehle auch unter CE verwendet werden.

31.10.2006 16:15 von Psychoclonk:
ist es eigentlich beim scrippen von clonk planet/endavour unterschiedlich oder isses ca das gleiche

27.08.2006 11:34 von Zapper:
Ja, alles, was hinter // steht wird nicht ausgeführt und gehört sozusagen nciht zum Script.
Da kannst du dann zB KOmmentare zu Scriptzeilen einfließen lassen.

27.08.2006 9:03 von Konsti:
Äh, Levi, ist gibt genug Leute die CE haben, sich hier aber nicht registrieren.

27.08.2006 5:30 von Levi:
@Etikareti Registrier dich erstmal.

26.08.2006 23:59 von Stivo:
@ Etikareti
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).

26.08.2006 23:24 von Etikareti:
Ich versteh das net.Da wird ja irgendwie nicht die sache erklärt://Ich bin ein Kommentar.Meine gesamte Zeile wird ignoriert  <<was soll das bedeuten??

09.08.2006 12:09 von Zapper:
Erfolg!1einself :D
Zuletzt geändert: 09.08.2006 12:09

09.08.2006 12:08 von Flinti:
Selbst mein Freund (Er versteht eigentlich gar nichts vom Scripten) hat die Doku fast vollständig verstanden und sämtliche Flints mit unterschiedlichsten Explosionsgrößen erstellt. Sprich: Diese doku ist die beste in deutschland!!!!

(Ja ok, etwas übertrieben)smile
Zuletzt geändert: 09.08.2006 12:09

08.06.2006 16:12 von Zapper:
Jupp Schedule ist noch bisle schwerer, wenn man Paramter mit Objekten und so machen will. Da müsste man dann Format und so machen.
Aber ScheduleCall ist imo eine gute alternative zu einer Aktion. Wenn mans nur einmal braucht und ausshcließt, dass das Objekt vorher verschwinden ^^

08.06.2006 13:03 von s_m_w:
>> ScheduleCall(string Function, int Timer, int Repeat, object pObject);

>ist falsch.


Er meinte wohl Schedule();, aber Schedule ist für einen Newbie mMn etwas zu früh.

08.06.2006 10:17 von stevi:
Naja habs mir als pdf gespeicher und hoffe dass es mir etwas hilft...

02.06.2006 13:01 von Zapper:
Das is ja auch ne Script-Doku und keine Doku, die ActMap/DefCores beschreibt. Das wäre wieder was ganz andres ^^

30.05.2006 20:11 von Theisi:
Finde das Dingen eigentlich ganz ok, mir ist das persönlich aber trotzdem zu kompliziert. Mir reicht das wenn ich weiß, wie ich ne DefCore.txt oder ne DescDE
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

12.05.2006 14:12 von clonky05:
Super. ich musste alles noch nach dem ausprobier Verfahren lernen.
1 Vote

25.04.2006 15:20 von letto:
So jetzt schreibe ich hier auch mal ein Kommentar. Also die Doku ist echt Klasse. Bis auf ein paar kleine Ausnahmen die noch etwas unverständlich sind.
[5 Sterne]
Zuletzt geändert: 30.05.2006 21:53

22.04.2006 3:12 von Zapper:
Wär toll ^^
Soll ich dann machen,w enn ich Zeit habe?
Oder sag mir noch unter welcher Überschrift und so.

21.04.2006 12:46 von PeterW_:
Es wäre gut, wenn das in die Wiki übernommen werden könnte. Also, nachdem die Rechtschreibfehler draußen sind ;)

21.04.2006 10:52 von Zapper:
Früher hatte ich noch ans Ende einen Teil über das hochladen gesetzt ^^.
Aber dann hab ichs wieder rausgenommen, weil ich denke, dass dsa nicht in die Doku gehört.
Hoffentlich hast du unrecht :/

21.04.2006 4:51 von Feuermonster:
Irgendwie beschleicht mich da eine Vorahnung, dass jetzt nochmals eine Flintwelle kommt, da ja schon fertige Beispielscripts für Flints enthalten sind ;)

19.04.2006 13:23 von Zapper:
@Flinti
der steht tatsächlich im Text. Aber schadet wohl nicht, wenn man den auch noch aufnimmt.
@Konsti
Dann habe ich dich wirklich falsch verstanden ^^

19.04.2006 11:44 von Nachtfalter:
Steht wimni im Text.

19.04.2006 11:41 von Flinti:
Es fehlt noch der Fehler, wenn das Spiel einfriert, z.B. durch eine Entlosschleife.

19.04.2006 10:23 von Pluto:
boni doch der ist bekannt :D

19.04.2006 9:29 von Konsti:
>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.

Kann es sein das du es falsch verstanden hast? Ich rede von der Doku.

>Wieso? Meiner Meinung ist alles auch ohne Vorkenntnisse verstehbar erklärt.

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

19.04.2006 9:13 von boni:
Hm, ich anscheinend wissen die meisten Neulinge nicht, wo sie Tutorials hernehmen sollen.
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

19.04.2006 9:03 von Zapper:
>...wenn man die Grunkenntnise mit #strict bis hin zu Schleifen kann.

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

19.04.2006 7:58 von Konsti:
Die Doku ist eigentlich auch nur anwendbar wenn man die Grunkenntnise mit #strict bis hin zu Schleifen kann.

18.04.2006 23:08 von Pluto:
ist ja ganz nett das es doch noch paar erklärungsveruche für die extremnoobs (wie mich) für das scripten gibt. jedenfalls sagt die pdf mir mehr als die entwickler doku :D  
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!

18.04.2006 17:34 von Käse:
Hat mir echt weiter geholfen, DANKE!

Weiter so!

18.04.2006 8:33 von Twonky:
@Zapper
Meine Landscape.bmp war 10 mal so groß, wie sie eigentlich sein sollte.
Das hat die engine wohl nicht verkraftet.

18.04.2006 8:22 von Zapper:
@Twonky ich weiß jetzt auch nicht so genau, was der Fehler ist. Hattest  du einen Landscape.txt? Da könnte etwas falsch gewesen sein.

@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 ^^

18.04.2006 8:13 von Raven:
>Globale Variablen sind eigentlich wie Objektlokale Variablen. Nur, dass

>sie im Szenarioscript verwendet werden und das Schlüsselwort „static“

>statt „local“ benutzen.


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:

> ScheduleCall(string Function, int Timer, int Repeat, object pObject);


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

18.04.2006 7:02 von Twonky:
@Zapper
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?

17.04.2006 17:46 von nissi:
Juhu entlich mal was bei dem ich Scripten lernen kann!
5Sternvote

17.04.2006 16:48 von Kirx:
Juhu ersma sofort reinschauen :D

17.04.2006 14:34 von Konsti:
Ups, du hast Recht. Außerdem war noch ein anderer Fehler drin. Mit diesen Script sollte sich die Engine Aufhängen:
Message("Es gibt %s Spieler!", FindObject(CLNK), GetPlayerCount());
Zuletzt geändert: 17.04.2006 14:35

17.04.2006 13:19 von Zapper:
Hab ich das wirklich @# script? ups, muss ich noch verändern.
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

17.04.2006 12:24 von Twonky:
Auf Seite 13 und 14 hast du #script statt #strict verwendet. Ist das ein Fehler oder soll das so sein?
Aber die Doku ist gut.
+5 vote

17.04.2006 11:33 von Konsti:
Vielleicht solltest du die '?' in der Liste wegmachen, dass sieht so aus als wärst du unsicher. Bei der ID solltest du dazuschreiben das man z.B. keine '?' oder '!' setzten darf, aber '_'.

[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

17.04.2006 11:17 von Zapper:
Hm, ok ich versuche das noch einleuchtender zu machen.
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

17.04.2006 10:49 von s_m_w:
Du erklärst alles ein bisschen Wirr, das mit dem 3+4; und ; irritiert eher. Du hättest einfach sagen sollen "Alle Funktionen müssen mit einem Semikolon beendet werden"

e:/
>"Clonk ist eine funktionslokale Variable, wie man es am Schlüsselwort "Local" sehen kann"

^- Da steht aber "var Clonk;"

e2:/ Du könntest auch ein bisschen gleich die Leute dazu bringen ihren code einzurücken d.h. statt:
>func Bla() {

>if(Nummer==3) {

>if(Nummer2<45) {

>Message("Nummer2 größer als 45");

>Explode(10);

>}

>Message("Nummer1 ist 3");

>}

>}

eher:
>func Bla() {

>  if(Nummer==3) {

>    if(Nummer2<45) {

>      Message("Nummer2 größer als 45");

>      Explode(10);

>    }

>    Message("Nummer1 ist 3");

>  }

>}


e3:/
>for(var goldzahl=10;goldzahl;goldzahl--) {...

Ich als Newb hätte mich gefragt, "Hä, warum steht da "goldzahl" in der Mitte?"
Mach doch lieber:
>for(var goldzahl=0;goldzahl<=10;goldzahl++) {...

und erkläre:
>Zuerst setzen wir die Funktionslokale variable goldzahl auf 0. (Du brauchst nicht zu erwähnen, das wenn man var goldzahl; schreib, sie auch auf 0 ist) Dieses "goldzahl<=10" bedeutet, dass die Schleife solange ausgeführt wird, solange die variable "goldzahl" kleiner oder gleich 10 ist. goldzahl++ erhöt die variable um eins.


>var goldzahl=10;

>for(;goldzahl;){...goldzahl--;)

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