|
Sections - Ein Schritt-Für-Schritt Tutorial
5
5
1
| | Sections - Ein Schritt-Für-Schritt Tutorial | |
| |
| Autor | Nachricht |
|---|
Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Sections - Ein Schritt-Für-Schritt Tutorial Fr Feb 13, 2009 10:33 pm | |
| *****Hallo!Und willkommen zu meinem Tutorial über Sections - Die Schritt-Für-Schritt Anleitung. Nun, erst einmal sage ich, was Sections überhaupt sind. Sections: "Section" (engl.) bedeutet so viel wie Abschnitt. In Clonk ist damit folgendes gemeint: In einem Szenario ist normalerweiße 1ne Karte (Map). In einer Section ist eine 2te Karte (Map) gespeichert, mit allen Objekten. Man kann mit verschiedenen Befehlen im Script ein Objekt herstellen, welches die Karten auf Knopfdruck wechselt. Aber dabei muss man verschiedes beachten. Deshalb, nun zu... SCHRITT 1Erst einmal müsst ihr 2 Szenarien erstellen. Ja, 2 Stück. Eine Karte für die Anfangsmap, eine für die Section. Wie ihr Szenarien erstellen könnt, kann man hier nachlesen. Dann zeichnet ihr erstmal gemütlich eure beiden Maps. Und nicht vergessen abzuspeichern  . Seit ihr damit fertig, folgt... SCHRITT 2Nun, eure beiden Szenarien sehen jetzt ungefähr so aus...  (nur so ungefähr) So. Nun klickt ihr auf das Szenario mit der Karte, mit der ihr starten wollt und klickt dann oben rechts auf "Neu". Hier wählt ihr dann "Verzeichniss" aus - Dieses Verzeichniss nennt ihr so: Sect***.c4g. Für die **** müsst ihr einen Namen einsetzen. Ich habe mein Verzeichniss z.B SectWüste.c4g genannt. Danach kopiert ihr folgende Dateien aus dem 2ten Szenario in dieses Verzeichniss: Objects.txt, Scenario.txt und die Map.png Alles andere ist überflüssig. Nun, jetzt sollte das schon so aussehen:  (kann auch hier abweichen) So, jetzt haben wir 1 Szenario mit einer Section. Die nützt uns aber noch nichts, da man nicht zu ihr gelangen kann. Wir brauchen also ein Objekt, das uns auf die Section verfrachtet. Deshalb kommen wir nun zu... SCHRITT 3Wir wollen jetzt also ein Objekt Scripten, das uns in eine Section verfrachtet. Daher klicken wir wieder auf unser Szenario, klicken anschließend auf "Neu" -> "Objekt". Jetzt haben wir ein Objekt im Szenario, wir nennen es z.B "Fernbedienung" oder sowas. Jetzt haben wir diese Fernbedienung, die Aussieht wie ein Stein... Nicht praktisch. Deshalb nehmen wir erstmal eine neue Grafik... Wie wäre es denn mit dieser hier:  Zum verwenden in Clonk Rage Ordner ziehen und den Editor neustarten. Dann einfach die Grafik auf die Fernbedienung draufziehen, und schon haben wir die neue Grafik übernommen. Dabei müssen wir noch die DefCore.txt bearbeiten. Deshalb macht ihr Doppel-Klick darauf. Bisher sieht eure Datei so aus: | Zitat: | [DefCore] id=_NEW Name=New Object Version=4,9,5 Category=18960 MaxUserSelect=10 Width=6 Height=6 Offset=-3,-3 Value=10 Mass=10 Components=_NEW=1; Picture=6,0,64,64 Vertices=1 VertexY=1 VertexFriction=20 Rebuy=1 Collectible=1 |
Also, wir ändern jetzt die ID des Objektes, und passen die Maße an die neue Grafik an. Das sieht dann so aus:
| Zitat: | [DefCore] id=SFBD Name=Section Fernbedienung Category=3600 Width=3 Height=7 Offset=-2,-4 Picture=3,7,35,35 Mass=10 Value=50 MaxUserSelect=5 Components=METL=1; Vertices=3 VertexX=1,-2,2 VertexY=-4,4,4 VertexFriction=50,50,50 Collectible=1 Rebuy=1 Rotate=1 |
Gut. Jetzt wird das Objekt richtig angezeigt, aber wir haben noch ein Problem. Es macht nähmlich absulut nichts, da das Script des Objektes leer ist. Deshalb kommen wir nun zum letzten Schritt,...
SCHRITT 4
Hier werden wir uns um das Script kümmern. Aber als erstest, eine WARNUNG: Folgende Befehle sind undokumentiert, da sie nur begrenzt funktionieren bzw. unstabil sind. Ich gebe keine Garantie auf Erfolg. So, da wir das geklärt haben, öffnet doch mal den Script der Fernbedienung. Sie müsste so aussehen:
| Code: | /*-- Neues Objekt --*/
#strict
func Initialize() { return(1); }
|
Jetzt kommen wir zu den einzelnen Befehlen...
LoadScenarioSection(string szSection, int dwFlags)
Also, für "sring szSection" muss der Name der Section rein. Und zwar OHNE das "Sect". Also wenn ihr euren Ordner "SectWüste.c4g" genannt habt, dann ist der Name eurer Section "Wüste". Alles andere nicht.
Und "dwFlags" bedeutet Folgendes. "dwFlags" kann entweder auf 0 oder 1 stehen. Dabei gibt die Zahl an, welche Teile ihr von der Landschaft speichern wollt. "0" Steht für "Landschaft". Grabt ihr ein Loch und kehrt dann wieder zurück, so ist das Loch immernoch da. "1" hingegen Speichert die Objekte. Habt ihr ein Haus gebaut, ist es nachher wieder da.
Nochmal im Klartext und mit Beispiel
| Code: | #strict
public func Activate() { LoadScenarioSection("Wüste",1); } |
Dieser Script würde dich in die Section "Wüste" bringen, und die Objekte die du gemacht hast, speichern.
So, kopiert das mal in Fernbedienung. Ihr werdet 2 Sachen feststellen:
- 1.) Es hat die Section gewechselt.
- 2.) Du wurdest eliminiert.
So, das is doch schonmal etwas... Aber Verbessern heißt hier die Devise! Denn wir haben etwas wichtiges übersehen... Wir müssen nähmlich noch den Clonk speichern, damit er nicht wie alles andere auf der Karte gelöscht wird. Das geht mit SetObjectStatus()! Auch hierbei kurze Erklärung: SetObjectStatus() hat zwei Parameter. Der 1te ist eine Zahl. Die kann entweder 1 oder 2 sein. Bei normalen Objekten ist es auf 1, damit man sich bewegen etc kann. Der 2te Parameter ist das Objekt, dessen Layer geändert werden soll. Will man hier seinen Menschen machen, nimmt man "GetCrew(iPlr)".
Nochmal im Klartext
| Code: | public func StartChanging(int iPlr) { GetCrew(iPlr)->SetObjectStatus(2); Message("DIE SECTION WIRD JETZT GEWECHSELT!"); return(1); } |
Das ist ein Code, der im Szenario-Script stehen kann. Es ändert den Layer vom Clonk des Spielers auf "2", heißt, dass er gespeichert wird und in die Section "mitgenommen" wird. Das Objekt kann diese Funktion später aufrufen. Mit GameCall(string Funktionsname). Wenn man daas also in den Szenario-Skript einfügen würde, und noch dazu im Objekt den Befehl mit dem GameCall macht, sähe dann so aus:| Code: | #strict
public func Activate() { GameCall("StartChanging"); //ruft die Funktion auf, die die Clonks //speichert. LoadScenarioSection("Wüste",2); return(1); } |
Probiert das mal aus. Ihr werdet 3 Dinge feststellen:
- 1.Die Section wurde gewechselt.
- 3. Ihr seht euren Clonk nicht mehr, könnt euch nicht bewegen.
Na das ist doch mal ein großer Fortschritt, nur wir haben eins wieder vergessen... Und zwar die Clonk wieder zu reaktivieren!. Durch "SetObjectStatus(2);" haben wir sie deaktiviert. Jetzt müssen wir sie wieder aktivieren, ihren Layer also auf normal "1" setzen. Das würde im Szenario-Script so aussehen:| Code: | public func EndChanging(int iPlr) { GetCrew(iPlr)->SetObjectStatus(1); Message("DIE SECTION WURDE GEWECHSELT UND DIE CLONKS REAKTIVIERET!"); return(1); } | So, dieser Code würde die Clonks wieder reaktivieren. Jetzt muss diese Funktion nur noch von unserer Fernbedienung aufgerufen werden. Dazu in das Fernbedienungsobjekt schreiben:| Code: | #strict
public func Activate() { GameCall("StartChanging"); LoadScenarioSection("Wüste",2); GameCall("EndChanging");
} |
So. Und jetzt sind wir fertig. Dieser Skript da oben würde die Clonks deaktivieren, danach die Section laden und die Clonks wieder aktivieren. So schwer war das doch garnicht! Aber hier nochmal die gesamten Scripts am Ende: | Code: | /*-- Szenario-Skript --*/
#strict
public func StartChanging(int iPlr) { GetCrew(iPlr)->SetObjectStatus(2); Message("DIE SECTION WIRD JETZT GEWECHSELT!"); return(1); } public func EndChanging(int iPlr) { GetCrew(iPlr)->SetObjectStatus(1); Message("DIE SECTION WURDE GEWECHSELT UND DIE CLONKS REAKTIVIERT!"); return(1); }
|
Und die des Objektes: | Code: | #strict
public func Activate() { GameCall("StartChanging"); LoadScenarioSection("Wüste",2); GameCall("EndChanging"); return(1); } |
So, hier sind wir schon am Ende unserer Reise. Ich hoffe ich konnte euch das gut erkären. Fragen oder ähnliches dürfen gerne gepopstet werden!
MFG Gamer _________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Zuletzt von Gamer am Mo Feb 16, 2009 7:58 pm bearbeitet, insgesamt 2 mal bearbeitet |
|  | | Bowserkoopa Staatsrat


Alter: 18 Anmeldedatum: 21.12.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 9:56 am | |
| Also das ist wirklich sehr umfangreich. Immerhin funzt es jetzt bei mir, das Szen zu wechseln. Aber ich hätte es schon als Fortgeschrittenen-Tutorial augegeben. Aber wenn dieser Befehl undokumentiert und unbekannt ist, woher weiß man dann soviel darüber? |
|  | | Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 10:09 am | |
| @ Kai. Ja, darüber habe ich auch schon nachgedacht. Habe mich aber nie getraut zu fragen..  @ Bowserkoopa: Schön das es bei dir Funktioniert, das zeigt doch, das du alles verstanden hast und ich es gut erklärt habe^^ Man weiß so viel darüber, da die Clonk Entwickler dazu mal nen Threat geschriben haben. HIER nähmlich _________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei! |
|  | | Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 12:42 pm | |
| Also, du kannst ja machen das du z.B in den Szenario-Script noch reinschreibst: | Code: | public func WechsleMusik() { Music("Hier_kommt_deine_Musikdatei_rein"); return(1); }
|
Und diesen Befehl noch von der Fernbedienung aufrufst, also rein noch reinschreibst | Code: | GameCall("WechsleMusik"); |
aber ob es einen befehl für das Wechseln von Himmel gibt, weiß ich leider nicht.
Und GameCall() funktioniert nur, wenn die Funktion "public" ist._________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Zuletzt von Gamer am Sa Feb 14, 2009 1:33 pm bearbeitet, insgesamt 1 mal bearbeitet |
|  | | Bowserkoopa Staatsrat


Alter: 18 Anmeldedatum: 21.12.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 1:29 pm | |
| Also das mit Musik hätte ich selbst schon gekonnt, aber der Hintergrund ist das Problem. Gibt es keinen Befehl wie: LoadSky() oder LoadBackground() ? |
|  | | Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 1:36 pm | |
| Nein, sowas gibt es nicht. Aber du kannst dir ja mal die anderen Befehle anschaune. Hier Zum beispiel. Und noch ein klienes Beispiel: | Code: | SetSkyAdjust(RGBa(255,255,255,127), RGB(127,127,127)); | Graut den himmel aus.._________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei! |
|  | | Bowserkoopa Staatsrat


Alter: 18 Anmeldedatum: 21.12.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 1:43 pm | |
| Schade, dann müsste man ja den Himmel beibehalten. Außer man kreirt ein Objekt, dass man verscieben kann und steckt es über den Hintergrund. |
|  | | Simsi Staatssekretär


Alter: 19 Ort: Vaihingen/Enz Anmeldedatum: 30.03.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 1:46 pm | |
| noch ein relativ fataler fehler im script: du übergibts mit der funktion GameCall(), die dann StartChanging bzw. EndChanging ausführt, nich die Spieler-ID an. in diesem fall bei nur einem spieler kein problem, da weggelassene parameter 0 sind, und 0->erster spieler. aber sobal es mehr spieler werden wird immer nur der erste clonk gespeichert. so müsstes gehn: | Code: | func Activate(object pByObj) { GameCall("StartChanging", GetOwner(pByObj)); LoadScenarioSection("Wüste", 2); GameCall("EndChanging", GetOwner(pByObj)); }
|
_________________ Copy this into your signature to have it in your signature.
|
|  | | Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 1:48 pm | |
| Ich wusste das das nur mit 1nem Clonk geht, schon vorher. Aber danke, dein Script werde ich mal ausprobieren
EDIT: Nein, auch so geht es nicht.
Wahrscheinlich muss ich dann noch das Scenario-Script anpassen. _________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei! |
|  | | Umezawa Feldmarschall

Alter: 17 Anmeldedatum: 30.12.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 2:30 pm | |
| Heißt das jetzt SetObjectLayer() oder SetObjectStatus()? Im Code schreibst du Status, in der Erklärung Layer, das verwirrt mich etwas. |
|  | | Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Sa Feb 14, 2009 2:35 pm | |
| Die Funktion heißt "SetObjectStatus", und die Funktion ändert den Layer eines Objectes _________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei! |
|  | | Gamer Staatsrat


Alter: 16 Ort: In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum: 10.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Di Feb 17, 2009 2:07 pm | |
| Mhm... müsst ich mal ausprobieren. Also in der Doku steht folgendes: | Zitat: | | Sky Zeichenfolge Himmeltextur wie in der Graphics.c4g vorhanden (ohne Dateierweiterung). |
Und HIER ist der Link zur Doku. Das muss man übrigens bei [Landscape] reinschreiben. Also einfach nur Sky.png in die Graphics.c4g packen und im Scen angeben, fertig? Ich probiers mal aus._________________ Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars   Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei! |
|  | | alexander_der_dritte Oberst

Anmeldedatum: 30.12.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Fr Feb 27, 2009 11:43 pm | |
| Heißt das jetzt wenn ich das ganze script vom anfang des tret mit dazunehme dass da dann plötzlich ne ganz andere map ist beispiel: Wüste->Wald oder das mehrere karten aneinandergeheftet werden? Wüste->noch mehr Wüste nebenbei lol gibt noch nen Alex.  |
|  | | Bowserkoopa Staatsrat


Alter: 18 Anmeldedatum: 21.12.08
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Mi März 04, 2009 2:59 pm | |
| Also ich hätte da noch ne Frage bzg. Tutorial. Wenn die Clonks das Szen wechseln, sterben sie sofort, wenn sie in festem Material erscheinen.(vielleicht auch nur Spieler 2) Kann man es nicht so machen, dass alle Clonks im freien positioniert werden? Hab das Szen jetzt mit 2 Spielern gestartet und der ist eben beim Wechsel gestorben. | Zitat: | Mhm... müsst ich mal ausprobieren. Also in der Doku steht folgendes: Zitat: Sky Zeichenfolge Himmeltextur wie in der Graphics.c4g vorhanden (ohne Dateierweiterung).
Und HIER ist der Link zur Doku. Das muss man übrigens bei [Landscape] reinschreiben. Also einfach nur Sky.png in die Graphics.c4g packen und im Scen angeben, fertig? Ich probiers mal aus. |
Lässt sich damit dann der Hintergrund ändern? Also mit einer Graphics.png im Hauptszenario?
EDIT: Ich glaube es liegt daran, dass es Spieler 2 ist. Wie schaffe ich es, dass die Clonks aller Spieler übernommen werden? EDIT2: Nach weiteren Forschungn herausgefunden, das nur der Clonk übernommen wird, der das Objekt aktiviert. |
|  | | Liech Fregattenkapitän

Alter: 21 Anmeldedatum: 02.02.09
 | Thema: Re: Sections - Ein Schritt-Für-Schritt Tutorial Mi März 04, 2009 5:51 pm | |
| geh halt alle spieler mit einer schönen schleife durch und ruf bei dessen clonks SetObjectStatus(...) auf. |
|  | | | | Sections - Ein Schritt-Für-Schritt Tutorial | |
|
Ähnliche Themen |  |
|
| | Forenbefugnisse: | Sie können in diesem Forum nicht antworten
| |
| |
| |