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

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum