Помощь - Поиск - Пользователи - Календарь
Полная версия: ОДИНОЧНЫЙ ВОПРОС
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68
Milfes
Столкнулся с проблемой, меняю внешность у существа при помощи функции SetCreatureAppearanceType. Параметр AppearanceType задаю число из 2da файла(appearance). У меня создана своя модель и забита в хаке. Так вот, когда внешность должна меняться НПС просто пропадает. Подскажите в чём проблема. Может быть ошибка в хаке?
Batkom
У меня проблема с патчем 1.68, в частности с плащами:
-Можно ли их перекрашивать?
-Двигаются ли они вообще?
Aiwan
1. Можно.
2. Двигаются.
Batkom
biggrin.gif Сенк.
Lex
QUOTE(Milfes @ Sep 7 2006, 21:40) [snapback]91261[/snapback]
Столкнулся с проблемой, меняю внешность у существа при помощи функции SetCreatureAppearanceType. Параметр AppearanceType задаю число из 2da файла(appearance). У меня создана своя модель и забита в хаке. Так вот, когда внешность должна меняться НПС просто пропадает. Подскажите в чём проблема. Может быть ошибка в хаке?

а в тулсете если ты пытаешься НПС сделать свою модель, она нормально отражается? мб у тебя с моделью глюк и она просто в игре не видна.
Milfes
Нет, сама модель отображается нормально.
Dik Morris
Milfes, нужно учитывать еще расу существа. Скажем, если раса гном - то внешность человека ему никак не установить. (Имею в виду APPEARANCE_TYPE_HUMAN)


А если и попытатся - то NPC, как раз и исчезает. wink3.gif
Lex
QUOTE(Dik Morris @ Sep 11 2006, 17:37) [snapback]91493[/snapback]
Milfes, нужно учитывать еще расу существа. Скажем, если раса гном - то внешность человека ему никак не установить. (Имею в виду APPEARANCE_TYPE_HUMAN)

с чего ты взял?? вполне можно.
Dik Morris
Действительно.

Lex, но я точно помню что в 1.66 у меня так не получалось сделать. pleasantry.gif
Diamond
У меня вопрос по технической части Туллсета. В скриптах вместо русских букв какая то абракадабра. Патч с сайта WRG, который позволяет использовать букву "я" у меня установлен. Без русских букв как то хреново...
Aiwan
Поставь шрифт Courer
Артём
Кто сможет выложить скрипт на появления строки в диалоге один рас.
К примеру, непись мне что-то говорит, а у меня три варианта ответа и после использования какой небудь строки, при повторной попытки поговорить с неписем тот вариант исчезает, остается только два.
Dik Morris
Артём, тебе бы следовало изучить работу локальных переменных. Статей на эту тему, есть ВЕЛИКОЕ множество, ссылки давать не буду - сам найдешь, если внимательно почитаешь форум, сайт.
Артём
Будь человеком дай пару ссылок. sad.gif
Артём
Способа щяс буду учить.

То что я искал там нет.

Ладно буду дожидаться НВН 2 вот там и буду учить скрипты.
-fenix-
А это не то??
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
Артём, убрать ты НИКАК не сможешь. (Т.е стереть.)
Нужно ставить условие при котором появляется строка, (проверка локальной переменной, значение 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 рас.
Или такога скрипта нет? biggrin.gif

Milfes
Артём, на условие появления строки напиши скрипт
NSS
int StartingConditional()
{
    int iResult;

    iResult = GetLocalInt(GetPCSpeaker(), "PEREM") == 0;
    return iResult;

}

А на ActionsTakes
NSS
SetLocalInt(GetPCSpeaker(), "PEREM", 1);


Всё строка появится только один раз. Тебе об этом же говорили Dik Morris и -fenix-
Артём
Это у меня уже есть.
Ладно, всем спасибо.
Nuprahtor
QUOTE
на onPlayerLevelUp (есть такой слот в свойствах модуля) написать скрипт-проверку. Если классов 2/3 (те первый и второй/третий валидны), то отбираем опыт и на левелап заново.
Сам напишешь скрипт?

Спасибо.
Не, не смогу.Да и вас не прошу.
А можно скриптами писать заметки в журнал игрока?
Aug 24 2006, 16:57>Sep 23 2006, 20:02.Гы, давно меня тут не было.Школа...

Lex
Nuprahtor, скриптом заметку можно добавить. Но сам текст туда вносить надо заранее, в редакторе журналов. Вписать текст через скрипт нельзя.
По скрипту: если нужен, попроси в теме.. да хотяб в этой. Напишут я думаю smile.gif
Aiwan
Все простые вопросы есть в мануалах. Там наглядно с картинками. pardon.gif На форуме сложнее объяснить.
virusman
QUOTE(Lex @ Sep 23 2006, 21:09) [snapback]92615[/snapback]

Nuprahtor, скриптом заметку можно добавить. Но сам текст туда вносить надо заранее, в редакторе журналов. Вписать текст через скрипт нельзя.
Токенами (<CUSTOMxxxx>) можно.
Lex
Хм.. не знал. Спасибки smile.gif бу иметь ввиду
shadowdweller
Доброго времени суток всем! hi.gif

У меня возник вопрос: как сделать добавление к дефолтному скрипту OnAquireItem, чтобы при помещении в инвентарь определенного предмета возникала запись в журнале? Знаю, что так сделать можно, пытаюсь при помощи ScriptGen'а, но там получается, что одна и та же запись в журнале появляется при запихивании в инвентарь всех без исключения предметов. Как исправить, не знаю. Помогите, плз! sad.gif
Lex
поставь в слот 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();
    }
}


вообще все ж написано и закомментировано скриптерами биовар, какие проблемы почитать?
Aiwan
Если влом думать как Лекс написал, то можешь так...

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
Lex, почитать-то не проблема. Проблема - понять прочитанное. sad.gif А добавить еще что-то свое, и так, чтобы скрипт при этом работал, - еще большая проблема.
Но в принципе, сейчас, с твоей помощью и с помощью Aiwan'a, разобралась, за что огромное спасибо. thank_you.gif
helvene
QUOTE(shadowdweller @ Sep 24 2006, 22:17) [snapback]92683[/snapback]
Lex, почитать-то не проблема. Проблема - понять прочитанное.

Оффтоп, но без шуток.

Ребята, объединялись бы вы в команды, желательно - с четким разделением труда и разграничением ответственности внутри них. Толку куда больше будет.

Так, чтоб каждый - и швец, и жнец, и все остальное по мере необходимости, сейчас уже очень мало кто работает.

LEX: угу, мало кто это только мы. Остальные с разделением труда.
Артём

У меня вопрос кто сможет написать скрипт на появления строки случайно?
Мне надо чтобы после октивезацыи предмета одна из трёх строк появлялось случайно.
biggrin.gif
Dart_Vadder
В соседней теме столько хохм про этот ворос, что хочется во все разобраться и помочь-таки человеку. Для начала, где это строка должна появиться? В описании, разговоре или еще где? или Вы хотите, что бы у предмета появилось такое действие - "активация появления случайной строки"? А может я чего ни понял?
SobakaRU
народ, поделись плиз документацией на Аврору на русском и если можно прогу саму либо ссылочку! чтоб без регистарции на каком либо портале!
заранее спс мое мыло если-что megaeddy@mail.ru
-fenix-
Аврора - это движок, так что не понятно какую ссылку ты хочешь получить и что ты собственно хочешь с ним делать.

Вся доступная инфа на русском по нвн есть либо на сайте www.wrg.ru, либо на этом форуме в соответствующих разделах.
Артём
QUOTE(Dart_Vadder @ Sep 29 2006, 14:50) [snapback]93078[/snapback]

В соседней теме столько хохм про этот ворос, что хочется во все разобраться и помочь-таки человеку. Для начала, где это строка должна появиться? В описании, разговоре или еще где? или Вы хотите, что бы у предмета появилось такое действие - "активация появления случайной строки"? А может я чего ни понял?

Объясняю: у меня есть кусок мяса, который при использованье прибавляет жизни и пишет, к примеру »Ух теперь я сыт» но чтобы этого не повторялось я хочу вести ещё пару строк, которые будут работать случайно, к примеру " кусок был таким маленьким"
Lex
если у тебя уже все есть и нужно только разрандомить строки, то вот:
Было:
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;
    }

куда вставить, понял?
Aiwan
QUOTE(Lex @ Sep 30 2006, 01:48) [snapback]93150[/snapback]
куда вставить, понял?

Канешна! В мясо! crazy.gif
Артём
Всё работает! biggrin.gif

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

а может и низя..
Roker
Извините, плиз...... Я - чайник каких свет не видывал sad.gif , но учиться на приведённых скриптах мне сложновато..... Каждый надо на деле посмотреть..... Вот увидел несколько интересных штук в компаниях, хочу их распотрошить crazy.gif , посмотреть, но не могу..... Кто подскажет, какая прога открывает файлы .nwm? И, если кто знает - киньте ссылку на неё.....
Diamond
Переменуй файлы .nwn в файлы .mod и открывай туллсетом
Артём
Просто поковыряйся пару дней в редакторе и всё станит понятно.
Ну, почти всё.


QUOTE(Lex @ Sep 30 2006, 21:36) [snapback]93233[/snapback]

в принципе можно наверное.
- Сделать новый закл (spells.2da), убрать оттуда анимацию, визуализацию, оставить только скрипт.
- прописать его отдельно в свойствах предмета (itprops_spells.2da по моему).
Может можно и проще, но не задумывался особо.

а может и низя..


scratch_one-s_head.gif
Такие вещи можно и не росказывать все равно не врублюсь.
Roker
QUOTE(Diamond @ Sep 30 2006, 22:18) [snapback]93237[/snapback]

Переменуй файлы .nwn в файлы .mod и открывай туллсетом

От это да!!!! Скока муки и страданий ты снял с моей опухшей головы!!!!! bb.gif Логично, что обратное можно сделать аналогичным способом..... А вот второй вопрос назрел.... Можно ли какнить изменить титульный рисунок в главной менюхе?
Dart_Vadder
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
Господа новички, пожалуйста, все вопросы, касающиеся модификации внешнего вида игры - в Custom Content. А то потом сами же жалуетесь, что найти ничего невозможно.
Roker
Люди, подскажите плиз!!! scratch_one-s_head.gif
У меня такая проблема.... Хочу сделать нечто типа чатового диалога с обьектами.... Например щас у меня назрела идея.... Хочу сделать так, чтобы дверь открывалась паролем, но говорить его нужно через окно чата (т.е. через строчку внизу обычным голосом....) *во я фантазёр* Подскажите, осуществимо ли это?
Пример действий:
1. Я подхожу к двери, дёргаю ручку - заперто....
2. Мой чар поматерился, что не может открыть дверь, и сломать её у него сил не хватит....
3. Тут какой - то голос из двери говорит: "Скажи пароль и не мучайся!!! smile.gif"
4. Ты вводишь нужную фразу в чат, нажимаешь ентер, и, когда полоска с ентим словом появляется над головой - ты видишь чудо прям как во властелине колец!!! Дверь открыась!!!! prankster2.gif crazy.gif
Извините меня за такой геморный способ, но фантазия - это великая вещь....

Пример номер два:
1. Ты подходишь к группе людей и тут один выскочка, видимо главный задает тебе вопрос: "Скажи пароль или мы тебя прирежем!!!"
2.1 Ты говоришь пароль и тебя пропускают дальше... и это усё...
2.2 Проходит время или если ты сболтанул не то в окно чата - вся компания налетает на тебя, и придётся уже пойти дальше чуток избитым или не пойти вообще... aggressive.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.