gwX Forum
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.

eigene Objekte TEil1: Packs und Definition.txt

4 verfasser

Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty eigene Objekte TEil1: Packs und Definition.txt

Beitrag  !cORe!trike994 Fr 20 Feb 2009 - 15:12

Eigene Objekte Teil 1: Packs und Definition.txt
joa, da ich denke, das mein oder mein und alras Tutorial zur Flint-Erstellung vielleicht etwas zu viel auf einmal war, und ich nicht glaube, das euch eine Textur pro Objekt reicht, hab ich mir gadacht eine vllt. 3-Teilige Tutorialreihe fürs Erstellen und Einbinden von eigenen Objekten zu schreiben, damit es in nächster Zeit vielleicht mehr so schöne Packs wie das kakerlakepack gibt
also:
ok fangen wir ganz am Anfang an:der Aufbau von Packs und Szenarien
Beide werden in anderen Ordnern gespeichert und im Gegensatz zu Clonk Rage funktionieren auch keine Packs, die innerhalb von Szenarien sind.
Also immer Packs im GWX\Packs erstellen und Szenarien im Ordner GWX\Szenarien!
Objekte müssen selbstverständlich immer in Packs erstelt werden.Objekte werden von gwX als solche gesehen und debuggt, wenn sie eine definition.txt besitzen, wenn kein Script vorhanden ist,kommt zwar ein Fehler, aber das Spiel wird normal(nur ohne dieses Objekt,weil alle Funktionen, die das Objekt sichtbar machen, in der script.txt stehn(müssen))gestartet.
Kommen wir nun also zur Definition.txt
Erstellt also eine neue Textdatei und nennt sie definition
Grundsätzlich ähnelt sie der defcore.txt aus Clonk Rage, also gilt für das setzen von Eigenschaftswerten, die auf die ich gleich noch genauer eingehe:
Code:
Eigenschaft=Wert
z.B.:
gravity=1
Der Unterschied zur DefCore aus Clonk Rage ist allerdings, dass die Datei wesentlich weniger Werte besitzt, und Eigenschaften wie "verschiebbar","steuerbar(R drücken)","aufnehmbar" in der script Datei und nich der definitions Datei gelöst werden.
Hier eine Übersicht der Eigensachften, und was sie bedeuten:theorethisch können alle Eigenschaften weggelassen werden, was allerdings bei manchen keinen Sinn macht
gravity Wenn 1, Verhält sich das Objekt gemäß der Schwerkraft, Wenn 0,wird die Richtung im Flug nur durch Kollisionen mit anderen Objketen geändert
friction Gibt an, wie weit das Objekt bei einem Aufprall wieder zurück fliegt(ein gutes Beispiel zum Verstehen ist ein Flummi), Standartwert ist 0,Höchstwert ist 100
mass Gibt das Gewicht das Objektes an,also wie weit das Objekt fliegt, wenn man es wirft,Standartwert(z.B. beim Stein) ist 100,bei 0 ist das objekt unbeweglich,gut um zum Beispiel die Wurfweite eines Schneeballs zu erhöhen
reserve Gibt an, wie viele Locals(kommt im Script) im Script benutzt werden
name Ein guter Name für das Objekt, zum Beispiel für "trägt NAME in der hand"
desc Eine Beschreibung für das Objekt, wird zum Beispiel im Kaufmenü angezeigt, sollte nicht zuuu lang sein
vertices Gibt die anzahl der Kollisionskugeln, oder Vierecken an
vertexx X-Position des MittelPunkts der Vertices, mehrere Werte werden durch "," getrennt(Wenn ich zeit hab, mach ich auch noch mal ein Vertice Tutorial
vertexy Y...
vertexz Z...
vertexr Radius der Vertex-Kugel(Radius=Durchmesser : 2), bei viereckigem Vertex Die hälfte der Breite und Tiefe(Grundfläche von viereckigen Vertices können nur Quadrate sein
vertexh Wenn nicht angegeben oder 0, Kugel Vertex, wenn angegeben die Hälfter der Höhe des Vertex

zum Schluss noch ein Beispiel: ein eigentlich normales Objekt,mit der Größe eines Steins oder Flints,das leerdings etwas weiter fliegt als ein Stein oder Flint

Code:
gravity=1
mass=200
name=tollerStein
desc=ein tolles Objekt
vertices=1
vertexx=0 //kann weggelassen werden
vertexy=0 //kann weggelassen werden
vertexz=0 //kann weggelassen werden
vertexr=100
vertexh=0 //kann weggelassen werden

So, das wärs mit dem ersten Tutorial,weitere folgen
Eigene Objekte Teil 2: die Script.txt
So, seit dem letzten Tutorial könnt ihr jetzt (zumindest wahrscheinlich, bei Fragen könnt ihr einfach in diesem Threath oder oder bei Scripting & Hilfe posten) die "definition.txt" erstellen. Leider (oder auch nicht, gwx-script ist seeehr schnell, und dadurch, dass sehr viel im script geregelt wird, kann man auch sehr große Änderungen innerhalb eines Objekts durchführen, ohne dass man ein 2tes machen muss) ist das nur der 1ste Teil, den man brauch, um ein schönes Objekt zu erstellen.Der zweite ist wie schon erwähnt eben die script.txt
In ihr wird geregelt:
1.Das Verhalten des Objekts, wenn es z.B. ein anderes berührt, oder eine Taste gedrückt wurde
2.Das Aussehen des Objekts, also welches Bild (Textur) auf das Model bei welchem Material gelegt werden soll
3.Von welchem Objekt das Objekt aufgenmmen werden kann
in der definition.txt werden also nur die physikalischen Eigenschaften und die Vertices geregelt.

gucken wir uns doch einmal den Script eines Steines an:
Code:

cdecl stein_load
{
 loadmodel("model_stein");
 loadtexture("stein_textur");
 loadtexture("stein_titel");
}

cdecl stein_render(o)
{
 //defaultrender(o);
 glscale(200,200,200);
 glenable(gl_texture_2d);
 glbindtexture(gl_texture_2d,getid("stein_textur"));
 gluseshader(getid("bump"));
 glcalllist(getid("model_stein"));
}

cdecl stein_hit(o,o2)
{
 if(o2<>0){dodamage(o2,length(getspeed(o))/2);};
}

cdecl stein_intern(t)
{
 if(t=getid("clonk")){return 1;};
 if(t=getid("geld")){return 1};
 if(t=getid("menuitem")){return getid("stein_titel")};
}

so, das war der Gesamte, fangen wir bei der ersten Funktion an:
Funktionen sind in gwx allgemein so aufgebaut:
Code:
Name des Ordners, in dem die definition.txt und die script.txt drin sind(=Name des Objekts)_(Unterstrich)Name der Funtion diese Objektes
also z.B.
Code:
Clonk_Render
oder
Code:
Flint_Hit
nun aber wieder zum Stein
cdecl stein_load[/code] Hier beginnt die Funktion, die sachen die du also in den {...} Klammern hast, werden ausgeführt, wenn das Objekt am Anfang geladen wird
Code:
{
hier beginnt der Funktionsinhalt
Code:
 loadmodel("model_stein");
das Modell des Steines names "model_stein" wird geladen, damit es später benutzt werden kann
Code:
 loadtexture("stein_textur");
 loadtexture("stein_titel");
die Textur (das Bild) stein_textur und stein_titel(das Titelbild des Steines) wird geladen, dass es später benutzt werden kann
Ohne das laden kann das Objekt die Bilder und Modell-Dateien nicht nutzen und anzeigen, und es werden fehler kommen, also immer dran denken, alle Ressourcen in objekt_load zu laden.Die Endungen der Ressource (also z.B. .3ds, .png oder .jpg) muss/darf man nicht dahinter schreiben, deswegen düfen 2 Bilder oder Modelle nie den selben Name haben.
Code:
}
hier endet die Funktion
so schwer war das doch garnicht :), nun zur 2ten Funktion
Code:
cdecl stein_render(o)
{
 //defaultrender(o);
 glscale(200,200,200);
 glenable(gl_texture_2d);
 glbindtexture(gl_texture_2d,getid("stein_textur"));
 gluseshader(getid("bump"));
 glcalllist(getid("model_stein"));
}
Code:
cdecl stein_render(o)
dies Funktion wird immer aufgerufen, wenn das Obkekt angezeigt werden soll
Code:
{
hier beginnt die Funktion
Code:
 glscale(200,200,200);
hiermit wird das Modell (stein.3ds) doppelt so groß skaliert (in alle richtunegn vom Mitelpunkt 200 % Größe)
Code:
 glenable(gl_texture_2d);
das wird benötigt, um Texturen auf ein Objekt bringen zu können
Code:
glbindtexture(gl_texture_2d,getid("stein_textur"));
hiermit wird gesagt, welche Textur auf das Objekt gebunden soll, auf was genau sie aber gebunden wird, ist noch nicht klar.
Code:
gluseshader(getid("bump"));
das hier ist erstmal unwichtig, man kann diese Zeile auch weglassen, ohne das ein großer Unterschied auftritt.
Code:
 glcalllist(getid("model_stein"));
ier wird gesagt, dass die in glbindtextur geladene Textur auf das gesamte Modell(model_stein) gelegt werden soll.
Code:
}
hier endet die Funktion wieder.
wenn man also eine Textur auf das gesamte Modell legen will, gilt allgemein:
Code:
{
 glscale(100,100,100); //normale Modellgröße, kann auch ganz weggelassen werden, wenn alle Werte 100 % sind
 glenable(gl_texture_2d);
 glbindtexture(gl_texture_2d,getid("TEXTUR"));
 glcalllist(getid("MODELL"));
}
soviel zur Render-Funktion, nun zur nächsten (ja, schon die Vorletzte :) )
Code:
cdecl stein_hit(o,o2)
{
 if(o2<>0){dodamage(o2,length(getspeed(o))/2);};
}
da die hier ziemlich kurz ist, erkläre ich sie mal, ohne jede Zeile einzeln aufzugreifen.
die Objekt_Hit Funktion wird immer ausgeführt, wenn das Objekt auf den Boden oder andere Objekte stößt
Wenn das passiert, und o2 (getroffenes OBJEKT) nicht(<>) 0 ist, wird dem getroffenen Objekt Geschwindigkeit des Steins durch 2 Schaden hinzugefügt.
Ja, schon fast fertig mit der Scripterklärung, nur noch eins:
Code:

cdecl stein_intern(t)
{
 if(t=getid("clonk")){return 1;};
 if(t=getid("geld")){return 1};
 if(t=getid("menuitem")){return getid("stein_titel")};
}
Code:

cdecl stein_intern(t)
wird bei allen Möleichen sachen aufgerufen
Code:
{
naja, müsste man ja langsam kennen, beginnt den Funktioninhalt
Code:
if(t=getid("clonk")){return 1;};
das Objekt kann von einem Objekt namnes "Clonk" eingesammelt werden
Code:
 if(t=getid("geld")){return 1};
das Objekt ist 1 Geld Wert
Code:
 if(t=getid("menuitem")){return getid("stein_titel")};
das Titelbild des Objektes ist "stein_titel" (ja, die kommt auch noch dran)
Code:
}
die Funktion ist beendet, die Erklärung des Stein-Scripts auch.

HIER IST ERSTMAL BAUSTELLE, ES WIRD WEITERGEARBEITET


Zuletzt von !cORe!trike994 am Sa 9 Mai 2009 - 12:05 bearbeitet; insgesamt 4-mal bearbeitet
!cORe!trike994
!cORe!trike994
Admin

Anzahl der Beiträge : 937
Anmeldedatum : 29.12.08
Alter : 30
Ort : Rostock/Pforzheim

https://gwxf.forumieren.com

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  Carli Sa 21 Feb 2009 - 15:32

Super.
Wenn ich Zeit hab und alle 3 Tutorials zusammen fertig sind, werd ich das TUT in die Entwicklerdoku reinpacken. (Verher natürlich GROSS-und kleinschreibung ändern und Rehctschrebfeler korigirn Wink )

Carli
Admin

Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  !cORe!trike994 Sa 21 Feb 2009 - 22:19

jo, hab so schon 2 stunden dran gesessen, sry Very Happy
dange für das lob
!cORe!trike994
!cORe!trike994
Admin

Anzahl der Beiträge : 937
Anmeldedatum : 29.12.08
Alter : 30
Ort : Rostock/Pforzheim

https://gwxf.forumieren.com

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  !cORe!trike994 Sa 9 Mai 2009 - 12:27

ach..öhm..ich hab den 1sten script teil hinzugefügt *uff*
!cORe!trike994
!cORe!trike994
Admin

Anzahl der Beiträge : 937
Anmeldedatum : 29.12.08
Alter : 30
Ort : Rostock/Pforzheim

https://gwxf.forumieren.com

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  Carli Sa 9 Mai 2009 - 17:59

Ich glaub irgendwann sammeln wir alle diese Tuts bzw. alle Zwischentuts, die ich im Downloadbereich angedeutet hab und machen die für gwX-Fans als online-Doku.

Wichtig ist vor allem, dass wir immer neue Scripter für gwX gewinnen, danke Trike für den guten Anfang.

Carli
Admin

Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  [Alex Sa 9 Mai 2009 - 19:28

Ich C++ gelehrnt früher und deswegen kann ich schon einiges^^
Ich find die tut verdamt gut^^

[Alex

Anzahl der Beiträge : 6
Anmeldedatum : 28.01.09

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  !cORe!trike994 Sa 9 Mai 2009 - 21:12

beiden danke Smile
!cORe!trike994
!cORe!trike994
Admin

Anzahl der Beiträge : 937
Anmeldedatum : 29.12.08
Alter : 30
Ort : Rostock/Pforzheim

https://gwxf.forumieren.com

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  Eddy Sa 9 Mai 2009 - 22:14

Ich finds auch sehr informativ werd mal probieren mit nem model von nem kumpel n zap zu basteln

Eddy

Anzahl der Beiträge : 509
Anmeldedatum : 14.01.09
Alter : 29

http://systems.bitfarmclan.de

Nach oben Nach unten

eigene Objekte TEil1: Packs und Definition.txt Empty Re: eigene Objekte TEil1: Packs und Definition.txt

Beitrag  Gesponserte Inhalte


Gesponserte Inhalte


Nach oben Nach unten

Nach oben

- Ähnliche Themen

 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten