Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Item Appearens, Как менять?
2GoDoom
сообщение Jul 11 2004, 00:18
Сообщение #1


Level 11
***

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Маппинг



Я знаю что можно добавлять к вещам эффекты, но мне интересно - как менять внешний вид предмета? (стандартный армор крафт позволяет это делать - и даже добавлять робу)...

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


Level 10
***

Класс: Воин
Характер: Lawful Neutral
Раса: Человек
NWN: Скриптинг [PW]



Хех, я задавал такой вопрос в скриптах но безрезультатно. Открой диалоги нвновского крафта и глянь какая там система.. Я открыл вот.. посмотрел (IMG:style_emoticons/kolobok_light/bad.gif) и сразу закрыл. А была просто идея - когда плащь одеваешь чтоб он на броню добавлялся.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 11 2004, 12:17
Сообщение #3


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Функции для работы с 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", он есть в палитре и его _ОБЯЗАТЕЛЬНО_ нужно поставить в модуле, в недоступной для игрока локации.

Сообщение отредактировал _kaa_ - Jul 12 2004, 10:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2GoDoom
сообщение Jul 11 2004, 13:04
Сообщение #4


Level 11
***

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Маппинг



Большое спасибо!

Сообщение отредактировал 2GoDoom - Jul 11 2004, 13:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16th April 2024 - 13:31