PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array-Index-Fehlermeldung bei Waffe mit DAM_FLY



Phael
01.06.2009, 20:59
Ich wollte eben mal aus Interesse eine Waffe erstellen, welche den Gegner wegschleudert. Begonnen habe ich mit.


INSTANCE ItMw_Bratpfanne (C_Item)
{
name = "Bratpfanne";

mainflag = ITEM_KAT_NF;
flags = ITEM_2HD_AXE;
material = MAT_METAL;

value = 50;
damageTotal = 15;
damageType = DAM_FLY;
range = Range_Drachenschneide;

cond_atr[2] = ATR_STRENGTH;
cond_value[2] = 10;
visual = "ItMw_Bratpfanne.3ds";

description = name;
TEXT[2] = NAME_damage;

COUNT[2] = damageTotal;
TEXT[3] = NAME_Str_needed;

COUNT[3] = cond_value[2];
TEXT[4] = NAME_TwoHanded;
TEXT[5] = NAME_Value;

COUNT[5] = value;
};

Da hatte ich dann das Problem, dass das auf NPCs keinen Effekt hat, sondern nur auf den Hero. Also habe ich nachrecherchiert, und herausgefunden, dass "DAM_FLY" alleine nicht ideal ist, und man das besser verbinden sollte mit anderen Schadensarten.
Also hab ich den Abschnitt mit dem Schaden nach einem Muster das ich hier im Forum gefunden habe umgeändert in folgendes:


damageType = DAM_BLUNT | DAM_FLY;
damageTotal = 15;
damage [DAM_BLUNT] = 14;
damage [DAM_FLY] = 1;

Dann bekam ich allerdings die Fehlermeldung "PAR: CONTENT\IT_MELEE_WEAPONS.D: Buuuuhhhh, Pfiffe, Unmut : Array-Indes out of Range: C_ITEM.DAMAGE[ 16 ]".
Angeblich bedeutet das, dass die TEXT[Index-Nummer] nicht über 5 hinausgehen darf. Und da ja bei


TEXT[2] = NAME_Damage;
COUNT[2] = damageTotal;
keine genaue Definition von NAME_Damage steht, war mein Gedanke, dass er versucht, sowohl DAM_BLUNT, als auch DAM_FLY anzuzeigen, und somit die Fehlermeldung entsteht. Ich hab dann also die Zeile nach weiteren Nachforschungen in "NAME_Dam_Edge" umbenannt, was aber absolut keinen Effekt hatte, genauso wenig wie "NAME_Dam_Blunt" oder einfach ein >"Waffenschaden"<.
Jetzt bin ich relativ ratlos, was ich noch machen könnte...

Sektenspinner
01.06.2009, 21:17
Benutze als Index im Damage-Array DAM_INDEX_FLY, DAM_INDEX_BLUNT usw.
Das sind andere Konstanten als die ohne das "INDEX_" im Namen.

Die Fehlermeldung hat übrigens nicht mit dem TEXT Array zu tun, in der Fehlermeldung wird ja auch explizit auf das damage Array hingewiesen.

Phael
01.06.2009, 22:05
Gut, hab' das jetzt gemacht, und die Waffe selber funktioniert auch wieder, allerdings hab ich jetzt wieder den Anfangszustand, dass NPCs nicht wgfliegen, sondern nur die Figur, die man selber gerade spielt. Oo

Lehona
01.06.2009, 23:48
Schonmal mit einem Punkt DAM_EDGE versucht? Bei mir hats zumindest bei einer 'normalen' Waffe keine Probleme gegeben.

NicoDE
02.06.2009, 11:06
[...] dass NPCs nicht wgfliegen, sondern nur die Figur, die man selber gerade spielt.Vielleicht verhindern die Schutzwerte der NPCs (Rüstung) den Schaden.

Phael
18.06.2009, 14:21
So, bin jetzt endlich dazu gekommen, die beiden letztgenannten Vorschläge auszuprobieren, hatten aber leider ebenfalls keinen Effekt.
Bei der Forumssuche bin ich draufgekommen, dass das Problem wohl schon einige hatten.
Naja, ist auch grundsätzlich nicht so wichtig, wollte das nur mal ausprobieren. Werd mich halt jetzt einmal einem anderen Thema zuwenden.

Aber falls jemand noch Vorschläge haben sollte, hab ich natürlich offene Ohren. :)

NicoDE
18.06.2009, 15:02
Wenn die Nachrichten für das Schadenssystem per Konsole aktiviert wurden (debug damage 1), müssten im zSpy "OnDamage_Anim()" + "Fly" auftauchen...

Das Feature hängt übrigens nicht nur am Fly-Schaden, sondern auch am Barriereschaden (werden addiert).

NicoDE
19.06.2009, 07:37
damageType = DAM_BLUNT | DAM_FLY;
damageTotal = 15;
damage[DAM_INDEX_BLUNT] = 14;
damage[DAM_INDEX_FLY] = 1;damageTotal hättest du übrigens nicht angeben brauchen. Es ist nur dafür da, die nicht gesetzten (0) damage[<Index>] auf gerundete (damageTotal / count(damageTypes)) zu setzen.