Столкнулся с проблемой, меняю внешность у существа при помощи функции SetCreatureAppearanceType. Параметр AppearanceType задаю число из 2da файла(appearance). У меня создана своя модель и забита в хаке. Так вот, когда внешность должна меняться НПС просто пропадает. Подскажите в чём проблема. Может быть ошибка в хаке?
Batkom
Sep 10 2006, 03:49
У меня проблема с патчем 1.68, в частности с плащами:
-Можно ли их перекрашивать?
-Двигаются ли они вообще?
Batkom
Sep 10 2006, 18:42

Сенк.
QUOTE(Milfes @ Sep 7 2006, 21:40) [snapback]91261[/snapback]
Столкнулся с проблемой, меняю внешность у существа при помощи функции SetCreatureAppearanceType. Параметр AppearanceType задаю число из 2da файла(appearance). У меня создана своя модель и забита в хаке. Так вот, когда внешность должна меняться НПС просто пропадает. Подскажите в чём проблема. Может быть ошибка в хаке?
а в тулсете если ты пытаешься НПС сделать свою модель, она нормально отражается? мб у тебя с моделью глюк и она просто в игре не видна.
Milfes
Sep 11 2006, 16:30
Нет, сама модель отображается нормально.
Dik Morris
Sep 11 2006, 16:37
Milfes, нужно учитывать еще расу существа. Скажем, если раса гном - то внешность человека ему никак не установить. (Имею в виду APPEARANCE_TYPE_HUMAN)
А если и попытатся - то NPC, как раз и исчезает.
QUOTE(Dik Morris @ Sep 11 2006, 17:37) [snapback]91493[/snapback]
Milfes, нужно учитывать еще расу существа. Скажем, если раса гном - то внешность человека ему никак не установить. (Имею в виду APPEARANCE_TYPE_HUMAN)
с чего ты взял?? вполне можно.
Dik Morris
Sep 11 2006, 17:29
Действительно.
Lex, но я
точно помню что в 1.66 у меня так не получалось сделать.
Diamond
Sep 15 2006, 17:02
У меня вопрос по технической части Туллсета. В скриптах вместо русских букв какая то абракадабра. Патч с сайта WRG, который позволяет использовать букву "я" у меня установлен. Без русских букв как то хреново...
Кто сможет выложить скрипт на появления строки в диалоге один рас.
К примеру, непись мне что-то говорит, а у меня три варианта ответа и после использования какой небудь строки, при повторной попытки поговорить с неписем тот вариант исчезает, остается только два.
Dik Morris
Sep 17 2006, 14:04
Артём, тебе бы следовало изучить работу локальных переменных. Статей на эту тему, есть ВЕЛИКОЕ множество, ссылки давать не буду - сам найдешь, если внимательно почитаешь форум, сайт.
Будь человеком дай пару ссылок.
-fenix-
Sep 17 2006, 14:31
Способа щяс буду учить.
То что я искал там нет.
Ладно буду дожидаться НВН 2 вот там и буду учить скрипты.
-fenix-
Sep 17 2006, 17:14
А это не то??
QUOTE
ВОПРОС
Здраствуйте, я вот тут захотел сделать простейший стационарный квест, но в этом я полный 0.
1) Как сделать чтобы при первом разгооре игрока с НПС показывался первый диалог;
2) После первого разговора включался второй диалог;
3) Как сделать проверку на наличие предмета у игрока? Например ели у игрока есть например ключ ему включался определеный диалог (тоесть вот смотри пункт 2, идет второй диалог. и там спрашивають.ты добыл ключ? говориш да, и делаеться проверка на наличие)
4) После того как квест выполнен включался следующий диалог
ОТВЕТЫ
Делается очень легко - с пмощью Локальных переменных...
Как ты мог догадатсья, полистав словарик или просто почитав надписи в тулсете при создании конверсейшна:
TextAppearsWhen - значит "Текст появляется когда..." и там нужно выбрать скрипт. Это значит что в скрипте задаются условия появления. (кстати там есть визард)
ActionTaken - значит "Предпринимаемое действие" (или типа того), то есть - что-то происходит после того как игрко выбрал этот ответ в диалоге, или НПЦ вышел на ветку с этим скриптом... Тут опять же есть визард.
Визард (Wizard) - помощник создания простых скриптов, отображается как шапочка...
Итак, теперь рассказываю подробнее...
Мы создаем все три ветки (для данного примера):
- Привет, игрок
-- Привет, нпц!
- Есть ключ?
-- Есть (проверка)
-- Нету
- Молодец, ты справился с квестом! Терь вали отсюдова!
На первом диалоге (Привет, игрок) вешаем скрипт проверки локальной переменной, например назовем её - quest_prog (quest progress). Для этого можно использовать визард (пока в плане скриптинга обьяснять не буду - запустите визард, посмотрите на код и надеюсь все поймете) - визард в TextAppearsWhen (ТекстПоявляетсяКогда) - и там выбираем Local Variable, выбираем: int (числовая переменная, целая (не дробная)), пишем название переменной (q_prog), is less than (меньше чем), constant int (заданное число), 1.
Далее на продолжении первого диалога ("привет, нпц!") вешаем скрипт (можно опять же визардом) на создании переменной q_prog и задачи ей числа 1. Set Local Variable (Задать локальную переменную), int, q_prog, constant int, 1.
Теперь переходим к второй ветке диалога (есть ключ?) - надпись будет высвечиваться если q_prog равно 1. (Думай разберешься как сделать проверку ), ну а на ответе: (Есть) - делать првоерку на ключ... Опять же визардом: Item in Inventory и там вписываем тэг вещицы (лучше писать не попамяти - акопировать и вставлять...). Ну и Action Taken - присваиваем q_prog значение 2.
И последнюю ветку вешаем првоерку, если q_prog равен 2.
Раз стат квест - значит надо выдать награду. Выдавать награду можно опять же через ActionTaken (Give Rewards)... Примечание: если хочешь наградить вещью - то там надо вписывать ResRef вещит, а не тэг.
Кстати попутно с квестом можно вести запись в дневнике (закладочка - Others... там думаю разберешься)
ПРИМЕЧАНИЕ №1: Локальные переменные - остаюстя на игроке, так что в следущем квесте не используй переменную q_prog...
ПРИМЕЧАНИЕ №2: Если хорошо подумаете - то сможете это все еще оптимизирвоать и улучшить... (хоят бы для повышения переменной - не обязательно использоват ьнесколько разных скриптов )
Еще есть тут:
http://www.city-of-masters.ru/forums/index...ost&p=48763
Я хотел, чтобы скрипт не менял строку, а убирал одну из них.
Dik Morris
Sep 17 2006, 18:33
Артём, убрать ты НИКАК не сможешь. (Т.е стереть.)
Нужно ставить условие при котором появляется строка, (проверка локальной переменной, значение 0 & FALSE) потом собственно устанавливать эту локальную переменную. (ActionsTakes, при выборе данной строки)
Читай мануал, там это подробно расписано.
PS: ссылки принципиально приводить не буду, все это уже было много раз, но видимо не особо кому-то нужно. Да и свой трафик, у меня нет никакого желания расходовать.
QUOTE(Артём @ Sep 17 2006, 20:36) [snapback]91887[/snapback]
Вот скрипт на появления текста один рас в день.
[/nss]
int StartingConditional()
{
object oPC = GetPCSpeaker();
int nDay = GetCalendarDay();
if (GetLocalInt(oPC, "once_a_day_phrase") != nDay)
{
SetLocalInt(oPC, "once_a_day_phrase", nDay);
return TRUE;
}
return FALSE;
}
[nss]
Мне нужно почти тоже самое только чтобы он появлялся ни каждый день а всего 1 рас.
Или такога скрипта нет?

Milfes
Sep 17 2006, 20:36
Артём, на условие появления строки напиши скрипт
NSS
int StartingConditional()
{
int iResult;
iResult = GetLocalInt(GetPCSpeaker(), "PEREM") == 0;
return iResult;
}
А на ActionsTakes
NSS
SetLocalInt(GetPCSpeaker(), "PEREM", 1);
Всё строка появится только один раз. Тебе об этом же говорили
Dik Morris и
-fenix-
Это у меня уже есть.
Ладно, всем спасибо.
Nuprahtor
Sep 23 2006, 19:02
QUOTE
на onPlayerLevelUp (есть такой слот в свойствах модуля) написать скрипт-проверку. Если классов 2/3 (те первый и второй/третий валидны), то отбираем опыт и на левелап заново.
Сам напишешь скрипт?
Спасибо.
Не, не смогу.Да и вас не прошу.
А можно скриптами писать заметки в журнал игрока?
Aug 24 2006, 16:57>Sep 23 2006, 20:02.Гы, давно меня тут не было.Школа...
Nuprahtor, скриптом заметку можно добавить. Но сам текст туда вносить надо заранее, в редакторе журналов. Вписать текст через скрипт нельзя.
По скрипту: если нужен, попроси в теме.. да хотяб в этой. Напишут я думаю
Все простые вопросы есть в мануалах. Там наглядно с картинками.

На форуме сложнее объяснить.
virusman
Sep 23 2006, 22:28
QUOTE(Lex @ Sep 23 2006, 21:09) [snapback]92615[/snapback]
Nuprahtor, скриптом заметку можно добавить. Но сам текст туда вносить надо заранее, в редакторе журналов. Вписать текст через скрипт нельзя.
Токенами (<CUSTOMxxxx>) можно.
Хм.. не знал. Спасибки

бу иметь ввиду
shadowdweller
Sep 23 2006, 22:40
Доброго времени суток всем!
У меня возник вопрос: как сделать добавление к дефолтному скрипту OnAquireItem, чтобы при помещении в инвентарь определенного предмета возникала запись в журнале? Знаю, что так сделать можно, пытаюсь при помощи ScriptGen'а, но там получается, что одна и та же запись в журнале появляется при запихивании в инвентарь
всех без исключения предметов. Как исправить, не знаю. Помогите, плз!
поставь в слот Module Acquired стандартный скрипт x2_mod_def_aqu
потом сделай свой скрипт с именем = тэгу айтема. Например itm_lx_figulina
вот шаблон скрипта:
NSS
//::///////////////////////////////////////////////
//:: Example Item Event Script
//:: x2_it_example
//:: Copyright © 2003 Bioware Corp.
//:://////////////////////////////////////////////
/*
This is an example on how to use the
new default module events for NWN to
have all code concerning one item in
a single file.
Note that this system only works, if
the following events set on your module
OnEquip - x2_mod_def_equ
OnUnEquip - x2_mod_def_unequ
OnAcquire - x2_mod_def_aqu
OnUnAcqucire - x2_mod_def_unaqu
OnActivate - x2_mod_def_act
*/
//:://////////////////////////////////////////////
//:: Created By: Georg Zoeller
//:: Created On: 2003-09-10
//:://////////////////////////////////////////////
#include "x2_inc_switches"
void main()
{
int nEvent =GetUserDefinedItemEventNumber();
object oPC;
object oItem;
SendMessageToPC(GetFirstPC(),IntToString(nEvent));
// * This code runs when the item has the OnHitCastSpell: Unique power property
// * and it hits a target(weapon) or is being hit (armor)
// * Note that this event fires for non PC creatures as well.
if (nEvent ==X2_ITEM_EVENT_ONHITCAST)
{
oItem = GetSpellCastItem(); // The item casting triggering this spellscript
object oSpellOrigin = OBJECT_SELF ;
object oSpellTarget = GetSpellTargetObject();
oPC = OBJECT_SELF;
}
// * This code runs when the Unique Power property of the item is used
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACTIVATE)
{
oPC = GetItemActivator();
oItem = GetItemActivated();
}
// * This code runs when the item is equipped
// * Note that this event fires PCs only
else if (nEvent ==X2_ITEM_EVENT_EQUIP)
{
oPC = GetPCItemLastEquippedBy();
oItem = GetPCItemLastEquipped();
}
// * This code runs when the item is unequipped
// * Note that this event fires PCs only
else if (nEvent ==X2_ITEM_EVENT_UNEQUIP)
{
oPC = GetPCItemLastUnequippedBy();
oItem = GetPCItemLastUnequipped();
}
// * This code runs when the item is acquired
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_ACQUIRE)
{
oPC = GetModuleItemAcquiredBy();
oItem = GetModuleItemAcquired();
}
// * This code runs when the item is unaquire d
// * Note that this event fires PCs only
else if (nEvent == X2_ITEM_EVENT_UNACQUIRE)
{
oPC = GetModuleItemLostBy();
oItem = GetModuleItemLost();
}
//* This code runs when a PC or DM casts a spell from one of the
//* standard spellbooks on the item
else if (nEvent == X2_ITEM_EVENT_SPELLCAST_AT)
{
oPC = GetLastSpellCaster();
oItem = GetSpellTargetObject();
}
}
вообще все ж написано и закомментировано скриптерами биовар, какие проблемы почитать?
Если влом думать как Лекс написал, то можешь так...
NSS
void main()
{
object oMod = GetModule();
object oItem = GetModuleItemAcquired(); // Сам Item объект
object oPC = GetModuleItemAcquiredBy(); // Тот кто взял
string sTagItem = GetTag(oItem); // Таг Item-a
if (sTagItem =="ТАГ_НОВОГО_ИТЕМА") // Если мы взяли предмет с таким тегом
{
if(!GetLocalInt(oMod, sTagItem)) // Если нет на модуле локалки равной тегу предмета ТО
{
SetLocalInt(oMod, sTagItem, TRUE); // Присвои модулю такую, значит предмет у нас побывал раз
AddJournalQuestEntry("ТАГ_КВЕСТА_В_ЖУРНАЛЕ", 1, oPC); // Дадим РС заметку в журнале или еще что
}
}
}
shadowdweller
Sep 24 2006, 21:17
Lex, почитать-то не проблема. Проблема - понять прочитанное.

А добавить еще что-то свое, и так, чтобы скрипт при этом работал, - еще большая проблема.
Но в принципе, сейчас, с твоей помощью и с помощью Aiwan'a, разобралась, за что огромное спасибо.
helvene
Sep 24 2006, 23:58
QUOTE(shadowdweller @ Sep 24 2006, 22:17) [snapback]92683[/snapback]
Lex, почитать-то не проблема. Проблема - понять прочитанное.
Оффтоп, но без шуток.
Ребята, объединялись бы вы в команды, желательно - с
четким разделением труда и разграничением ответственности внутри них. Толку куда больше будет.
Так, чтоб каждый - и швец, и жнец, и все остальное по мере необходимости, сейчас уже очень мало кто работает.
LEX: угу, мало кто это только мы. Остальные с разделением труда.
У меня вопрос кто сможет написать скрипт на появления строки случайно?
Мне надо чтобы после октивезацыи предмета одна из трёх строк появлялось случайно.
Dart_Vadder
Sep 29 2006, 13:50
В соседней теме столько хохм про этот ворос, что хочется во все разобраться и помочь-таки человеку. Для начала, где это строка должна появиться? В описании, разговоре или еще где? или Вы хотите, что бы у предмета появилось такое действие - "активация появления случайной строки"? А может я чего ни понял?
SobakaRU
Sep 29 2006, 16:38
народ, поделись плиз документацией на Аврору на русском и если можно прогу саму либо ссылочку! чтоб без регистарции на каком либо портале!
заранее спс мое мыло если-что megaeddy@mail.ru
-fenix-
Sep 29 2006, 16:42
Аврора - это движок, так что не понятно какую ссылку ты хочешь получить и что ты собственно хочешь с ним делать.
Вся доступная инфа на русском по нвн есть либо на сайте www.wrg.ru, либо на этом форуме в соответствующих разделах.
QUOTE(Dart_Vadder @ Sep 29 2006, 14:50) [snapback]93078[/snapback]
В соседней теме столько хохм про этот ворос, что хочется во все разобраться и помочь-таки человеку. Для начала, где это строка должна появиться? В описании, разговоре или еще где? или Вы хотите, что бы у предмета появилось такое действие - "активация появления случайной строки"? А может я чего ни понял?
Объясняю: у меня есть кусок мяса, который при использованье прибавляет жизни и пишет, к примеру »Ух теперь я сыт» но чтобы этого не повторялось я хочу вести ещё пару строк, которые будут работать случайно, к примеру " кусок был таким маленьким"
если у тебя уже все есть и нужно только разрандомить строки, то вот:
Было:
NSS
string s = "Ух теперь я сыт";
Стало:
NSS
string s;
switch (Random(5))
{
case 0: s = "Ух теперь я сыт"; break;
case 1: s = "Кусок был таким маленьким"; break;
case 2: s = "Ням-Ням"; break;
case 3: s = "Хочу еще"; break;
case 4: s = "А мясо то с гнильцой"; break;
}
куда вставить, понял?
QUOTE(Lex @ Sep 30 2006, 01:48) [snapback]93150[/snapback]
куда вставить, понял?
Канешна! В мясо!
Всё работает!

У меня вопрос можно ли сделать использование предмета без анимации.
-fenix-
Sep 30 2006, 16:28
Наврятли, она автоматом проигрывается когда предмет используют. Попробуй в скрипте первом делом акции почистить игроку, но врятли поможет или будет срабатывать не всегда и вообще криво смотреться.
Во втором адоне есть меч, с которым можно говорить там при использование предмета анимация не играет.
Кто знает почему?
в принципе можно наверное.
- Сделать новый закл (spells.2da), убрать оттуда анимацию, визуализацию, оставить только скрипт.
- прописать его отдельно в свойствах предмета (itprops_spells.2da по моему).
Может можно и проще, но не задумывался особо.
а может и низя..
Извините, плиз...... Я - чайник каких свет не видывал

, но учиться на приведённых скриптах мне сложновато..... Каждый надо на деле посмотреть..... Вот увидел несколько интересных штук в компаниях, хочу их распотрошить

, посмотреть, но не могу..... Кто подскажет, какая прога открывает файлы .nwm? И, если кто знает - киньте ссылку на неё.....
Diamond
Sep 30 2006, 21:18
Переменуй файлы .nwn в файлы .mod и открывай туллсетом
Просто поковыряйся пару дней в редакторе и всё станит понятно.
Ну, почти всё.
QUOTE(Lex @ Sep 30 2006, 21:36) [snapback]93233[/snapback]
в принципе можно наверное.
- Сделать новый закл (spells.2da), убрать оттуда анимацию, визуализацию, оставить только скрипт.
- прописать его отдельно в свойствах предмета (itprops_spells.2da по моему).
Может можно и проще, но не задумывался особо.
а может и низя..

Такие вещи можно и не росказывать все равно не врублюсь.
QUOTE(Diamond @ Sep 30 2006, 22:18) [snapback]93237[/snapback]
Переменуй файлы .nwn в файлы .mod и открывай туллсетом
От это да!!!! Скока муки и страданий ты снял с моей опухшей головы!!!!!

Логично, что обратное можно сделать аналогичным способом..... А вот второй вопрос назрел.... Можно ли какнить изменить титульный рисунок в главной менюхе?
Dart_Vadder
Oct 1 2006, 12:47
QUOTE(Roker @ Oct 1 2006, 04:27) [snapback]93254[/snapback]
Можно ли какнить изменить титульный рисунок в главной менюхе?
Очень нудный процесс. Ладно бы, если все текстуры хранились одной картинкой, но ... Берем NWN Viver, открываем bif'ы игры, залазим в папку textures. Нас интересуют 2 файла - gui_pre_bknd1 и gui_pre_bknd2. Первый содержит левую верхнюю (и самую большую) часть менюшки. Во втором файл вошло все то, что не вошло в первый - левая нижняя, правая верхняя и правая нижняя часть. Все картинки формата TARGA ( .tga) и редактировать их лучше в Photoshop'e. Все 4 части собираем в одну, перерисовываем как вам нужно и обратно разбиваем на 4 таких же части. На выходе должны получить 2 файла, идентичные исходным, которые мы и кидаем в папку NWN \ Override. Фух. Если вы во всем этом разбраитесь, то у вас уйдет не больше часа.
helvene
Oct 1 2006, 21:06
Господа новички, пожалуйста, все вопросы, касающиеся модификации внешнего вида игры - в Custom Content. А то потом сами же жалуетесь, что найти ничего невозможно.
Люди, подскажите плиз!!!
У меня такая проблема.... Хочу сделать нечто типа чатового диалога с обьектами.... Например щас у меня назрела идея.... Хочу сделать так, чтобы дверь открывалась паролем, но говорить его нужно через окно чата (т.е. через строчку внизу обычным голосом....) *во я фантазёр* Подскажите, осуществимо ли это?
Пример действий:
1. Я подхожу к двери, дёргаю ручку - заперто....
2. Мой чар поматерился, что не может открыть дверь, и сломать её у него сил не хватит....
3. Тут какой - то голос из двери говорит: "Скажи пароль и не мучайся!!!

"
4. Ты вводишь нужную фразу в чат, нажимаешь ентер, и, когда полоска с ентим словом появляется над головой - ты видишь чудо прям как во властелине колец!!! Дверь открыась!!!!
Извините меня за такой геморный способ, но фантазия - это великая вещь....
Пример номер два:
1. Ты подходишь к группе людей и тут один выскочка, видимо главный задает тебе вопрос: "Скажи пароль или мы тебя прирежем!!!"
2.1 Ты говоришь пароль и тебя пропускают дальше... и это усё...
2.2 Проходит время или если ты сболтанул не то в окно чата - вся компания налетает на тебя, и придётся уже пойти дальше чуток избитым или не пойти вообще...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.