R: Levels und Objekte!


2004-03-05 19:43 #1
Hab erst seit Sonntag mit dem programieren angefangen und habe schon über 100 Objekte aus Robotjun und Robot 1!Ist echt Anstrengend aber es lohnt sich vor allem bei Mauern wenn Sie abgerundet sind, sieht es einfach besser aus!Seht euch mal den Screenshot vom meinem ersten Level an!Die Größe ist die von Robot identisch!Es gibt sogar schon eine Highscore, Lebens- und Goldzähler!Wenn ich weiter so hart arbeite könnte Ich vielleicht schon übernächstes Wochenende eine Beta-Version rausbringen!

mfg

Robotfreak8o

PS:Ich hoffe euch gefällt der Sreen vom 1.Level!
Ihr könnt euch auf Tobor I freuen!

<IMG Level1.htm>
2004-03-05 21:40 #2
Muss ich schon sagen, sieht sehr viel versprechend aus! Das man mit solchen Programmen so schnell "Ziele erzielen" kann.

Grüße,
LordEverything
2004-03-07 17:49 #3
Ja, mit dem GM kann man schnell was realisieren, sich aber leider auch sehr schnell verzetteln 😉 Sieht aber klasse aus!

Soll ich Skripte für die in Robot verwendete Schriftart und so bereitstellen? Der Aufruf sehe dann so aus:

gfx_print(breite_schrift, 10, 0, "Gold: ", c_black);
2004-03-07 17:54 #4
Danke!Das größte Problem ist bei mir jedoch momentan der Raumwechsel!Ich habe bei meinem Held Die Funktion Persistent eingestellt!Anschließend wenn ich ihn in den unteren Raum teleportiere ist am unteren ende des Raumes!Was kann Ich machen um eine genaue Postion für den Transport in den nächsten Raum zu garantieren?

mfg

Robotfreak
2004-03-07 18:09 #5
Hm, ich habe das ganze mittels eines Skriptes gemacht:

if (am_rand(OBJ_SPIELER, SPIELER_RICHTUNG) == true)
{
switch (argument1)
{
case 0:
room_goto(global.norden);
obj_Spieler.y = 28 * 12;
break;
case 1:
room_goto(global.osten);
obj_Spieler.x = 0;
break;
case 2:
room_goto(global.sueden);
obj_Spieler.y = 12;
break;
case 3:
room_goto(global.westen);
obj_Spieler.x = 39 * 12;
break;
}
}

In global.osten / global.sueden / ... steht welcher Raum in welcher Richtung liegt. Du könntest (nehme an du benutzt das Zusammenklicken der Ereignisse 😉 das Raumwechselicon und gleich danach unter CODE das Variable setzen Icon nutzen. Da muesste dann abhängig von der Richtung:

Applies to: Self
Variable: x (oder y)
Value: z.B. 39 * 12

stehen. Aber per Script ist es einfacher bei Bugs oder Erweiterungen zu ändern... Naja mein Skript werde ich noch mittels nem Array etwas vereinfachen 😉

Du solltest nur aufpassen, das im neuen Raum an den alten Spielerkoordinaten (bevor du die X oder Y Variable änderst) kein Elektrozaun oder so ist, denn dann verliert der Spieler ein Leben, bevor der Spieler überhaupt was vom neuen Raum zu Gesicht bekommt 😉
2004-03-07 18:18 #6
Danke für die schnelle Antwort!Habe noch ein Problem!Mein Held kann nicht animiert laufen!wenn Ich nach rechts gehe hebt er die ganze Zeit nur sein rechtes Bein! Ich will aber das er bei jedem Schritt den Sprite wechselt wie mach ich das?

mfg

Robotfreak

PS:Wered dich in die Credits schreiben!(Als Fausti)😃
2004-03-07 18:45 #7
Mal schaun...

Also mein Sprite für den Spieler hat 3 Bilder. Beide Beine unten, Linkes Bein oben, Rechtes Bein oben.

Im Create Ereignis des Spielers musst du die Variable (self | image_single | 0) setzen. Damit er, wenn er sich nicht bewegt, auch nicht animiert ist.
Im End Step Ereignis musst du prüfen, ob der Spieler sich ein Feld weiter bewegt hat (CONTROL | aligned with grid "blaues Netz" | 16 x 12). Wenn ja, dann wie oben image_single auf 0 setzen. Und auch die Geschwindigkeit auf 0 setzen.
Bei den Tastendruck Ereignissen setzt du neben Geschwindigkeit und Richtung die Variable image_single auf -1.

Für die Robot-like Bewegungen im ganzen Spiel ist die instance-aligned-with-grid Funktion sehr wichtig.

Hast du es hinbekommen, das man mehrere Isolatoren gleichzeitig bewegen kann? Wenn ja, könntest du mir dann mal die Ausgabe von "Show Information" deines Isolatoren Objektes geben?
2004-03-07 22:27 #8
Danke nochmals!Würde ich ja gerne geben aber bei mir kann man nichtmal einen Isolator alleine verschieben da er sich immer an irgenwelchen Objekten verheddert!😬 (heul)

aber ich kann dir sagen wenn du willst wie man das mit den Goldzählen macht!(Ich habe es mit Hilfe der Health Leiste gemacht!)

mfg

Robotfreak
2004-03-07 22:48 #9
Gold zählen war bei mir schon funktionstüchtig (glaub ich...)

Du benutzt sicher die Unregistrierte Version, oder? Wenn ja muss ich bei Lösungsvorschlägen immer aufpassen. Da dann nicht alle Dinge funktionieren.

Das mit den Isolatoren werd ich mir noch mal durch den Kopf gehen lassen. Dürfte eh schwer werden die eingebaute Save/Load Funktion zu verwenden. Da die nicht alle Variablen speichert.

Wenn du mutig bist, schau mal in deine ezboard Inbox 😉
2004-03-07 22:59 #10
Vielen, Vielen Dank!🙃
Wenn du irgendwelche Objekte aus Robjun oder Robot1 brauchst frag mich nur!Kann dir z.b wenn du willst alle Buchstaben schicken!(Mir fehlt aber leider noch das X aber das braucht man ja nicht unbedingt!

mfg

Robotfreak
2004-03-07 23:06 #11
Ich werd mal schaun, ob ich einige Dinge (Schriftart, Inventar, Menü) vielleicht als Lib für den Ereigniseditor umsetzen kann. Dann kannst du die auch ganz einfach zusammen-klicken.

Hab da auch ne interessante Idee, was das Speichern und Laden angeht (sobald ich das Problem mit den verschwindenden Variablen gelöst habe): Als Dialog dem Menü von Robot nachempfunden aber mit kleinem Screenshot zu jedem Spielstand. Das wäre vielleicht sogar ne Idee für Andreas...
2004-03-07 23:09 #12
Mein Letztes😄 und wirklich allergrößtes Problem ist das ich einen Rucksack brauche aber ich kann kein Menü erstellen weil ich nicht weiß wie sowas funzt!

mfg

Robotfreak

PS:@tofahrn
Vielen Dank!Jetzt gibt es endlich wieder Ordnung im Forum!
2004-03-07 23:20 #13
Das wird ein etwas grösseres Problem. Dafür brauchst du jetzt wirklich Skripte. Die für die interne Speicherung des Inventars wären nicht das Problem, aber für die Darstellung wird das schon heftig. Ich arbeite gerade dran die Routinen etwas zu säubern.

Ich würde vorschlagen, ich setzt mich diese Woche mal nachmittags hin und bring mal Ordnung in die Skripts, dann kann ich dir am Wochenende alles nebst Anleitung schicken. Ist noch alles ziemlich durcheinander hier. Und nur die Skripte für die interne Speicherung nützen dir nicht viel.

Nebenbei: Hatte dir mal ne eMail geschickt. Ist die überhaupt angekommen? Weil meine eMail an Herc scheint auch nicht ihr Ziel gefunden zu haben.
2004-03-07 23:26 #14
Leider ist bei mir keine E-mail angekommen!

mfg

Robotfreak

PS:Ich bedanke mich schon im voraus!
2004-03-07 23:38 #15
Hab mal ne eMail geschickt. Sag mal bescheid, ob sie angekommen ist 😉
2004-03-12 17:19 #16
herc
email an mich ?
war 1 woche offline weil auf springscool am möhnesee ( www.ik2004.de )
ich werd mal meine mails jetzt durchforsten
2004-03-13 13:32 #17
herc
hey, hab tatsächlich keine email bekommen. worum gings denn? bitte mail mir nochmal, an post @ andre-krause net
2004-03-13 18:24 #18
2004-03-14 16:06 #19
@Fausti
danke erstmal für deine Version!Bin wirklich beeindruckt vor allem das mit der Säureflasche auch gleichzeitig mit mehreren Wänden geklappt hat!😀
Aber kannst du mir eine Anleitung schicken wie ich das Menü einfügen kann bei meinem Spiel!Bei deinen Scripten habe ich überhaupt nicht durchgeblickt!

mfg

Robotfreak

PS:Wenn du mir die Anleitung schickst kannst du ja deine aktuelle Fassung von deinem Spiel beilegen damit es nicht zu komplikation kommt!
2004-03-14 21:21 #20
@herc: Keine einzige eMail, welche mich von meinem Hotmail Account verschickt habe, scheint angekommen zu sein😖 Also werd ich mal gleich mal eine von Web.de schicken 😉

@Robotfreak: Also, ich habe versucht einige meiner Skripte in einer Bibliothek fürs Zusammenklicken zu bearbeiten. Aber das Resultat ist nicht wirklich überzeugend. Zumal es ziemliche Probleme beim Inventar gibt. Wenn ich das Inventar einfach per Skript mache, kann ich für die Benutzung eines Gegenstandes einfach ein Skript schreiben. Aber wenn ich das Inventar mittels zusammenklicken erstelle (ohne das ich auch nur eine Zeile Code schreibe) dann hänge ich an bei der Benutzung eines Gegenstandes aus dem Inventar heraus echt in der Luft. (Dazu müsste man nämlich für jeden Gegenstand ein passendes Skript schreiben, Realisierung siehst du ja in meiner Version) An einer Lösung arbeite ich schon, aber ist nicht wirklich leicht zu realiseren, ohne dass ich dir zumute diese Skriptsprache zu lernen 😉

Man müsste irgendwie einen Raum haben, in dem von jedem Objekt, das einmal als Inventaritem enden könnte, eine persistente (Raumüberdauernde), unsichtbare Version (darf auch nicht auf Ereignisse reagieren) setzen. Der Raum müsste gleich am Anfang des Spiels gestartet werden (natürlich so das er nicht angezeigt wird 😉 Danach könnte man z.B. UserEvent0 dazu verwenden das Benutzen des Objektes zu definieren (zusammenklicken). Wenn man die ganze Prozedur nicht macht, dann funktioniert das Benutzen nicht mehr, da wir ja nach dem Einsammeln (zerstören des Objektes auf der Karte) keine Aktionen fürs Benutzen mehr haben.

OH GOTT, das klingt garantiert tierisch kompliziert. Aber leichter Verständlich bekomm ich das nicht erklärt ohne Non-Stop die GM Anleitung zu zitieren 😉 Und meine Lösung mit Skripte während der Laufzeit zu erstellen endet mit Verlust der Speicherfähigkeit des GM. Dann heisst es die Speicherroutine selber zu schreiben und das habe ich beim besten Willen nicht vor 😉

So jetzt zum Menü (Skripte) einbinden: das ganze läuft im "obj_Contr_Drawing" Objekt ab, dort siehst du ein Ereignis, das je nach Wert der show_text Variable bestimmte Aktione ausführt. Das Ereignis steuert z.B. diese Variable. Wenn sie durch Druck auf Esc gesetzt ist, zeichnet das Draw Ereignis das Menü. Wenn nicht dann die Leben-Punkte-und-so Leiste.
Hm, wie wäre es mit "Merge Game..." im File Menü? Dann setzt du irgendwo am Anfang des Spiels mein (persistentes) Controller Objekt und dürftest das Menü haben... Im "draw_textbox2" Skript kannst du die Hauptmenüpunkte anpassen und im "draw_textbox" Skript die Menüpunkte für das Szenenmenü. Wird nicht leicht, aber dürfte gehen solange ich noch an der Bibliothek arbeite. Und solange wird es auch keine neue Version geben, denn die ganzen Objekte nachher mittels der Bibliothek *neu* zu erstellen dürfte ziemlich Zeit kosten.