przecież weight.grd_armor_i = 0 będzie wynosić dla każdego jednego takiego samego pancerza.
Adanos ma rację. Nie dość że zamieniłeś kolejność wyrazów w przypisaniu, to jeszcze mylisz identyfikator z definicją obiektu, a jego z kolei z jego instancją.
"grd_armor_i" to identyfikator. Z punktu widzenia skryptów jest on liczbą. To co jest napisane w armors.d pod "instance grd_armor_i (c_item)" z kolei nazwałbym definicją. Nie da się w skryptach uzyskać odniesienia do definicji samej w sobie, więc także nie da się jej zmodyfikować. Możesz uzyskać odniesienie jedynie do jednej z instancji (wystąpień w świecie), np za pomocą funkcji Npc_GetEquippedArmor. Ale ponieważ jest to odniesienie tylko do tego jednego egzemplarza, tylko on powinien zostać zmodyfikowany.
W przypadku npc jest to trochę bardziej mylące, bo istnieje funkcja Hlp_GetNpc. Nie byłoby z nią problemu gdyby każdy npc występował w świecie tylko raz, ale że niektórzy występują w wielu kopiach (np potwory) to ta funkcja w ich przypadku zapewne zwraca odniesienie do pierwszego znalezionego egzemplarza i z tego powodu jej zastosowanie jest ograniczone.
Prawidłowy przykład podałem w trzecim poście:
var c_item zbroja;
zbroja = Npc_GetEquippedArmor(self);
zbroja.weigth = 666;
Temat tego jak działają skryptowe identyfikatory poruszałem już kilka razy, dając różne przykłady potwierdzające tą teorię. Innym który teraz mi przychodzi do głowy jest coś takiego:
(npc#msg1076720owi należy najpierw założyć tą zbroję)
var c_item item_instance = Npc_GetEquippedArmor(self);
var int instance_id_1 = grd_armor_i;
var int instance_id_2 = Hlp_GetInstanceID(item_instance);
Jeśli dobrze zgaduję jak działa funkcja Hlp_GetInstanceID, te zmienne liczbowe powinny mieć identyczną wartość.