Scriptsprache? Trigger ? - Wie umsetzten
Übersicht BlitzBasic Beginners-Corner
CykidBetreff: Scriptsprache? Trigger ? - Wie umsetzten |
Do, Aug 21, 2014 4:11 Antworten mit Zitat |
|
---|---|---|
Hallo zusammen!
Mein Map editor ist "fast" fertig... wuhu! Allerdings fehlt mir noch eine Sache: Ich möchte nicht alle Events Hardcoden und hätte daher gerne map spezifische Scripts. Im moment ist es so das es eine Master map gibt welche in x sub maps, mit eignen X und Y Koords , aufgeteilt ist. Jetzt hätte ich gerne Events wie z.b. Spieler bewegt sich auf Feld X und dann soll halt N ausgelöst werden. Im Ansatz dachte ich an sowas wie Code: [AUSKLAPPEN] master_X = 3
master_Y = 0 sub_X = 14 sub_Y = 12 event = Attack trigger: sub_X(14) tile = 0 sub_Y(12) tile = 0 In Game würde ich alle Trigger in Types einlesen und diese dann abarbeiten. Gibt es eine schönere Lösung wo ich mir vlt. auch das riesen String auseinanderbauen sparen kann? |
||
DAK |
Do, Aug 21, 2014 10:38 Antworten mit Zitat |
|
---|---|---|
Lass mich das mal verstehen: Du hast einen Mapeditor, mit einer selbstgemachten Scriptsprache, oder?
Dabei gibt es Trigger, die ausgelöst werden, wenn eine bestimmte Kombination an Bedingungen zutrifft, stimmt das? Viele Map-Editoren mit denen ich bisher gearbeitet habe (z.B. der von Warcraft 3) trennen die Bedingungen, ob ein Trigger ausgelöst wird in Auslöser und Bedingungen. Ein Auslöser ist ein Event, also ein Ereignis, dass nur ausgelöst wird, aber nicht bestehen bleibt. Beispiel: Einheit X stirbt oder Einheit Y betritt Gebiet Z. Eine Bedingung ist etwas Dauerhaftes, wie z.B. Einheit X ist tot oder Einheit Y befindet sich in Gebiet Z. Wenn du nicht unbedingt eine eigene Scriptsprache machen willst, dann könntest du dir z.B. LUA anschauen, was ist eine fertige und sehr gute Scriptsprache. Um solche Trigger in LUA einzubauen, mach in LUA z.B. so eine Funktion: Code: [AUSKLAPPEN] function event_unit_entered(unit,x,y)
end In diese Funktion trägst du die Bedingungen für jeden Trigger ein, der dieses Event verwendet: Code: [AUSKLAPPEN] function event_unit_entered(unit,x,y)
if x==15 and y==21 and unit.name=="Max" and unit.hp>50 then my_trigger() end end function my_trigger() -- Was auch immer dann passieren soll end |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Cykid |
Do, Aug 21, 2014 17:40 Antworten mit Zitat |
|
---|---|---|
Ja genau so
Nur ist das "Script" noch WIP Aber ich werde mir mal Lua anschauen. Ziel ist es das ich nur einmal dem Spiel beibringe die Sachen zu verstehen und dann nie wieder Events "hardcoden" muss also alla Wenn Level = "Palast" und Spieler macht X dann tue das das das das das das das sondern ebend alles via events steuere, was das ganze auch "mod" freundlicher machen soll |
||
DAK |
Do, Aug 21, 2014 19:40 Antworten mit Zitat |
|
---|---|---|
Jup, dann ist Lua eigentlich perfekt für dich. Da hast du eine volle und erprobte Scriptsprache, in der schon auch ganze Spiele geschrieben wurden.
Alles was du machen brauchst ist eben eine Event-Funktion, die von Blitz aus aufgerufen wird, in der du alle Trigger passend zu ihren Bedingungen aufrufst. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group