Quote:
Originally Posted by Copy&Past
Moin,
ich suche die UNIT MONSTER id's von Vizier, Seis und Inflector..
habe in der monsterclassid aber nichts dazu gefunden, sondern nur diablo..
kann mir jemand fix weiterhelfen?
regards
okay habe jetzt das:
Code:
var _infector;
_infector = NTC_FindUnit(NTC_UNIT_SPECTYPE,classid,0x04);
while(_infector && _infector.hp > 0);
allerdings, wie man vielleicht als jemand sieht der sich damit beschäftigt, funktioniert es nicht 
wo ist mein fehler?
muss ich "findunit" definieren oder sowas ?
wenn ja, wie denn?
|
"findunit" definieren?
Also erstmal entspricht der erste Parameter, den
NTC_FindUnit() bekommt, dem Typ des gesuchten Objekts, welcher einer Integer Konstante entspricht.
Wie diese Konstanten aussehen, zeigt ein kurzer Blick in die common library:
Code:
const NTC_UNIT_PLAYER = 0;
const NTC_UNIT_NPC = 1;
const NTC_UNIT_MERC = NTC_UNIT_NPC;
const NTC_UNIT_MONSTER = NTC_UNIT_NPC;
const NTC_UNIT_OBJECT = 2;
const NTC_UNIT_MISSILE = 3;
const NTC_UNIT_ITEM = 4;
const NTC_UNIT_TILE = 5;
Der zweite Parameter ist ein generisches Suchkriterium. Dies kann die
classid eines Monsters sein, aber durchaus auch ein string, oder eine
gid.
Der dritte Parameter beschreibt die Anzahl der Versuche, welche unternommen werden, wenn das Objekt nicht direkt instantiiert werden konnte.
(Wobei es genaugenommen eine Liste von Objekten ist)
Wie dir nun vermutlich klar wird, passt dein Aufruf nicht so ganz. Eine Konstante
NTC_UNIT_SPECTYPE ist nicht definiert, abgesehen davon ist
spectype eine Eigenschaft eines Monsterobjekts, nicht aber ein Objekttyp.
Was soll
classid sein, ist das in dem Kontext überhaupt definiert?
0x04 kann man machen, wenn man es bevorzugt, Hexadezimalzahlen zu verwenden, um die Anzahl der Versuche anzugeben, das wäre also nichtmal falsch.
Grundsätzlich bietet sich hier die Verwendung der
classid als Suchkriterium nicht an, weil die Eigenschaft
classid allgemein etwas über eine Monsterklasse aussagt und somit für alle Monster dieser Klasse identisch ist. Würdest du hier also eine
classid einsetzen, dann würdest du eine Liste aus Monster Objekten erhalten, die neben dem "Infector of Souls" auch dessen minions repräsentieren, sowie sämtliche anderen Monster des Typs "Venom Lord" in der Nähe (Nähe heisst etwa ein Radius von ~70).
Du müsstest also zusätzlich die Eigenschaft
spectype überprüfen, und solange die Liste durchlaufen, bis du auf ein Objekt triffst, bei dem der bitweise Abgleich des spectypes mit dem eines super unique Monsters (0x02) ein true liefert.
Eigentlich auch nicht weiter wild, aber du kannst eben alternativ mithilfe des passenden LocaleStrings direkt das Objekt instantiieren, was du eigentlich haben willst, womit du dir die Sache etwas erleichterst.
Die LocaleString IDs finden sich mit einem kurzen Blick ins vorhandene Diablo script:
Code:
Visier == 2851 (classid: 306)
De Seis == 2852 (classid: 312)
Infector == 2853 (classid: 362)
Lg
Muddy