2GoDoom
Jul 11 2004, 00:18
Я знаю что можно добавлять к вещам эффекты, но мне интересно - как менять внешний вид предмета? (стандартный армор крафт позволяет это делать - и даже добавлять робу)...
ЗЫ
Сорри за то что создаю тему специально для этого, но я думаю это будет интересно.
ЗЫЫ
И за одно - какой конверсейшн у стандартного крафта в НВНе?
Аваддон
Jul 11 2004, 03:52
Хех, я задавал такой вопрос в скриптах но безрезультатно. Открой диалоги нвновского крафта и глянь какая там система.. Я открыл вот.. посмотрел

и сразу закрыл. А была просто идея - когда плащь одеваешь чтоб он на броню добавлялся.
Функции для работы с itemproperty довольно медлены и используют чтение из 2da файлов, используй аккуратно.
#include "x2_inc_itemprop" - там собраны полезные функции.
IPGetNumberOfAppearances(ITEM_APPR_ARMOR_MODEL_*) - вернет тебе количество различных апирансов для данного _ARMOR_MODEL_
Вот что она делает в реальности:
Neverwinter Script Source |
int IPGetNumberOfArmorAppearances(int nPart) { int nRet; //SpeakString(Get2DAString(X2_IP_ARMORPARTS_2DA ,"NumParts",nPart)); nRet = StringToInt(Get2DAString(X2_IP_ARMORPARTS_2DA ,"NumParts",nPart)); return nRet; } |
т.е. просто читает из 2да-таблицы
Основная функция: CopyItemAndModify()
Neverwinter Script Source |
// Creates a new copy of an item, while making a single change to the appearance of the item. // Helmet models and simple items ignore iIndex. // iType iIndex iNewValue // ITEM_APPR_TYPE_SIMPLE_MODEL [Ignored] Model # // ITEM_APPR_TYPE_WEAPON_COLOR ITEM_APPR_WEAPON_COLOR_* 1-4 // ITEM_APPR_TYPE_WEAPON_MODEL ITEM_APPR_WEAPON_MODEL_* Model # // ITEM_APPR_TYPE_ARMOR_MODEL ITEM_APPR_ARMOR_MODEL_* Model # // ITEM_APPR_TYPE_ARMOR_COLOR ITEM_APPR_ARMOR_COLOR_* 0-63 object CopyItemAndModify(object oItem, int nType, int nIndex, int nNewValue, int bCopyVars=FALSE) |
В ней константами задаешь что менять и на что.
Вот еще нужная функция: GetItemAppearance() - смотри в лексиконе полное описание.
Вот и все. В самом простом случае - берется исходный item, CopyItemAndModify() и получается то, что нужно. Старый item не забываем удалять.
Создать новый предмет с задаными свойствами - не выйдет, нет таких функций пока.
Да, один момент. Библиотека "x2_inc_itemprop" использует служебный ящик, где все замены и происходят (т.е. создание новых вещей и т.п.). Тег у него "x2_plc_ipbox", он есть в палитре и его _ОБЯЗАТЕЛЬНО_ нужно поставить в модуле, в недоступной для игрока локации.