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