Forum

> > Stranded II > Allgemein > Scripting Tutorial
Forums overviewStranded II overviewAllgemein overviewLog in to reply

German Scripting Tutorial

20 replies
Page
To the start Previous 1 2 Next To the start

old Scripting Tutorial

Westbeam
User Off Offline

Quote
So. mir war mal langweilig, deswegen hab ich mal ein einfaches s2s-scripting-tutorial gebastelt
es sind nur einfache scripts, nicht so hammerscripts wie bei richitg guten maps, aber es dürfte für anfänger leicht verständlich sein

also:
Ein script besteht aus folgenden elementen:
1
2
3
on:event {
"eigentliches script";
}

das event kann durch folgende events ersetzt werden:
on:start = beim starten einer map
on:use = beim benutzen eines objekts
on:hit = beim angreifen auf das entsprechende objekt
on:kill = wenn das objekt tot ist
on:dig = beim graben
on:collect = beim aufheben eines items
on:changeday = beim tageswechsel
on:trigger = beim betreten eines triggers
... und noch mehr

erstmal ein sehr wichtiges script(finde ich)
1
2
3
on:start {
ai_stay "self";
}
wenn man das bei einer einheit im scriptfeld einträgt, bleibt sie immer stehen und läuft nicht in der gegend rum

Hinweis: vergesst das ; nicht bei einem script, es kommt in jeder zeile im script an das ende.(beispiel beim oberen script).

jetzt verändern wir mal farbe und größe eines objekts.
farbe:
1
2
3
on:start {
color 0,0,0;
}
jetzt müsste das objekt komplett schwarz sein, die zahlen hinter 'color' stehen für die farbe

größe:
1
2
3
on:start {
scale 2,2,2;
}
jetzt ist das entsprechende objekt doppelt so groß, die zehlen hinter 'scale' stehen für die größe

Jetzt baut mal ein schild auf die map, im scriptfeld gebt ihr ein:
1
2
3
on:use {
msg "da lang";
}
wenn ihr die map testet, und das schild benutzt, steht am rechten bildschirmrand: 'da lang'
statt dem befehl 'msg' könnt man auch eingeben:
1
2
3
4
on:use {
add "da lang";
msgbox "Schild";
}
dann öffnet sich ein neues fenster, wo der text dann drauf steht, wenn man das schild benutzt

jetzt machen wir mal ein gespräch mit einem eingeborenen, setzt den eingeborenen auf die map
wir geben wieder ein, damit er nicht wegläuft:
1
2
3
on:start {
ai_stay "self";
}
nun setzten wir einen textcontainer auf die map, den textcontainer findet ihr unter 'infos'.
merkt euch die ID des textcontainers,ich nehm jetzt mal an, die ID des containers ist 1, dann geben wir beim eingeborenen ein:
1
2
3
on:use {
dialogue "start",1;
}

beim textcontainer gibt es eine andere scriptsprache(textscript), sie ist leichter als die normale s2s-scripting-sprache, wir geben beim textcontainer ein:
1
2
3
4
5
6
7
page=start
title=Eingeborener
text=start
Hallo, ich bin ein Eingeborener, bist du hier gestrandet?
text=end
button=1,Ja
button=action:close,Lass mich in Ruhe
ok, ich erklär es euch mal:
page=start
die startseite
title=Eingeborener
der titel des gesprächsfenster, welches sich öffnet, wenn man mit dem eingeborenen spricht
text=start
blabla
text=end
der text
button=1,ja
ein button, welcher auf seite 1 verlinkt(die kommt noch dazu)
button=action:close,lass mich in Ruhe
wenn man auf diesen button klickt, schliest sich das gesprächsfenster

nun machen wir die seite 1:
1
2
3
4
5
6
page=1
text=start
Aha, ich kann dir verschiedene Sachen verkaufen, die du brauchst, um hier zu überleben.
text=end
button=2,Ich möcht was kaufen
button=action:close,Lass mich in Ruhe
ok, dürfte noch alles verständlich sein, kommen wir zu seite 2, wo ma etwas kaufen kann:
1
2
3
4
5
6
7
8
9
10
page=2
trade=start
buy=9,1
sell=5,1
trade=end
trade=start
buy=59,1
buy=53,10
sell=5,5
trade=end
beim ersten handel verkaufst du einen beutel gold, um ein stück fleisch zu kaufen, die zaheln nach 'buy' und 'sell' geben die ID des zu kaufenden Items an, und die zweite zahl die menge davon
der zweite handel wird schon interessanter, du verkaufst 5 beutel gold und bekommst dafür 1 normalen bogen und 10 normale pfeile

nun geht es weiter, machen wir mal eine normale holzwand hinter den eingeborenen, ziemlich unschön oder? du kannst natührlich auch scripts in einen text einbauen, geben wir mal auf seite 1 unter dem ersten button ein:
1
2
3
...
button=3,Mach mal die wand weg
...
und auf seite 3 geben wir ein:
1
2
3
script=start
free "object",1;
script=end
ich bin jetzt einfach mal davon ausgegangen, das die bretterwand die ID 1 hat(das erste objekt, was du auf die karte gesetzt hast)
du kannst "object" natührlich auch durch
"unit"
"item"
"info"
ersetzen, dann wird eben die und die einheit,item oder das info gelöscht
man kann auch den befehl 'free' in einem normalen script verwenden, zum beispiel beim aufheben eines schlüssels verschwindet die wand mit der ID 1:
1
2
3
on:collect {
free "object",1;
}

das müsste man dann im scriptfeld des schlüssels eintragen

nun kommen wir mal wieder zu normalen scripts zurück(also keine textscripte).
wir wollen, wenn man ein schaf benutzt, du auf eine andere insel teleportierst wirst, dazu machen wir erst das schaf auf die map, und geben im scriptefeld des schafs ein:
1
2
3
on:use {
loadmap "maps/map.s2";
}
nun wird die map mit dem namen map geladen, falls vorhanden

machen wir mal einen richtigen teleporter, wir wollen das wenn man den stein berührt, man zum info mit der ID 1 geschickt wird, dazu machen wir natührlich das info 1 auf die map, und den stein, beim info müssen wir nix eingeben, beim stein geben wir ein:
1
2
3
on:use {
setat "unit",1,"info",1;
}
nun wird die einheit mit der ID 1(spieler] zu info 1 geschickt

und zum abschluss noch ein sehr wichtiges script, den tagebucheintrag:
1
2
3
4
on:start {
add "Hallo, ich bin gestrandet";
diary "Tag 1";
}

nun sind wir die wichtigsten scripts durch, aber es gibt noch mehr, wenn man zumbeispiel während des spiels ^ eingibt, öffnet sich eine console, folgende befehel lassen sich eintragen:
clear = löscht alle texte in der console
exit = beendet stranded II
info = infos über das spiel
memory = speicherinformationen
3d = infos über die 3dscene
ip = prüft ob du online bist
save = speichert den text der konsole in einer datei im mods>stranded II verzeichnis
playerlist = liste der spieler auf der map
items = liste aller items auf der map

es gibt noch ein paar andere befehle für die konsole, die aber für anfänger eigentlich unwichtig seien sollten

hoffe ich konnte einigen mappern helfen, wenn irgendetwas wichtiges fehlt, könnt ihr es als antwoert zum thema schreiben

mfg.aletes
edited 1×, last 08.04.09 06:30:33 pm

Admin/mod comment

es heißt das script, nicht der script! habe das mal korrigiert /DC

old Re: Scripting Tutorial

BBD
User Off Offline

Quote
Am besten wäre wenn sich ein paar gute Scripter zusammentun und eine sehr große umfangreiche und leicht verständliche Script Tutorial machen!

old Re: Scripting Tutorial

Leiche
Moderator Off Offline

Quote
1
2
3
on:event {
"eigentlicher script";
}

Aletes da steht on:event gehört nicht zum script was aber falsch ist

old Re: Scripting Tutorial

Westbeam
User Off Offline

Quote
da steht, dass nach 'on' das event kommt, und dannach steht, dass das eigentlich script, also das was passiert,reinkommt, du kannst ja nicht im event reinschreiben, dass du einen tagebucheintrag kriegst zum beispiel, das meint ich damit
edited 1×, last 14.02.09 12:21:58 pm

old Re: Scripting Tutorial

Leiche
Moderator Off Offline

Quote
aletes has written
da steht, dass nach 'on' das event kommt, und dannach steht, dass der eigentlich script, also das was passiert,reinkommt, du kannst ja nicht im event reinschreiben, dass du einen tagebucheintrag kriegst zum beispiel, das meint ich damit

Das ist dann aber DIE AKTION

ich zeigs dir

Erklärung:

1
2
3
4
5
// Das script beginnt schon ab dem ersten buchstaben

on : event { // DAS gehört auch zum script denn wenn es das nicht tun würde, würde die aktion die folgt nämlich auch nicht befolgt werden
ai_stay "self",1; // die Aktion die auf das event folgt
} // ende

klar ?
edited 1×, last 14.02.09 12:32:08 pm

old Re: Scripting Tutorial

Leiche
Moderator Off Offline

Quote
du hast eigentlicher script geschrieben
das was du meinst ist aber lediglich die aktion die folgt nach dem das event passiert ist.
Das script ist das ganze, aber dir das erklären zu wollen war anscheinend ein dummer fehler

old Re: Scripting Tutorial

DC
Admin Off Offline

Quote
Leiche: Naja, das kann man sehen wie man will.
Das on:blabla {} ist genau genommen wirklich kein Script, sondern nur ein Event bzw. eine Markierung, welche dem Spiel sagt wann das Script ausgeführt wird.
Allerdings wird on auch als einfacher Scriptcommand aufgeführt und steht wie alle Scripts in der Scriptdatei. Von daher kann man es auch als Script bzw. wichtigen Bestandteil des Scripts sehen.

Falsch finde ich das "eigentliches Script" nicht. Vor allem in Anbetracht der Tatsache, dass ein on:XYZ {} alleine rein garnichts tut.

old Re: Scripting Tutorial

Leiche
Moderator Off Offline

Quote
Daraus besteht meiner meinung nach ein ordinäres skript :

IMG:https://img444.imageshack.us/img444/5046/651456er1.png


Wer etwas anderes behauptet hat ziemlichst ein anner möhre

DC:
ohne event passiert die aktion XYZ nicht

old Re: Scripting Tutorial

Nova
User Off Offline

Quote
Leiche has written
DC:
ohne event passiert die aktion XYZ nicht

Er meint das Event XYZ, nicht die Aktion XYZ.

old Re: Scripting Tutorial

Leiche
Moderator Off Offline

Quote
Teh Admin has written
Falsch finde ich das "eigentliches Script" nicht. Vor allem in Anbetracht der Tatsache, dass ein on:XYZ {} alleine rein garnichts tut.

Und ohne Event XYZ passiert die aktion XYZ nicht
Das meinte ich nova.
lol

Es hat halt keinen zweck etwas als "eigentliches skript" zu bezeichnen denn:
on:sleep {} funzt nicht
und
{ ai_stay "self",1; } ohne event funzt auch nicht

old Re: Scripting Tutorial

DC
Admin Off Offline

Quote
naja
1
2
3
4
msg "lol";
on:sleep { }
on:kill { }
on:use {}
hier würde das msg "lol"; auch bei allen 3 events ausgeführt werden, obwohl es nicht in den klammern zum event steht. da das gesamte script durchgearbeitet wird sobald ein enthaltenes event stattfindet. außerdem gibt es sonderfälle wo scripts keine events brauchen. z.b. bei buttons oder bei dialogue seiten.
man könnte sich da jetzt ewig drüber auslassen, aber es spielt im endeffekt doch garkeine rolle.

edit
ich will hier nicht noch mehr posts dazu machen. aber habe schon verstanden was du meinst und ich sehe es eben nicht so wie du. ganz einfach aber auch völlig irrelevant.
edit2:
ein einzelner scriptbefehl stellt schon ein script dar. genau wie man auch bei einem befehl schon von einem code spricht. er muss weder lauffähig noch vollständig sein damit man ihn so bezeichnen kann.
edited 3×, last 14.02.09 08:51:40 pm

old Re: Scripting Tutorial

Leiche
Moderator Off Offline

Quote
ich meine nur das man die aktion alleine nicht als skript bezeichnen kann.

edit:
dann nenne mir einen grund warum du die einzelne aktion als skript bezeichnen willst !

edit 2:
Shice das isn argument !
edited 2×, last 14.02.09 10:01:03 pm

old Re: Scripting Tutorial

eXtremeAlex
User Off Offline

Quote
Ich kann mir damit zwar noch nicht so große Maps machen, aber das Tutorial hat mir auf jeden Fall weiter geholfen

Ich könnte jetzt aber noch so eine Art höhere Befehle gebrauchen, weil das war ja ein Einführungstutorial...
Wäre nett

P.S.:Wäre super, wenn ihr mir auch erklärt, was es sich mit Variablen auf sich hat und wie man sie verwendet.
edited 1×, last 09.04.09 07:48:27 am

old Re: Scripting Tutorial

Hurri04
Super User Off Offline

Quote
so, ich meld nich hiermit auch nochmal


zu deiner frage:

diese variablen sind etwas anders als die im mathe-unterricht, sie stehen nicht für eine bestimme, unbekannte zahl "x", die es herauszufinden gilt, sonders es handelt sich bei diesen variablen mehr um "kontainer", die den wert einer zahl speichern.

sobald ein neuer variablenname zum ersten mal in einem befehl auftaucht, wird die variable, falls noch nicht vorhande, automatisch angelegt. man kann also z.B. die variable "$beispiel" um 1 erhöhen, wenn sie noch gar nicht existiert. da der gespeicherte wert beim erstellen der variable NULL beträgt, wird er durch diesen befehl auf 1 gesetzt.

ich glaube, wie man den in variablen gespeicherten wert z.B. in if-befehlen abfragt, stand soweit im tutorial erklärt...

tja, und für weitere befehle solltest du man in den befehlsreferenzen nachsehen. im grunde funktionieren sie alle nach dem gleichen prinzip.

ich hoffe, ich konnte dir weiterhelfen.

mfg Hurri04

old Re: Scripting Tutorial

davidsung
User Off Offline

Quote
Wichtig: Zum sauberen Programmieren gehört, dass die Variablen vorab erstellt werden, obgleich diese beim Aufruf erstellt wird. Man kann sich nicht darauf verlassen, dass es wie in S2S so einfach funktioniert.
To the start Previous 1 2 Next To the start
Log in to replyAllgemein overviewStranded II overviewForums overview