Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
shurikens
Подскажите чайнику crazy.gif .
Вот у меня есть хак с новыми моделями. Могу ли я его прикрепить к офф. игре NWN или к адону?
И как это сделать?
Если нет, то можно ли к примеру изъятые из .hak файла .mdl, .plt и прочие запихнуть в .bif файлы официальной игры?
Чем просматривать .bif я разобрался, а чем редактировать не знаю.
Зарание прошу прощения за идеотский вопрос. Сам на форуме найти не смог.

Заодно подскажите, как .hak одного модуля прикрепить к другому. (я пробовал просто содержимое одного хака перекидывать в другой - иногда работало. Но вот если у нового модуля нету своего хака - тут все и закнчивалось)
Еще раз сори за дурацкие вопросы, сами понимаете - лето, жара, новых игр нету shout.gif
Talarasha
Цитата(Lordeath @ Aug 18 2008, 08:51) *
Вот разбирал тут по кусочкам один модуль, возник вопрос - не могу заменить в скрипте фразы которые в кавычках русскими словами. Это галюн именно моего редактора или Авроры в целом?

Глюк авроры. Лечится вот этим патчем.
Цитата(shurikens @ Aug 19 2008, 00:09) *
Подскажите чайнику crazy.gif .
Вот у меня есть хак с новыми моделями. Могу ли я его прикрепить к офф. игре NWN или к адону?
И как это сделать?
Если нет, то можно ли к примеру изъятые из .hak файла .mdl, .plt и прочие запихнуть в .bif файлы официальной игры?
Чем просматривать .bif я разобрался, а чем редактировать не знаю.
Зарание прошу прощения за идеотский вопрос. Сам на форуме найти не смог.

Заодно подскажите, как .hak одного модуля прикрепить к другому. (я пробовал просто содержимое одного хака перекидывать в другой - иногда работало. Но вот если у нового модуля нету своего хака - тут все и закнчивалось)
Еще раз сори за дурацкие вопросы, сами понимаете - лето, жара, новых игр нету shout.gif

Да, можете. Если уже прошли в игре официальные модули, то в тулсете, в окне доступных модулей появится галочка внизу "Модули кампаний". Щелкните ее, и сможете открыть официальные кампании.
Если кампании не пройдены, то их надо перетащить из папки "nwm" в папку "modules" и поменять расширение на mod, тогда они появятся в окне модулей. Либо скачать патч, который внесет нужные изменения в реестр, либо внести их самому.

Хаки подключаются к модулю так. Открываете любой модуль, вверху будет пункт меню "Редактировать", в нем - "Модульные свойства". В появившемся окне выберите вкладку "Настройки пользователя". Появится список (пустой) и выпадающий список под ним, в котором вы можете выбрать любой из хаков, которые лежат в папке "hak". Выбирайте нужный, щелкайте "Добавить", и хак подключится к модулю.
Lirulin
Я долго пытался справляться сам, но наконец наткнулся на проблему, которая мне н по зубам...
Neverwinter Script
object oItem = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItem))
        {
        if(GetPlotFlag(oItem) == TRUE)
            DelayCommand(0.2,DestroyObject(oItem));
            object oItem = GetNextItemInInventory(oPC);
}

По идее, сей скрипт (т.е. его кусок), подразумевался изничтожать лишние plot item'ы, которые могут оказаться у сохраненного перса (ну, чтоб не было 2 одинаковых айтема потом=)). Но а) он пытается срабатывать каждый раз при загрузке сейва, хотя надо бы тока в начале; б) максимум уничтожает один айтем, потом орет что too many instructions=( Как его поправить? (стоит он в OnClientEnter).
Talarasha
Neverwinter Script
if(GetLocalInt(GetModule(),"z") == 0)
    {
        object oItem = GetFirstItemInInventory(oPC);
        while(oItem != OBJECT_INVALID)
        {
        if(GetPlotFlag(oItem))
            {
             DestroyObject(oItem);
             oItem = GetNextItemInInventory(oPC);
            }
        else
            {
             oItem = GetNextItemInInventory(oPC);
            }
        }
        SetLocalInt(GetModule(),"z",1);
    }

Вот так должно работать.
Переменная "z" не дает повторяться скрипту, а ошибка была в повторном определении oItem (не надо каждый раз писать тип перед переменной).
Ilerien
Neverwinter Script
object oItem = GetFirstItemInInventory(oPC);
    while(GetIsObjectValid(oItem))
    {
        if(GetPlotFlag(oItem))
        {
            SetPlotFlag(oItem, FALSE);
            DestroyObject(oItem);
        }
        oItem = GetNextItemInInventory(oPC);
    }
Talarasha
Ilerien, а зачем флаг снимать? И без этого ведь уничтожает.
Ilerien
Хз smile.gif Не обязательно, конечно. Привычка - некоторое время назад я честно думал, что DestroyObject не убивает плотовые итемы.
Lirulin
Спасибо! Попробую...

Цитата(Ilerien @ Aug 19 2008, 14:12) *
Хз smile.gif Не обязательно, конечно. Привычка - некоторое время назад я честно думал, что DestroyObject не убивает плотовые итемы.

А те, которые Undroppable, можно таким способом убить? Или они не только неубираемые, но и неубиваемые?
Ilerien
Цитата
А те, которые Undroppable, можно таким способом убить? Или они не только неубираемые, но и неубиваемые?
Можно smile.gif
Lamonde
Цитата(Ilerien @ Aug 19 2008, 13:12) *
Хз smile.gif Не обязательно, конечно. Привычка - некоторое время назад я честно думал, что DestroyObject не убивает плотовые итемы.
Оно так и было. Плотовые предметы не убивались.
Talarasha
Цитата(Lamonde @ Aug 20 2008, 16:59) *
Оно так и было. Плотовые предметы не убивались.

Проверял на 1.66, убиваются.
Ilerien
Ну значит в какой-то более старой версии не убивались.
Talarasha
Ilerien, Lamonde, сдается мне, вы все-таки заблуждаетесь и команда SetPlotFlag(oItem, FALSE) в скрипте лишняя. Проверил еще и на 1.22 (оригинал), плотовые предметы успешно убиваются.
Ilerien
Хз. Убиваются - так убиваются smile.gif Не суть важно, снятие флага на итеме ресурсов почти не хавает.
Talarasha
Суть важно, потому что в таком случае твой скрипт не имеет никаких отличий от того, что я уже написал Оо.
Ilerien
Ага. На самом деле я сначала прочитал по диагонали задачу и решил, что локалка там не нужна. Фтопку спор, ты прав.
Alhelor
Привет всем. У меня вопросы yahoo.gif Короче скачал CEP, в Авроре посмотрел разные там вещи-понравилось очень(головы, и портреты особенно). А можно их как-нибудь пихнуть в Neverwinter Nights (ну в campaign mode)? И еще понравился очень образ Masterius'a и возник вопрос-можно ли заменить модель игрока(своего) на какого-нибудь NPC? Буду ждать ответа.
Melisse
Головы и портреты+2да с портретами кинь в овверайд
заменить можно программкой специальной - тут где-то на форуме ссылку есть.
Можно что хочешь делать вообще - это же нвн.
virus_found
да пусть хоть тем же Letoм можно сделать wink3.gif но и не только им
Alhelor
Цитата
Головы и портреты+2да с портретами кинь в овверайд
заменить можно программкой специальной - тут где-то на форуме ссылку есть.
Можно что хочешь делать вообще - это же нвн.

Так там же все в этих .hak'ах Если я создаю модуль и активирую все эти хаки,то портреты и головы и т.д. работают только в этом модуле. А как их пихнуть в общее. И можно по-подробнее насчет всяких там программ.
Melisse
Есть такая программа еще NWN Explorer ей можно выдрать что хочешь из хаков или вообще воспользуйся утилитой, что в папке НВН в утилитах.
Lirulin
А у меня вот какой вопрос - можно ли вставить в текст диалога переменную (или string), определяемую скриптом? Скажем, бывает <First Name> - а можно ли загнать в эти <> имя хенча? Или количество дней, прошедшее с определенного момента... А то писать 10 вариантов диалогов для десятка разных хенчей (где и вся разница-то только в имени) как-то... лень=)
Ilerien
Neverwinter Script
int StartingConditional()
{
    SetCustomToken(10001, GetName(GetHenchman(GetPCSpeaker())));
    return TRUE;
}

Этот скрипт вешать на Text Appears When той строчки диалога, в которой упоминается имя хенча.

В диалоге вставляешь вместо имени хенча <CUSTOM10001>. Число можно брать любое, лучше достаточно большое, чтобы не пересечься с другими кастомными токеами, буде они присутсвуют.
Lirulin
Цитата(Ilerien @ Sep 28 2008, 02:32) *
Этот скрипт вешать на Text Appears When той строчки диалога, в которой упоминается имя хенча.
В диалоге вставляешь вместо имени хенча <CUSTOM10001>. Число можно брать любое, лучше достаточно большое, чтобы не пересечься с другими кастомными токеами, буде они присутсвуют.

Спасибо! А если хенчей 2 и более - скрипт будет произвольно выбирать, имя которого будет этим custom token'ом? Или как-то ограничить можно? (дело в том, что один из 2-х хенчей точно и определенно будет, его имя можно и так вписывать, а вот второй - на выбор. Так чтоб не получилось, что дважды появится имя одного, и ни разу - имя другого.)
Ilerien
Ну определи скриптом, какой тебе хенч нужен.
Neverwinter Script
GetHenchman(oPC, 2)
выдаст тебе второго хенча. Если уж хочется перестраховаться, потому что практика показывает, что номера хенчей иногда глючат, то надо написать так:
Neverwinter Script
int StartingConditional()
{
    object oPC = GetPCSpeaker();
    string sName = GetName(GetHenchman(oPC));

    //проверка на то, упоминали ли мы этого хенча
    if(GetLocalString(OBJECT_SELF, "HENCHMAN_NAME") == sName)
        sName = GetName(GetHenchman(oPC, 2); //выбираем второго

    SetCustomToken(10001, sName);

    SetLocalString(OBJECT_SELF, "HENCHMAN_NAME", sName); //задаем локалку

    return TRUE;
}
Lirulin
Вау! На досуге я даже попытаюсь постигнуть сей мудрый скрипт и впредь буду с подобными вещами сам разбираться=) Может быть...
Wrath
ребят помогите плиз как сделать чтоб свитки отнимались при использовании по одному из стека.. а когда остаеться 1 то чтоб он уничтожался.. у меня вышло отнимать по одному свитку..а вот как последний уничтожить((..
Код
int nStack;
   int nNum = -1;
   if((nStack=GetItemStackSize(oActivated))< nNum){
     SetItemStackSize(oActivated,nStack - nNum);
          }

а вот как добавить сюда DestroyObject(oActivated); чтоб он уничтожал последний оставшийся свиток... некак не могу додуматься((
Ilerien
Neverwinter Script
int nStackSize = GetItemStackSize(oActivated) - 1;
if(nStackSize)
    SetItemStackSize(oActivated, nStackSize);
else
    DestroyObject(oActivated);
Lirulin
Люди... я в тихом ужасе. Объясните, если такое поддается объяснению, как NPC, стоящий (ДОЛЖНЫЙ стоять) в одной локации, самовольно появляется в другой, причем независимо ни от времени, ни от чего-то еще? Просто периодически возникает и лезет со своим диалогом, подлец! На диалоге никаких переменных не стоит... на нем самом - только на смерти, так что влиять вроде не должно. Что делать? shok.gif
shadowdweller
Если не ошибаюсь, есть какая-то переменная, которую ставят на модуль (свойства модуля) специально для того, чтобы НПС ходили по всем локациям, не только по той, где поставлены. Помню, что в названии есть "CROSSAREA" или что-то вроде того. Может, она выставлена?
Ilerien
Есть вейпоинты, по которым этот непись бегает?
Я бы зашёл в модуль из-под ДМ-клиента и посмотрел, что этот непись делает.
Lirulin
Не, переменных, чтоб где попало бегали, я не ставил=) К тому же он один так странно себя ведет, все остальные стоят или ходят там, где их поставили.
Вейпойнтов тоже нет. А как из-под ДМ заходить? И как там можно это посмотреть? (если надо, я конечно могу мод прислать. Пока проблема отступила, т.к. я этого типа из локации убрал, теперь он как encounter появляется. Но все же на светлое будущее неплохо бы знать, откуда родится такой глюк)
Ilerien
Самый простой способ зайти к себе в мод из-под ДМ-клиента, если нет в наличии крякнутого сервака: запускаем nwmain с ключом -dmc (через командную строку или в ярлыке прописать, либо можно заюзать nwn.exe, он выдаст окошко, в котором можно будет выбрать ДМ-клиент), жмём Multiplayer -> New Internet/LAN Game -> Other Modules, далее выбираем название нужного модуля. Перед загрузкой модуля нужно запретить серваку лезть за авторизацией ключа к биоварям, проще всего отключить на время интернет.
Wrath
Обьясните плиз почему не работает
Код
DelayCommand(150.0,CreateObject(OBJECT_TYPE_CREATURE,sResRef,lLoc,FALSE,sTag));

Как можно все таки сделать задержку на CreateObject?
Lex
чтобы понять причине "не работы" мало этой строчки.
Где она висит? (если на убитом существе - работать не будет. Если на удаляемом объекте - работать не будет)
+ нельзя в делэй загонять вещи типа CreateObject и все прочие, что возвращают какое-то значение.
надо примерно так
Neverwinter Script
DelayCommand(150.0,ActionDoCommand(CreateObject(OBJECT_TYPE_CREATURE
,sResRef,lLoc,FALSE,sTag)));
Wrath
Да, на дохлом нпц висит... этот код с ActionDoCommand тоже не работает...
аврора ругаеться(
Ilerien
Neverwinter Script
//...
void CreateObjectVoid(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="");
//...
AssignCommand(GetModule(), DelayCommand(150.0, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc, FALSE, sTag)));
//...
void CreateObjectVoid(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="")
{
    CreateObject(nObjectType, sTemplate, lLocation, bUseAppearAnimation, sNewTag);
}
//...
Ksanatos
Несколько вопросов мастерам:
1.Не знаете создавался ли в последнее время какой-нибудь модуль глобальных масштабов. Какое нибудь подобие morrowind только в игре NWN1?
2.Одни из самых малоизвестных сущест в фэнтазийном мире , это Тени из категории нежить, попадаются редко и о них почти нечего не упоминается. Глупый конечно вопрос, но я сейчас создаю модуль с их участием, для сюжета нужно, не дадите ссылку на подобную информацию.
Lex
Цитата(Wrath @ Oct 14 2008, 20:11) *
Да, на дохлом нпц висит... этот код с ActionDoCommand тоже не работает...
аврора ругаеться(

начинаю значит уже забывать азы smile.gif
на мертвом низя вешать. Если уж привязываешься к событию onDeath, то надо отложенное действие вешать на другой объект (лучше всего конечно на тот, что никуда не денется - те на карту или на модуль.) Собсна Ilerien выше это и написал.

Цитата(Ksanatos @ Oct 15 2008, 09:03) *
Несколько вопросов мастерам:
1.Не знаете создавался ли в последнее время какой-нибудь модуль глобальных масштабов. Какое нибудь подобие morrowind только в игре NWN1?
2.Одни из самых малоизвестных сущест в фэнтазийном мире , это Тени из категории нежить, попадаются редко и о них почти нечего не упоминается. Глупый конечно вопрос, но я сейчас создаю модуль с их участием, для сюжета нужно, не дадите ссылку на подобную информацию.

1. а почему пример морра приведен? smile.gif Те глобальный модуль == большой мир? тады такого не было, по крайней мере в российском сегменте. А новый какой-то модуль есть, на www.wrg.ru выложили на днях.
2. гугли Monster Manual. 2ой и части третьего переведены на русский и лежат в инете.
Trinitron
Всем привет.

У меня вопрос, связанный с 3dsmax и nwn.

Попытаюсь сформулировать вопрос.

Я хочу у вас спросить следующее. Есть игра 'Blade of Darkenss' (незнаю, помнит кто её или нет.) Так вот, я знаю каким образом можно из Neverwinter Nigths I переконвертировать модели в Blade of Darkness. Так как модельки в NWN являются достаточно упрощённые.

Blade of Darkness, для этой игры были написаны модели на 3dsmax 2.5

Я знаю, что из Neverwinter Nigths II можно переконвертировать персонажей в Blade of Darkness.

Вот только я хочу узнать, каким образом происходит конвертация персонажей? Через какие программы берутся файлы из игры и загружаются в 3dsmax, а уже оттуда каким образом происходит переназначение функций атаки на руку итд (или я совсем не правильно выражаюсь?)

Я видел, что писали про конверт персонажей в 3dsmax из NWN I, а потом в Blade of Darkness, но там было абсолютно всё на английском.

Есть ли у вас какие предложения? Или скиньте ссылку на туторы, если есть таковые по границам моих вопросов, на русском. С английского туторы переводить - это слишком, ввиду того, что там текст не малый.

Извиняюсь, если подобные вопросы тут когда-либо задавались (а если задавались, то скиньте адрес.)

Спасибо.
Trinitron
Совсем никто не подскажет?

Я знаю, что есть туторы для 3dsmax'a и NWN, но они на английском,
если есть на русском, то можно бы привести ссылку.
Lirulin
Пытался разобраться сам, но не смог. Скрипт должен в заданный день перебрасывать хенча куда-то, потом возвращать. Один раз. Вместо этого он работает
а) как только хенч прицепится
б) и не останавливается.
Neverwinter Script
void main()
{
    object oMod = GetModule();
    object oPC = GetFirstPC();
    object oHench = GetHenchman(oPC);
    location lLocation = GetLocation(GetObjectByTag("WP_summon"));
    location lLocation2 = GetLocation(oPC);

if(GetCalendarDay() == 1 &&
GetCalendarMonth() == 9 &&
GetLocalInt(oMod, "summoned") < 1)

ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_FNF_SUMMON_MONSTER_2),oHench);
AssignCommand(oHench,ActionJumpToLocation(lLocatio
n));
SetLocalInt(oMod, "summoned", 1);
DelayCommand(10.0,AssignCommand(oHench,ActionJumpToLocation(lLocati
on2)));
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_IMP_UNSUMMON),oHench);

}


В чем я лопухнулся? Уже и с годом вместе проверял, и day/month/year местами менял... (хотя при && должен бы все равно все проверить...)
Lamonde
Как только хенч прицепится скрипт постоянно кидает его туда-сюда? (без конца)
Ilerien
А где это чудо висит?
Lamonde
Neverwinter Script
/*
                    автор: Veliant
                      для: Lirulin
                        17/10/2008

        Слот    -   OnHeartBeat модуля

Описание:   Если переменная "summon" на модуле равна 0 и
            Если наступила указанная дата,
                    - хенчман перепрыгнет к вейпоинту
                    - через 10 сек вернется к игроку

Ремарка:    Думаю, стоит, так же, добавить проверку на наличие хенча, ибо
            в противном случае скрипт поставит переменную на модуля на 1 и
            более манипуляций с хенчами производить не будет (разумеятся, пока
            ктонить не выставит эту переменную снова на 0).
*/


void main()
{
    object  oMod    = GetModule();
    object  oPC     = GetFirstPC();
    object  oHench  = GetHenchman(oPC);

    string  sWP = "WP_summon";
    string  sMS = "summon";

    int     nD = GetCalendarDay();
    int     nM = GetCalendarMonth();
    int     nY = GetCalendarYear();

    float   fTime = 10.0f;

    //Тут надо было написать не GetObjectByTag, а GetWaypointByTag
    location lLocation  = GetLocation(GetWaypointByTag("WP_summon"));
    location lLocation2 = GetLocation(oPC);

    if (    nD == 1     &&
            nM == 2     &&
            nY == 1345  &&

            GetLocalInt(oMod, sMS) < 1  )
    {
        AssignCommand (oHench, JumpToLocation(lLocation));
        SetLocalInt   (oMod, sMS, 1);
        DelayCommand  (fTime, AssignCommand (oHench,JumpToLocation(lLocation2)));
    }
}


Демо модуль прилагается.
Lirulin
Цитата(Ilerien @ Oct 17 2008, 22:00) *
А где это чудо висит?

На Heartbeat'е висело.... пока мне не надоело смотреть, как хенч мелькает туда-сюда=)

Lamonde, спасибо! *исчез, дабы опробовать*. О результатах доложуwink3.gif А почему надо было WaypointByTag? scratch_one-s_head.gif
Lamonde
Цитата(Lirulin @ Oct 18 2008, 11:03) *
А почему надо было WaypointByTag? scratch_one-s_head.gif
При чтении кода без коментов, лишних вопросов не будет возникать. smile.gif
Если серьезно, то если есть возможность использовать функцию спец. для данной цели, лучше ее и использовать.
Lirulin
Цитата(Lamonde @ Oct 18 2008, 14:31) *
Если серьезно, то если есть возможность использовать функцию спец. для данной цели, лучше ее и использовать.

Но, насколько я могу судить, ошибка все же была не в этом? В конце концов вейпойнт и дата не связаны... (понимаю, я задаю слишком много вопросов, но лучше один раз понять, чем сто раз тупо воспользоваться плодами чужого труда... вот я и пытаюсь уразуметь и не ошибаться больше)
Ilerien
Ошибка в том, что проверка работает только для визуального эффекта.
Neverwinter Script
void main()
{
    object oMod = GetModule();
    object oPC = GetFirstPC();
    object oHench = GetHenchman(oPC);
    location lLocation = GetLocation(GetObjectByTag("WP_summon"));
    location lLocation2 = GetLocation(oPC);

    if(GetCalendarDay() == 1 &&
    GetCalendarMonth() == 9 &&
    GetLocalInt(oMod, "summoned") < 1)
    {

        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectV
isualEffect(VFX_FNF_SUMMON_MONSTER_2),oHench);
        AssignCommand(oHench,ActionJumpToLocation(lLocatio
n));
        SetLocalInt(oMod, "summoned", 1);
        DelayCommand(10.0,AssignCommand(oHench,ActionJumpToLocation(lLocati
on2)));
        ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_IMP_UNSUMMON),oHench);
    }

}

Скрипты структурировать надо smile.gif
gennady
Цитата(Lirulin @ Oct 18 2008, 16:55) *
Но, насколько я могу судить, ошибка все же была не в этом? В конце концов вейпойнт и дата не связаны... (понимаю, я задаю слишком много вопросов, но лучше один раз понять, чем сто раз тупо воспользоваться плодами чужого труда... вот я и пытаюсь уразуметь и не ошибаться больше)

Прикол лишь в том, что нужно ставить фигурные скобочки, если под условие попадает более одной строки... Каждая строка кода заканчивается точкой с запятой... ";"
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.