Radius im Mapeditor einblenden

» Settlers Map Source Forums » Mapping » Radius im Mapeditor einblenden

Pages: 1

BalistiK
#1
13-11-2017 11:11
Posts: 56

Radius im Mapeditor einblenden

Hallo, erneut eine Frage bezüglich des Editors.
Gibt es eine Funktion, oder irgendeinen Trick, womit ich einen Radius in "Siedlerzentimetern" einblenden kann? Zum Beispiel will ich eine neue KI erstellen, dessen Ursprungspunkt (KI-Mitte) ein Scriptentity mit dem namen "AI2_Pos" ist. Nun gebe ich per MapEditor_SetupAI einen Aktionsradius von 4000 für die KI. Ich weiß jedoch nicht wie groß dieser Radius jetzt tatsächlich ist, von wo bis wo er sich erstreckt und kann ihn auch nicht sehen. Gibt es da irgdenwo einen Trick oder eine Möglichkeit sowas einzublenden? Oder soetwas ähnliches zu erreichen? Damit ich den Radius schon im Mapeditor einsehen kann? Ausprobieren per explore kann unter Umständen viel zu lange für sowas dauern...

Auf eine Antwort freue ich mich sehr.
MFG,
BalistiK

____________________
Wenn man es nicht auch einfach erklären kann, hat man es erst garnicht richtig verstanden.

mcb
#2
13-11-2017 16:08
Posts: 1262

Am einfachsten wäre es wohl, die komplette Map aufzudecken und per Debugger Entitys genau auf dem Radius zu platzieren, so kannst du die entsprechenden Gebiete leicht erkennen.

--- FuncInCirclePos  mcb  v1.1
-- Neue Funktion auf Grundlage von KreisPosition von Noigi.
-- Führt eine Funktion in einem Kreis um _pos aus, mit _spacing Abstand zwischen den Punkten.
-- Übergeben wird ein erweitertes Positionstable mit zusätzlicher Rotation r.
-- 
-- FuncInCirclePos(GetPosition(id), 1000, 100, function(p)
-- 		Logic.CreateEffect(GGL_Effects.FXChopTree, p.X, p.Y, nil)
-- end)
function FuncInCirclePos(_pos, _range, _spacing, _func)
	-- Validate input
	if type(_pos) == "string" or type(_pos) == "number" then
		_pos = GetPosition(_pos);
	end
	assert( IsValidPosition(_pos), "Benoetigt Position!" );
	assert( type(_range) == "number", "Benoetigt Reichweitenangabe!" );
	_spacing = _spacing or 100;
	assert( type(_spacing) == "number", "Benoetigt Abstandsangabe!" );
	assert( type(_func) == "function", "Benoetigt Funktion!" );
	
	-- Determine angle step size
	local perimeter = 2 * _range * math.pi;
	local n = math.floor(perimeter / _spacing);
	local angleStep = 360/n;
	
	-- Go!
	local nSin;
	local nCos;
	local angle;
	local x,y,eID;
	for i = 0,(n-1) do
		angle = i*angleStep;
		nSin = math.sin((math.rad(angle)));
		nCos = math.cos((math.rad(angle)));
		x = _pos.X - nCos*_range;
		y = _pos.Y - nSin*_range;
		_func({X=x,Y=y,r=angle});
	end
end

berechnet dir die passenden Positionen dazu.
Verwenden kannst du es z.B. so:

function markRange(pos, range)
   if markRangeIds then
      for _, id in ipairs(markRangeIds) do
         DestroyEntity(id)
      end
   end
   markRangeIds = {}
   FuncInCirclePos(pos, range, 250, function(p)
      local id = Logic.CreateEntity(Entities.XD_CoordinateEntity, p.X, p.Y, 0, 0)
      table.insert(markRangeIds, id)
   end)
end


markRange("AI2_Pos", 4000)

Peter-FS
#3
16-11-2017 11:15
Posts: 1049

Radius anzeigen geht einfacher

Hi,
das geht ganz einfach.

Ein Ambient Entity setzen und den entsprechen Radius eingeben, man erhällt einen weißen Kreis.
Achtung: Radius(cm)/100 eingeben -> Radius in m

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

BalistiK
#4
16-11-2017 11:20
Posts: 56

Super, danke an euch beide.

Damit kann ich leichter Editieren

Gruß,
BalistiK

____________________
Wenn man es nicht auch einfach erklären kann, hat man es erst garnicht richtig verstanden.

Peter-FS
#5
16-11-2017 11:31
Posts: 1049

Radius

Nachtrag
Habe es gerade noch mal geprüft, Eingabe Radius bei XS_Ambient in m.

__________________________________________________________________
dabei fällt mir auf, wird bei den Area Abfragen der Radius oder der Durchmesser verwendet?
z.B. hier
AreEntitiesInArea(_player, _entityType, _position, _range, _amount)

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Play4FuN
#6
16-11-2017 21:05
Posts: 470

Betreffend AreEntitiesInArea: es wäre mir komplett neu, wenn da irgendwo der Durchmesser verwendet würde.

____________________
LG Play4FuN

Pages: 1

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

Impressum