Scriptsprache? Trigger ? - Wie umsetzten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Cykid

Betreff: Scriptsprache? Trigger ? - Wie umsetzten

BeitragDo, Aug 21, 2014 4:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Aug 21, 2014 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Aug 21, 2014 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja genau so Smile
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

BeitragDo, Aug 21, 2014 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group