Bereich markieren
» Siedler Map Source Forum » Siedler DEdK Script Forum » Bereich markieren
Seiten: 1
RitterLeo
|
#1 19.03.2018 08:46 Beiträge: 237 |
Bereich markieren
Kennt jemand von euch eine Funktion um einen bestimmten Bereich nicht zu verlassen bzw. diese Funktion dann wieder zu entfernen?
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
Play4FuN
|
#2 19.03.2018 09:31 Beiträge: 704 |
Das musst Du bitte etwas genauer beschreiben, was Du vor hast.
Wer genau soll einen Bereich nicht verlassen? Eine bestimmte Einheit? Alle Spieler? Eine KI?
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
RitterLeo
|
#3 19.03.2018 12:23 Beiträge: 237 |
Der Spieler selbst. Habe schon so eingestellt das die KI nicht rumrennt.
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
Play4FuN
|
#4 19.03.2018 13:00 Beiträge: 704 |
Ansatz für Gebäudebau beschränken:
GUIAction_PlaceBuildingOrig = GUIAction_PlaceBuilding GUIAction_PlaceBuilding = function(_type) GUIAction_PlaceBuildingOrig(_type) if ... then -- Bedingung(en) prüfen GUI.CancelState() -- Abbrechen end end
Für die Bewegung der Siedler wäre es einfacher, wenn man Felsen o.ä. setzt, damit die Einheiten gar nicht aus einem Gebiet laufen können. Ansonsten müsste man entweder
a) alle Spielereinheiten überwachen und Einheiten außerhalb zurückschicken oder besser
b) bei einem Move-Befehl eine Abfrage einbauen, die prüft, ob die Position in dem gewünschten Bereich ist oder nicht (vermutlich bessere Lösung)
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
warrior1024
|
#5 19.03.2018 16:12 Beiträge: 345 |
Der GUIHack wird aber so nicht funktionieren:
Der Spieler kann den Button drücken, wenn er sich im erlaubten Bereich befindet und sich dann mit der Maus aus dem erlaubten Bereich herausbewegen.
Am einfachsten wäre es wohl, den Spieler mit vielen XD_Rock7 einzusperren und diese mit
Logic.SetModelAndAnimSet( _id, Models.XD_Rock1) bzw Logic.SetEntityScriptingValue( _id, -30, 257)
unsichtbar zu machen. Dann kommt die KI aber auch nicht über die Grenzen.
Wenn man nur den Spieler einsperren will:
1. HighResJob, der prüft, ob der Spieler ein Gebäude bauen will und das ganze abbricht, falls sich die Maus aus dem erlaubten Gebiet herausbewegt(http://www.siedler-games.de/si...hp/utilfunctions:buildingcheck).
2. Sollte der Spieler doch eine Baustelle ausserhalb des Bereichs haben, muss diese sofort zerstört werden.
3. Ein Job muss prüfen, wohin sich die relevanten Entities(Helden, Leibis, Hauptmänner, Milizen?) bewegen wollen und evtl einen Stopbefehl senden. Das Ziel müsste über ScriptingValues auslesbar sein. Die vom Spieler geschickten Befehle lassen sich nicht auf der LUA-Ebene abfangen.
____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal
Play4FuN
|
#6 19.03.2018 16:52 Beiträge: 704 |
Klaro, das war ja nur der Ansatz, die Prüfung muss selbstverständlich solange durchgeführt werde, bis der GUI state ~= PlaceBuilding
Das mit den Steinen wäre auch eine Idee, Vorteil hier wäre sogar, dass man relativ leicht auch "unförmige" Bereiche erstellen kann.
____________________
LG Play4FuN
Siedler DEdK Mapping + Scripting Tutorials
MadShadow
|
#7 19.03.2018 22:00 Beiträge: 372 |
Am besten noch die XD Snow Barrier, die blockt gleich eine ganze Linie, dann braucht man nicht soviele Steine.
RitterLeo
|
#8 20.03.2018 08:39 Beiträge: 237 |
Also einfach Steine setzen? Es ist toll wenn man auf die einfachsten Ideen nicht kommt. Aber danke für die Hilfe.
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
Seiten: 1