SpielerID einer Entity herausfinden

» Siedler Map Source Forum » Siedler DEdK Script Forum » SpielerID einer Entity herausfinden

Seiten: 1

BalistiK
#1
04.01.2018 14:29
Beiträge: 70

SpielerID einer Entity herausfinden

Hey, ich bins...
ich bin gerade irgendwie nicht schlau genug herauszufinden, ob es eine Logic-Funktion oder sowas Ähnliches gibt, um die Spieler-ID einer Entity herauszufinden... .-.

Wer da was hat, bitte schreiben. Ich such mich hier gerade nur ins Leere :/

mcb
#2
04.01.2018 14:53
Beiträge: 1472

GetPlayer(id) ist wohl was du suchst. Benutzt intern eine Logic-Funktion dafür, die braucht aber eine Entityid.

BalistiK
#3
04.01.2018 14:57
Beiträge: 70

Super, danke.

Also wenn ich den Namen der Entity weiß:


GetPlayerID(GetEntityId( _entityName ))



Und wenn ich nur die Position weiß:


GetPlayerID(GetEntityID(Logic.GetEntityAtPosition( _posX, _posY )))



richtig?

mcb
#4
04.01.2018 15:05
Beiträge: 1472

Nein, nur:

GetPlayer(entityname)


Und Logic.GetEntityAtPosition hab ich noch nie benutzt.

(Es gibt ein GUI.GetPlayerID() das den vom lokalen Spieler gesteuerten player zurückgibt)

Zedeg
#5
04.01.2018 15:08
Beiträge: 428

-------------------------------------------------------------------------------------------------------
-- Return the id of the player.
-- @param _entity String with the name of the entity or Number with the id of the entity.
-- @return Number with the id of the player.

function GetPlayer(_entity)
	local entityId = GetEntityId(_entity)
	assert(IsValid(entityId))
	return Logic.EntityGetPlayer(entityId)
	end

Außerdem gibt Logic.GetEntityAtPosition höchstwahrscheinlich die ID zurück, weshalb GetID/GetEntityId sowieso unnötig ist.

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

Ludwig
#6
04.01.2018 21:54
Beiträge: 439

Hallo Balistik,
ich habe da mal eine Funktion zusammengebastelt, in der wohl alle einschlägigen Befehle vorkommen. Da kannst Du dir das was Du brauchst raussuchen.

function WerIstDas()
	if Logic.GetEntityAtPosition( GUI.GetMousePosition() ) then
		_EntityID = Logic.GetEntityAtPosition( GUI.GetMousePosition() )
		Message(" Entity ID ist ".._EntityID)
		_ty = Logic.GetEntityType(_EntityID)
		if _ty then
			_typ = Logic.GetEntityTypeName(_ty)
		else
			_typ = 0
		end
		if Logic.GetEntityName(_EntityID) then
			_nam = Logic.GetEntityName(_EntityID)
		else
			_nam = "ohne Namen"
		end
		if _typ then
			Message(" Entity ID ist ".._EntityID.."  Typ ist ".._typ.."  Name ist ".._nam)
		else
			Message(" Entity ID ist ".._EntityID)
		end
		if Logic.IsHero(	_EntityID)==1 then
			Message( " Die Categorie ist  HERO ")
		end
		if Logic.IsSettler(	_EntityID)==1 then
			Message( " Die Categorie ist  SETTLER ")
		end
		if Logic.IsLeader(	_EntityID)==1 then
			Message( " Die Categorie ist  LEADER ")
		end	
		if Logic.IsSerf(_EntityID)==1 then
			Message( " Die Categorie ist  SERF ")
		end
		if Logic.IsWorker(_EntityID)==1 then
			Message( " Die Categorie ist  WORKER ")
		end
		if Logic.IsEntityInCategory(_EntityID, EntityCategories.Military) == 1 then
			Message( " Die Categorie ist  MILITÄR ")
		end
	end
end


Gruß
Ludwig

Seiten: 1

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

Impressum