Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
2 registered members (TipmyPip, 1 invisible), 18,758 guests, and 8 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 2 of 5 1 2 3 4 5
Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: aztec] #126142
04/25/07 15:25
04/25/07 15:25
Joined: Apr 2007
Posts: 5
Dortmund, Germany
Rusty1s Offline
Newbie
Rusty1s  Offline
Newbie

Joined: Apr 2007
Posts: 5
Dortmund, Germany
Quote:

Ich finde es gut dass du mal versuchen wirst so die Grundlagen auf den tisch zu bringen Ich hätte sowas früher bestimmt nützlich gefunden




Wäre nur mal von Vorteil damit anzufangen und nicht die erste Seite dieses "Nachschlagwerkes" mit so etwas sinnlosem hier zu zu spammen!

Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: Rusty1s] #126143
04/25/07 16:30
04/25/07 16:30
Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
Puppeteer Offline OP
Expert
Puppeteer  Offline OP
Expert

Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
Richtig
Ich fange dann mal an: (wurde ja auch Zeit )
Also ein script besteht aus Funktionen.
Jede Funktion hat irgendeine Aufgabe, die Ausgeführt wird, wenn man die Funktion Startet.

z.B. wollen wir jetzt eine funktion schreiben die das Spiel sofort beendet, wie ihr vll schon wisst ist der Befehl sys_exit(" "); dazu da das Spiel zu beenden
In die Anführungszeichen könnt ihr dann noch einen Text schreiben der auf dem Schließenwindow angezeigt wird

also:

So schreibt man eine Funktion:
Code:
 Function Dernamederfunktion()
{
der inhalt der Funktion
}



In unserem Fall, wäre der Inhalt der Funktion nur einfach sys_Exit(" ").

Also:

Code:
 Function Dernamederfunktion()
{
sys_exit(" ");
}



Gut jetzt fehlt nur noch der Name.
Ihr könnt euch irgendeinen Namen für die Funktion ausdenken. Er hat nichts mit der eigentlichen Funktion zu tun.

Ihr könntet die Funktion z.b.
Omega_ist_doof oder spiel_aus nennen wobei der name keinen Befehl (z.B. sys_exit ) und keine Leerzeichen enthalten darf.

Nun haben wir schon eine Funktion die unser Spiel beendet:

Code:
 Function Spiel_aus()
{
sys_exit(" ");
}



Nun nochmal ein paar Spezailfunktionen:

Es gibt eine Funktion (sie heißt Main) die immer vorhanden sein muss!!!
Sie ist die Starterfunktion eures Spiels. In der ihr z.B. Level ladet oder andere Funktionen aufruft.

Nun wagen wir uns mal an die Main funktion ran.

Code:
 Function Spiel_aus()
{
sys_exit(" ");
}

Function main()
{
}




noch ist die main funktion leer, aber das wird sich schnell ändern:
ICh bringe euch einen neuen Befehl bei:
wait();
dieser Befehl pausiert die Funktion nach der Zahl (in Sekunden) (aber nur wenn vor der Zahl ein Minus steht warum erzähl ich später )

Code:
 Function Spiel_aus()
{
sys_exit(" ");
}

Function main()
{
wait(-5);
}



jetzt wird in unserer Main Funktion 5 Sekunden gewartet.
Nun soll nach den 5 Sekunden der Main Funktion unsere Spiel_aus Funktion starten.

Nichts ist leichter als das:

Code:
 Function Spiel_aus()
{
sys_exit(" ");
}

Function main()
{
wait(-5);
Spiel_aus();
}



jetzt wird in unserer Main funktion gewartet und dann die Spiel_aus Funktion aufgerufen

Jetzt speichert euer Werk (falls ihr das noch nicht getan habt )
So nun könnt ihr euer Werk bestaunen und zum laufen bringen
Dass macht ihr indem ihr:
Den WED (World Editor) öffnet und dann das (noch leere) Level speichert und dann auf Datei->Map Properties->add script geht ihr müsst dann nur noch euren Script auswählen (ich glaube das schafft ihr auch ohne mich )

Nun solltet ihr im WED auf "RUN" klicken (der Button mit dem Ausrufezeichen)
und dann auf "ok"

Nun solltet ihr 5 Sekunden einen Schwarzen Bildschrim haben der sich dann schließt
Gratulation

Nun will ich euch aber noch ein paar wichtige Sachen erklären:

1) Was bedeuten eigentlich diese ; am ende jedes Befehls?
also die sagen dem 3D Gamestudio nur, dass hier die Anweisung bzw. der Befehl aufhört, also würde es bei vergessen sowas auspucken:

Code:
 wait(-5)
Spiel_aus();



wait(-5)spiel_aus(); <- kenn ich nich

2) Wofür sind die geschweiften Klammern { ?
Dass ist auch relativ easy: Diese Klammern zeigen dem Gamestudio nur Anfang und Ende bestimmter Funktionen, damit es weiß wo was hingehört

3) Wofür sind eigentlich die () Klammern bei Funktionen?
Da kann man noch bis zu 4 Parameter reinhängen.
z.B.

Code:
 Function Spiel_aus(zeit_in_Sekunden)
{
wait(zeit_in_Sekunden*-1);//dass mal minus ist damit davor ein Minus steht ;)
sys_exit(" ");
}

Function Main()
{
Spiel_aus(5);
}



Jetzt ruft die Main Funktion die Spiel_aus Funktion und sagt "zeit_in_Sekunden ist 5"

Nun wartet die Sleep Anweisung so lange wie Zeit_in_Sekunden

Zeit_in_Sekunden ist eine Variable (ein Paltzhalter), in diesem Fall dür 5

So dass wars auch erstmal für heute...
Morgen Poste ich denke ich was über Variablen und IF und while usw.

Grüße
Jannes

P.s. Bei Fragen oder Kritik warum ich das nich toll erklärt habe einfach melden

Last edited by derOmega; 04/25/07 18:12.

Formally known as Omega
Avatar randomness by Quadraxas & Blade
http://omegapuppeteer.mybrute.com
Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: Puppeteer] #126144
04/25/07 16:32
04/25/07 16:32
Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
Xarthor Offline
Expert
Xarthor  Offline
Expert

Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
Und schon nen "Fehler" drin, sogar zwei.
1. exit() ist _alter_ syntax (siehe sys_exit(string); )
2. sleep() ist auch _alter_ syntax (siehe wait(-x); )

EDIT:
Falls ich das hier anmerken darf ist es auch immer sehr nützlich und übersichtlich wenn man die UBB Tags benutzt.
Also Script Code zwischen folgende tags schreibt:
[ code ] ... [ /code ]
(Ohne die leerzeichen)

Desweitern würde ich { } nicht als anfang und ende von bestimmten funktionen bezeichnen sondern als anfang und ende eines anweisungs block.
Aber das is wohl alles kleinlich

Last edited by Thunder; 04/25/07 16:34.
Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: Puppeteer] #126145
04/25/07 16:33
04/25/07 16:33
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline

3D Artist
rvL_eXile  Offline

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
Ich poste dann auch mal meinen Teil, hier einfach mal was man alles Braucht um ein Menü oder Hud zu programmieren:

Code:


Panel / Einstellungen

Panels werden beispielsweise für MENÜS oder Ingame HUDs benutz.

Beispiel:

bmap Hud = "Hud.bmp"; // Definiert eine Bitmap für den Hud ingame

Panel Mein_Hud
{
bmap = Hud; // Weise dem Panel die Bitmap HUD zu
pos_X=0; // Setze die Bitmap auf der X-Achse auf 0
pos_Y=0; // Setze die Bitmap auf der Y-Achse auf 0
Layer=1; // Der Layer (Ebene) ist für das übernander setzen der Bitmaps da
Flags=overlay,visible; // Overlay bedeutet dass der Alpha Kanal in der Bitmap nicht dargestellt wird, Visible ist für das Sichtbarmachen da
}

Digits:

Digits sind Zahlen, die auf einem Panel ausgegeben werden, diese können Beispielsweise für die Lebensanzeige dienen


Beispiel:

Var Leben=99;
bmap Hud = "Hud.bmp"; // Definiert eine Bitmap für den Hud ingame

Panel Hud_mit_Lebensanzeige
{
bmap = Hud; // Weise dem Panel die Bitmap HUD zu
pos_X=0; // Setze die Bitmap auf der X-Achse auf 0
pos_Y=0; // Setze die Bitmap auf der Y-Achse auf 0
Layer=1; // Der Layer (Ebene) ist für das übernander setzen der Bitmaps da
Digits= 0,0,2, Arial,1,Leben; /* Die ersten beiden Zahlen sind für die Positionen (X/Y),"2" bedeutet das Zahlen von -99 bis 99 dargestellt werden können, danach kommt der Font, Die nächste Zahl ist der Multiplikations Faktor,Leben ist die Variable die angezeigt werden soll*/
Flags=overlay,visible; // Overlay bedeutet das der Alpha Kanal in der Bitmap nicht dargestellt wird, Visible ist für das Sichtbar machen da

}

Buttons:

Buttons werden meistens in Menüs verwendet.

Beispiel:

//Definiere die Bitmaps Für das Panel und den Buttons

bmap Menue = "Menue.bmp"; // Definiert eine Bitmap für den Hud ingame
bmap neu_N_bmap = "newgame_normal.tga"; //Bitmap fuer die "Normale" Bitmap
bmap neu_O_bmap = "newgame_mouseover.tga"; //Bitmap fuer die "Mouse Over" Bitmap
bmap neu_C_bmap = "newgame_clicked.tga"; //Bitmap fuer die "Mouse Clicked" Bitmap



Panel Mein_Menü
{

bmap = Menue; // Weise dem Panel die Bitmap Menue zu

pos_X=0; // Setze die Bitmap auf der X-Achse auf 0
pos_Y=0; // Setze die Bitmap auf der Y-Achse auf 0
Layer=1; // Der Layer (Ebene) ist für das übernander setzen der Bitmaps da

button = 200, 680, neu_O_bmap, Neu_N_bmap, Neu_Cbmap, functionOn , functionOff, functionOver;

Flags=overlay,visible; // Overlay bedeutet das der Alpha Kanal in der Bitmap nicht dargestellt wird, Visible ist für das Sichtbar machen da
}

Die ersten beiden Zahlen bei Buttons sind für die Positionierung,
Neu_O_bmap ist, wenn die Maus über dem Buttons ist aber diese nicht beklickt hat,
Neu_N_bmap ist, wenn die Maus nicht auf dem Button ist
Neu_C_map ist, wenn die Maus nicht auf dem Button ist
functionOn Diese Funktion wird aufgerufen, wenn der Knopf angeklickt wird
functionOff Diese Funktion wird aufgerufen, wenn die Maus über dem Knopf losgelassen wird oder den Knopf verläßt
functionOver Diese Function wird aufgerufen, wenn der Button berührt wird





Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: rvL_eXile] #126146
04/25/07 16:41
04/25/07 16:41
Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
Puppeteer Offline OP
Expert
Puppeteer  Offline OP
Expert

Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
Oh... Habs edited... sry
Sagt mal kann man sys_exit(); auch so verwenden oder muss da null hin?
thx Omega


Formally known as Omega
Avatar randomness by Quadraxas & Blade
http://omegapuppeteer.mybrute.com
Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: Puppeteer] #126147
04/25/07 17:18
04/25/07 17:18
Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
Xarthor Offline
Expert
Xarthor  Offline
Expert

Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
sys_exit erwartet einen string, aber du kannst auch einen leeren string "" übergeben:
Code:

sys_exit("");



Ob die anweisung auch NULL oder 0 annimmt, weiß ich nicht, nie probiert, aber mit einem leeren string funktioniert es definitiv.

EDIT:
In deinem letzten Code Beispiel steht immer noch "exit"

Last edited by Thunder; 04/25/07 17:19.
Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: Xarthor] #126148
04/25/07 17:34
04/25/07 17:34
Joined: Apr 2007
Posts: 16
M
MrHp Offline
Newbie
MrHp  Offline
Newbie
M

Joined: Apr 2007
Posts: 16
hi


ic hab zwar tuts gemacht und alles verstanden aber nur wenn es um die grafik geht ^^.

ich such schon tuts wo es um die programmierung geht kann aber nix finden ?

ich bräucht einfach nur ein tut wo ein char einfach nur herumgehen kann in einer welt das wäre ein guter anfang.

wenn jemand so ein tut auf lager hat könnte er es verlinken bitte.

Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: MrHp] #126149
04/25/07 18:01
04/25/07 18:01
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline

3D Artist
rvL_eXile  Offline

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
Probiers einfach mal damit, der COde funktioniert, hoffe, das ich dies auch Ausführlich genug beschrieben habe !

Code:

Jump & Run Beispiel:

Als erstes müssen Sie sich immer klar sein was für ein Spiel es werden soll und was es beinhaltet.
Setzen Sie sich keines Falls zu hohe Ziele, dies wird sehr schnell ins Negative übergehen und Sie schnell demotivieren!
In diesem Beispiel werden wie ein kleines Jump & Run Spiel programmieren.

Fangen wir mal an !

Als erstes brauchen wir ein paar Variablen, hier einmal die Wichtigsten die immer für ein Spiel gebraucht werden:

Var Video_Mode=8; // Auflösung liegt nun bei 1024*768, sehen Sie bitte ins Handbuch um weitere Auflösungen und Erklärungen zu bekommen
Var Video_Screen=1; // Nun wird das Spiel im Fullscreen Modus gestartet, wenn der Wert =2; ist, wird das Spiel im Fenster Modus gestartet.
Var Video_Depth=16; // Das heisst das die Farbtiefe Ingame bei 16 Bit liegt, bei =32; wird die Farbtiefe mit 32 Bit dargestellt.

Nun kommen wir zu weiteren Variablen, die wir im Spiel verwenden werden.

Var Punkte; // Definition der Variable Punkte, diese werden wir später in das Punkte Panel setzen... Dies könnte man auch so schreiben: Var Punkte=0;

Var Spieler_vorne=17; /* Diese Variable wird mit einem Scancode belegt, in diesem Fall ist es die Taste W alle Scancodes können im Handbuch unter Tastenbelegung nachgeschaut werden...
Der Scan Code wird aber nur in der Player_Move Action verwendet, d.h. man könnte diese Variable auch als Punkte oder sonstiges verwenden*/

Var Spieler_hinten=31; // Taste S benutzen wir um den Spieler nach hinten zubewegen

Var Spieler_links_Drehung=30; // Die Taste A benutzen wir um den Spieler nach links zudrehen

Var Spieler_rechts_Drehung=32; // Die Taste D benutzen wir um den Spieler nach rechts zudrehen

Var Spieler_Bewegung; // Vector für die Spieler bewegung

Font Arial = "Arial",1,20; // Font: Arial Schriftart: Normal (2=Fett, 3=Kursiv) Schriftgröße=20

Entity* Player; // Weisst einer Entity den Namen "Player" zu

Action player_move
{
player=my; // Ich bin jetzt die Spielfigur
my.enable_entity=on; // Mach mich Senisbel gegen über anderen Entitys bei einer Kollision
my.event=Item; // Aber nur gegen die Entitys die diese Function haben !!

while(1) // Führe die { Anweisung } immer aus

{
Spieler_Bewegung.X = (key_pressed(Spieler_vorne)-key_pressed(Spieler_hinten))*10*time; /* Befehl das der Spieler bewegt wird wenn die Taste W oder S gedrückt wird, die Geschwindigkeit wie der Spieler sich bewegen soll, wird mit
10*time_Step; gesetzt*/

Player.pan-=10*(mouse_force.x+(key_pressed(turn_left)-key_pressed(turn_right)))*time; /* Der Spieler wird mit den Tasten A und D gedreht -=10*... bestimmt die Geschwindikeit */

Camera_Pos(); // Weise dem Spieler die Function der Kamera zu

c_move(my,Spieler_Bewegung,vector(0,0,0),glide+ignore_passable);
/* C_move ist für die Bewegung zuständig, ohne diesen Befehl wird sich der Spieler nicht bewegen können...
My= Weise dem Befehl C-Move den "My" Pointer zu
Spieler_Bewegung= Der Spieler kann durch Spieler_Bewegung bewegt werden
Vector(0,0,0)= Mit diesen Vector können Sie auch Entitys von alleine bewegen lassen (X,Y,Z)
Gleite an Schrägen entlang
Ignore_Passables=Ignoriere Passierbare Entitys*/

wait(1); //Warte einen Frame ab
}
}

Nun könnte sich der Spieler schon bewegen, aber halt etwas fehlt noch.
Nun kommen wir zum Kamera Script, diese Function weisen wir in der Action des Spielers dem Spieler mit dem Befehl Camera_pos(); (Hier könnten Sie auch einen X Beliebigen Namen nehmen, es müssen aber immer die Klammern () und das Semikolon ; dahinterstehen) zu.

Kamera:

Function Camera_Pos()
{
camera.genius = player;
camera.x = player.x;
camera.y = player.y;
camera.z = player.z+40;
camera.pan = player.pan;
}

Das wäre geschafft. Jetzt muss das Script noch im WED eingefügt werden ,dies machen Sie über:

File -> Map Properties -> Script öffnen

Nun müssen wir die Action dem Spieler Model im WED zuweisen:

Rechts Klick auf die Entity -> Properties -> Behavior

Wenn Sie dies gemacht haben, Compilieren sie das Level und probieren Sie es selber aus :)

Jetzt kommen wir zu dem Teil , indem der Spieler Items aufsammeln kann:

Dazu brauchen sie ein X Beliebiges Model welches Sie gerne für das Item verwenden wollen.

Items aufsammeln Code:



Function Item() // Diese Function muss später über der Player_Move Action stehen !
{
If (event_type == event_entity) // Wenn ich von einer Entity berührt werde, führe { Anweisung } aus
{
Punkte+=10; // Diesen Wert können Sie beliebig ändern
wait(1); // Warte einen Frame ab
ent_remove(you); // Wenn der Spieler das Item berührt hat, entferne das Item
}
}

Action Items // Diese Action wird dem Item zugewiesen
{

c_move(me,vector(0,0,0),nullvector, glide); // C_Move wird benötigt um die Kollision festzustellen, diese Code Zeile bewirkt sonst nichts!
}



Panel Punkte
{
//Hier können Sie vorher noch eine Bitmap zuweisen....
digits=50,500,3,Arial,1,Punkte; // Digit auf X=50, Y=500 für die Punkteanzeige
Flags=Visible; //Sei von Anfang an sichtbar
}



ISt net fertig, werde die Tage daran noch was basteln

cYa Sebastian


Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: rvL_eXile] #126150
04/25/07 18:14
04/25/07 18:14
Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
Puppeteer Offline OP
Expert
Puppeteer  Offline OP
Expert

Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
@ rvL_eXile:
Deine Tuts sind n bissel unübersichtlich
Liegt das an dem Code Teil?


Formally known as Omega
Avatar randomness by Quadraxas & Blade
http://omegapuppeteer.mybrute.com
Re: Der "Ich hab Tuts gem8 und nix verstaden" Thre [Re: Xarthor] #126151
04/25/07 18:17
04/25/07 18:17
Joined: Mar 2007
Posts: 261
Germany
Thracian Offline
Member
Thracian  Offline
Member

Joined: Mar 2007
Posts: 261
Germany
Hm, erstmal vielen Dank für die Hilfen, aber ich habe jetzt immer noch nicht vertanden wofür man das - beim wait braucht. Ist es damit der als Sekunden zählt und nicht als frames?


------------------------

All programmers are playwrights and all computers are lousy actors.
Page 2 of 5 1 2 3 4 5

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1