shurikens
Aug 18 2008, 23:09
Подскажите чайнику

.
Вот у меня есть хак с новыми моделями. Могу ли я его прикрепить к офф. игре NWN или к адону?
И как это сделать?
Если нет, то можно ли к примеру изъятые из .hak файла .mdl, .plt и прочие запихнуть в .bif файлы официальной игры?
Чем просматривать .bif я разобрался, а чем редактировать не знаю.
Зарание прошу прощения за идеотский вопрос. Сам на форуме найти не смог.
Заодно подскажите, как .hak одного модуля прикрепить к другому. (я пробовал просто содержимое одного хака перекидывать в другой - иногда работало. Но вот если у нового модуля нету своего хака - тут все и закнчивалось)
Еще раз сори за дурацкие вопросы, сами понимаете - лето, жара, новых игр нету
Talarasha
Aug 19 2008, 08:19
Цитата(Lordeath @ Aug 18 2008, 08:51)

Вот разбирал тут по кусочкам один модуль, возник вопрос - не могу заменить в скрипте фразы которые в кавычках русскими словами. Это галюн именно моего редактора или Авроры в целом?
Глюк авроры. Лечится вот
этим патчем.
Цитата(shurikens @ Aug 19 2008, 00:09)

Подскажите чайнику

.
Вот у меня есть хак с новыми моделями. Могу ли я его прикрепить к офф. игре NWN или к адону?
И как это сделать?
Если нет, то можно ли к примеру изъятые из .hak файла .mdl, .plt и прочие запихнуть в .bif файлы официальной игры?
Чем просматривать .bif я разобрался, а чем редактировать не знаю.
Зарание прошу прощения за идеотский вопрос. Сам на форуме найти не смог.
Заодно подскажите, как .hak одного модуля прикрепить к другому. (я пробовал просто содержимое одного хака перекидывать в другой - иногда работало. Но вот если у нового модуля нету своего хака - тут все и закнчивалось)
Еще раз сори за дурацкие вопросы, сами понимаете - лето, жара, новых игр нету

Да, можете. Если уже прошли в игре официальные модули, то в тулсете, в окне доступных модулей появится галочка внизу "Модули кампаний". Щелкните ее, и сможете открыть официальные кампании.
Если кампании не пройдены, то их надо перетащить из папки "nwm" в папку "modules" и поменять расширение на mod, тогда они появятся в окне модулей. Либо скачать патч, который внесет нужные изменения в реестр, либо внести их самому.
Хаки подключаются к модулю так. Открываете любой модуль, вверху будет пункт меню "Редактировать", в нем - "Модульные свойства". В появившемся окне выберите вкладку "Настройки пользователя". Появится список (пустой) и выпадающий список под ним, в котором вы можете выбрать любой из хаков, которые лежат в папке "hak". Выбирайте нужный, щелкайте "Добавить", и хак подключится к модулю.
Lirulin
Aug 19 2008, 09:14
Я долго пытался справляться сам, но наконец наткнулся на проблему, которая мне н по зубам...
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
Aug 19 2008, 09:57
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
Aug 19 2008, 11:17
Neverwinter Script
object oItem = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItem))
{
if(GetPlotFlag(oItem))
{
SetPlotFlag(oItem, FALSE);
DestroyObject(oItem);
}
oItem = GetNextItemInInventory(oPC);
}
Talarasha
Aug 19 2008, 11:24
Ilerien, а зачем флаг снимать? И без этого ведь уничтожает.
Ilerien
Aug 19 2008, 12:12
Хз

Не обязательно, конечно. Привычка - некоторое время назад я честно думал, что DestroyObject не убивает плотовые итемы.
Lirulin
Aug 19 2008, 18:03
Спасибо! Попробую...
Цитата(Ilerien @ Aug 19 2008, 14:12)

Хз

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

Хз

Не обязательно, конечно. Привычка - некоторое время назад я честно думал, что DestroyObject не убивает плотовые итемы.
Оно так и было. Плотовые предметы не убивались.
Talarasha
Aug 20 2008, 18:14
Цитата(Lamonde @ Aug 20 2008, 16:59)

Оно так и было. Плотовые предметы не убивались.
Проверял на 1.66, убиваются.
Ilerien
Aug 20 2008, 23:31
Ну значит в какой-то более старой версии не убивались.
Talarasha
Aug 21 2008, 09:23
Ilerien, Lamonde, сдается мне, вы все-таки заблуждаетесь и команда SetPlotFlag(oItem, FALSE) в скрипте лишняя. Проверил еще и на 1.22 (оригинал), плотовые предметы успешно убиваются.
Ilerien
Aug 21 2008, 12:13
Хз. Убиваются - так убиваются

Не суть важно, снятие флага на итеме ресурсов почти не хавает.
Talarasha
Aug 21 2008, 13:51
Суть важно, потому что в таком случае твой скрипт не имеет никаких отличий от того, что я уже написал Оо.
Ilerien
Aug 21 2008, 18:55
Ага. На самом деле я сначала прочитал по диагонали задачу и решил, что локалка там не нужна. Фтопку спор, ты прав.
Alhelor
Sep 14 2008, 10:37
Привет всем. У меня вопросы

Короче скачал CEP, в Авроре посмотрел разные там вещи-понравилось очень(головы, и портреты особенно). А можно их как-нибудь пихнуть в Neverwinter Nights (ну в campaign mode)? И еще понравился очень образ Masterius'a и возник вопрос-можно ли заменить модель игрока(своего) на какого-нибудь NPC? Буду ждать ответа.
Melisse
Sep 14 2008, 10:57
Головы и портреты+2да с портретами кинь в овверайд
заменить можно программкой специальной - тут где-то на форуме ссылку есть.
Можно что хочешь делать вообще - это же нвн.
virus_found
Sep 14 2008, 11:28
да пусть хоть тем же
Letoм можно сделать

но и не только им
Alhelor
Sep 14 2008, 15:03
Цитата
Головы и портреты+2да с портретами кинь в овверайд
заменить можно программкой специальной - тут где-то на форуме ссылку есть.
Можно что хочешь делать вообще - это же нвн.
Так там же все в этих .hak'ах Если я создаю модуль и активирую все эти хаки,то портреты и головы и т.д. работают только в этом модуле. А как их пихнуть в общее. И можно по-подробнее насчет всяких там программ.
Melisse
Sep 15 2008, 07:26
Есть такая программа еще NWN Explorer ей можно выдрать что хочешь из хаков или вообще воспользуйся утилитой, что в папке НВН в утилитах.
Lirulin
Sep 27 2008, 18:32
А у меня вот какой вопрос - можно ли вставить в текст диалога переменную (или string), определяемую скриптом? Скажем, бывает <First Name> - а можно ли загнать в эти <> имя хенча? Или количество дней, прошедшее с определенного момента... А то писать 10 вариантов диалогов для десятка разных хенчей (где и вся разница-то только в имени) как-то... лень=)
Ilerien
Sep 28 2008, 00:32
Neverwinter Script
int StartingConditional()
{
SetCustomToken(10001, GetName(GetHenchman(GetPCSpeaker())));
return TRUE;
}
Этот скрипт вешать на Text Appears When той строчки диалога, в которой упоминается имя хенча.
В диалоге вставляешь вместо имени хенча <CUSTOM10001>. Число можно брать любое, лучше достаточно большое, чтобы не пересечься с другими кастомными токеами, буде они присутсвуют.
Lirulin
Sep 28 2008, 07:44
Цитата(Ilerien @ Sep 28 2008, 02:32)

Этот скрипт вешать на Text Appears When той строчки диалога, в которой упоминается имя хенча.
В диалоге вставляешь вместо имени хенча <CUSTOM10001>. Число можно брать любое, лучше достаточно большое, чтобы не пересечься с другими кастомными токеами, буде они присутсвуют.
Спасибо! А если хенчей 2 и более - скрипт будет произвольно выбирать, имя которого будет этим custom token'ом? Или как-то ограничить можно? (дело в том, что один из 2-х хенчей точно и определенно будет, его имя можно и так вписывать, а вот второй - на выбор. Так чтоб не получилось, что дважды появится имя одного, и ни разу - имя другого.)
Ilerien
Sep 28 2008, 12:53
Ну определи скриптом, какой тебе хенч нужен.
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
Sep 29 2008, 19:44
Вау! На досуге я даже попытаюсь постигнуть сей мудрый скрипт и впредь буду с подобными вещами сам разбираться=) Может быть...
ребят помогите плиз как сделать чтоб свитки отнимались при использовании по одному из стека.. а когда остаеться 1 то чтоб он уничтожался.. у меня вышло отнимать по одному свитку..а вот как последний уничтожить((..
Код
int nStack;
int nNum = -1;
if((nStack=GetItemStackSize(oActivated))< nNum){
SetItemStackSize(oActivated,nStack - nNum);
}
а вот как добавить сюда DestroyObject(oActivated); чтоб он уничтожал последний оставшийся свиток... некак не могу додуматься((
Ilerien
Oct 5 2008, 00:00
Neverwinter Script
int nStackSize = GetItemStackSize(oActivated) - 1;
if(nStackSize)
SetItemStackSize(oActivated, nStackSize);
else
DestroyObject(oActivated);
Lirulin
Oct 6 2008, 20:05
Люди... я в тихом ужасе. Объясните, если такое поддается объяснению, как NPC, стоящий (ДОЛЖНЫЙ стоять) в одной локации, самовольно появляется в другой, причем независимо ни от времени, ни от чего-то еще? Просто периодически возникает и лезет со своим диалогом, подлец! На диалоге никаких переменных не стоит... на нем самом - только на смерти, так что влиять вроде не должно. Что делать?
shadowdweller
Oct 7 2008, 22:03
Если не ошибаюсь, есть какая-то переменная, которую ставят на модуль (свойства модуля) специально для того, чтобы НПС ходили по всем локациям, не только по той, где поставлены. Помню, что в названии есть "CROSSAREA" или что-то вроде того. Может, она выставлена?
Ilerien
Oct 8 2008, 00:18
Есть вейпоинты, по которым этот непись бегает?
Я бы зашёл в модуль из-под ДМ-клиента и посмотрел, что этот непись делает.
Lirulin
Oct 8 2008, 12:18
Не, переменных, чтоб где попало бегали, я не ставил=) К тому же он один так странно себя ведет, все остальные стоят или ходят там, где их поставили.
Вейпойнтов тоже нет. А как из-под ДМ заходить? И как там можно это посмотреть? (если надо, я конечно могу мод прислать. Пока проблема отступила, т.к. я этого типа из локации убрал, теперь он как encounter появляется. Но все же на светлое будущее неплохо бы знать, откуда родится такой глюк)
Ilerien
Oct 8 2008, 17:05
Самый простой способ зайти к себе в мод из-под ДМ-клиента, если нет в наличии крякнутого сервака: запускаем nwmain с ключом -dmc (через командную строку или в ярлыке прописать, либо можно заюзать nwn.exe, он выдаст окошко, в котором можно будет выбрать ДМ-клиент), жмём Multiplayer -> New Internet/LAN Game -> Other Modules, далее выбираем название нужного модуля. Перед загрузкой модуля нужно запретить серваку лезть за авторизацией ключа к биоварям, проще всего отключить на время интернет.
Обьясните плиз почему не работает
Код
DelayCommand(150.0,CreateObject(OBJECT_TYPE_CREATURE,sResRef,lLoc,FALSE,sTag));
Как можно все таки сделать задержку на CreateObject?
чтобы понять причине "не работы" мало этой строчки.
Где она висит? (если на убитом существе - работать не будет. Если на удаляемом объекте - работать не будет)
+ нельзя в делэй загонять вещи типа CreateObject и все прочие, что возвращают какое-то значение.
надо примерно так
Neverwinter Script
DelayCommand(150.0,ActionDoCommand(CreateObject(OBJECT_TYPE_CREATURE
,sResRef,lLoc,FALSE,sTag)));
Да, на дохлом нпц висит... этот код с ActionDoCommand тоже не работает...
аврора ругаеться(
Ilerien
Oct 14 2008, 23:27
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
Oct 15 2008, 08:03
Несколько вопросов мастерам:
1.Не знаете создавался ли в последнее время какой-нибудь модуль глобальных масштабов. Какое нибудь подобие morrowind только в игре NWN1?
2.Одни из самых малоизвестных сущест в фэнтазийном мире , это Тени из категории нежить, попадаются редко и о них почти нечего не упоминается. Глупый конечно вопрос, но я сейчас создаю модуль с их участием, для сюжета нужно, не дадите ссылку на подобную информацию.
Цитата(Wrath @ Oct 14 2008, 20:11)

Да, на дохлом нпц висит... этот код с ActionDoCommand тоже не работает...
аврора ругаеться(
начинаю значит уже забывать азы

на мертвом низя вешать. Если уж привязываешься к событию onDeath, то надо отложенное действие вешать на другой объект (лучше всего конечно на тот, что никуда не денется - те на карту или на модуль.) Собсна Ilerien выше это и написал.
Цитата(Ksanatos @ Oct 15 2008, 09:03)

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

Те глобальный модуль == большой мир? тады такого не было, по крайней мере в российском сегменте. А новый какой-то модуль есть, на www.wrg.ru выложили на днях.
2. гугли Monster Manual. 2ой и части третьего переведены на русский и лежат в инете.
Trinitron
Oct 15 2008, 15:49
Всем привет.
У меня вопрос, связанный с 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
Oct 16 2008, 07:53
Совсем никто не подскажет?
Я знаю, что есть туторы для 3dsmax'a и NWN, но они на английском,
если есть на русском, то можно бы привести ссылку.
Lirulin
Oct 17 2008, 19:03
Пытался разобраться сам, но не смог. Скрипт должен в заданный день перебрасывать хенча куда-то, потом возвращать. Один раз. Вместо этого он работает
а) как только хенч прицепится
б) и не останавливается.
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
Oct 17 2008, 19:44
Как только хенч прицепится скрипт постоянно кидает его туда-сюда? (без конца)
Ilerien
Oct 17 2008, 20:00
А где это чудо висит?
Lamonde
Oct 17 2008, 20:42
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
Oct 18 2008, 10:03
Цитата(Ilerien @ Oct 17 2008, 22:00)

А где это чудо висит?
На Heartbeat'е висело.... пока мне не надоело смотреть, как хенч мелькает туда-сюда=)
Lamonde, спасибо! *исчез, дабы опробовать*. О результатах доложу

А почему надо было WaypointByTag?
Lamonde
Oct 18 2008, 12:31
Цитата(Lirulin @ Oct 18 2008, 11:03)

А почему надо было WaypointByTag?

При чтении кода без коментов, лишних вопросов не будет возникать.

Если серьезно, то если есть возможность использовать функцию спец. для данной цели, лучше ее и использовать.
Lirulin
Oct 18 2008, 15:55
Цитата(Lamonde @ Oct 18 2008, 14:31)

Если серьезно, то если есть возможность использовать функцию спец. для данной цели, лучше ее и использовать.
Но, насколько я могу судить, ошибка все же была не в этом? В конце концов вейпойнт и дата не связаны... (понимаю, я задаю слишком много вопросов, но лучше один раз понять, чем сто раз тупо воспользоваться плодами чужого труда... вот я и пытаюсь уразуметь и не ошибаться больше)
Ilerien
Oct 18 2008, 16:42
Ошибка в том, что проверка работает только для визуального эффекта.
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);
}
}
Скрипты структурировать надо
gennady
Oct 18 2008, 17:05
Цитата(Lirulin @ Oct 18 2008, 16:55)

Но, насколько я могу судить, ошибка все же была не в этом? В конце концов вейпойнт и дата не связаны... (понимаю, я задаю слишком много вопросов, но лучше один раз понять, чем сто раз тупо воспользоваться плодами чужого труда... вот я и пытаюсь уразуметь и не ошибаться больше)
Прикол лишь в том, что нужно ставить фигурные скобочки, если под условие попадает более одной строки... Каждая строка кода заканчивается точкой с запятой... ";"
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.