на главную
об игре
Neverwinter Nights 18.06.2002

Вопросы по тулсету

Задаём здесь свои вопросы, касающиеся работы в тулсете.

У меня пока что два:
1) Как сделать, чтоб персонаж, с которым ты говоришь, атаковал тебя в конце разговора? Делаю с помощью мастера создания скриптов действие "атака", но во время тестирования ничего не происходит.
2) Как менять угол статичных объектов, таких как дома, военные насыпи и проч.?

Комментарии: 42
Ваш комментарий

Cтатичные объекты деляться на два типа:
Тайлы (обычно это те самые дома и насыпи) и плейсеблы. Всякого рода мебель, бочки-ящики и т.д. Т.е. объекты на которые впринципе можно подействовать.

Тайлы повернуть вроде бы никак нельзя (хотя может и можно - выделяешь тот самый объект, наживаешь ctrl+c, ужаляешь его и крутишь карты как хочешь. Потом жмешь ctrl+v. Не проверял, хотя в 1.30 это работало.)

Плейсеблы прекрасно крутяться кнопками внизу. ну там такие круговые стрелочки по часовой и против часовой стрелки.

0

А то, чтобы НПС атаковал - поставь в какой-ньть action скрипт в разговоре (можно на последнюю фразу) ActionAttack(GetPCSpeaker());

Он должен будет тебя атаковать.

0

Пра тайлы: правой кнопкой - крутить по часовой стрелке через 90 градусов по другому никак
Пра плэйсы: см. реплю Фенрикса

З.Ы.: Фенрикс, я не променивал Пг на Пургу =)

0

=) хех..
Нонче тайлы можно правой кнопкой крутить? Не знал.... не мап-мейкер я... всего лишь скриптер.

пурген не есть гуд, ПГ есть рель ;)

0

to FenrIX: Среди .nss файлов я его действительно не нашел. А ведь помню что встречал. Теперь буду смотреть среди .ncs и уйду на nwvault учить мат.часть. По поводу предложенного скрипта я конечно прогнал - нужно GetNextAttacker (типа приношу извинения).
Для хайда можно попробовать вставить кусок в x0_io_modes, но в HotU нужные функции (3 и 4) закомментированы. В принципе это не важно т.к. все равно работают, но лучше извлечь вариант из SoU (xp1_scripts.bif). Собственно это и есть скрипт "прятанья" :), точнее надстройка над функциями отвечающими за это.

0

Зато нашел 4-е или 5-ть готовых скриптов для атаки NPC по окончании разговора (и только NPC, и всей его фракции, и с понижением репутации) :)

0

Нашел :-(
...И как всегда не там где надо.
("Что значит - много ломать ресурсы", или "Почему я не люблю хакпаки", или "Когда стоят хаки, то их ресурсы можно спутать с оригинальными")
Описание хака в оригинале:
Quote:
A) Change the prerequisites to Hide in plain sight to something impossible in feats.2da
B) Create a new feat Hide in plain sight in feats.2da, using custom talktables, using the values from hide in plain sight before you changed the prerequisites.
С) Create script in module to represent new spellalike ability which do all required checks on skills and situation, then activate stealth mode.
D) Modify onlevelup script to check on SD class and grant this ability unlimited (or limited) times per day.
Only setback that players should activate this ability from radial menu instead of hide skill icon, hitting that button activate hide mode without SD bonuses (i.e. not combat allowed).

Искомый скрипт есть по пункту С.
Могу дать перевод + детали + комментарии + и т.д. + и т.п. + *.hak (хотя врядли почта позволит)
Кстати, я так думаю, что вместо активизации stealth режима можно вставить кусок скрипта для создания лишь частичной невидимости с concealment n%.

P.S. Если англоязычный вариант вам что-либо напомнил, то угадайте почему. :)

0

Хе-хе... такой вариант мы и сами могем сделать. Вот так-то.

Почта... А сколько он весит.
А англицкий не напоминает, я с ваулта скрипты в последний раз скачивал месяца два назад.

0

Никто не говорил что не могем.

0

Я вот чего подумал...
Коли с ваулта, выкладывай тут интересные ссылки оттдуа с кратким описанием. Коли ты там постоянно роешься, а у меня времени нема... а вот прочитав интересное описание могу тут-же скачать ;)

0

Я роюсь наскоком, а не постоянно. Кроме того, что считать интересным?
Вот если задается вопрос или появляется необходимость что-то сделать, то можно сказать здесь что именно нужно, а я поищу или сам отвечу.

0

Блин народ а есть какойнить сайтик где моно слить описание переменных и вооще почитать про работу скриптов в тулсете а все что касаеться ландшафта разговоров и тд это все пурга, 15 минут изучений и все а вот со скриптами гиморно надо учить, с первого взгляда это С+ или даж С++ а там хз? мне это вооще все нужно для того... что мы мир делае хотя уже не мы а я, как я говорил с геометрией все лады а вот что касаеться скриптов это бее погите кто чем может, я бы неотказался от чегонибуть что похоже на Лексикон токо на русском.

0

А что конкретнее?
Изучай англицкий - полезно.
Большинство функций имеют вполне смысловые названия. И если хочешь сделать какое-то действие, получить какую-то переменную и т.д. - тебе достаточно подобрать название для этого действия и написать его в фильтр. А там выбрать вариант.

А то что основано на Си (это без разницы, Си или цпп. Цпп отличаеться от сей новыми библиотеками и потоками, коих в НВНе нет).
Что конкретнее непонятно спрашивай, ответим.

2K.SpecTr
Ну вот ты нашел изменение Дансера. Это вполне интересно. Интересными для меня являються небольшие изменения стандартных скриптов/контента. А вот например системы крафта мне абсолютно не интересны. В них скучно разбираться.

0

Кто знает функции скриптов для задания внешности по частям (крылья, хвосты, руки, ноги)? Точно знаю что они есть, но хелпер дает только SetAppearance(), а это не то.

0

to FenrIX "Ну вот ты нашел изменение Дансера"... Серьезно? :) Вы ведь вроде мне популярно объяснили как я был не прав, чем же я помог? Тут в нескольких постах промелькнул намек на реальное изменение hips в вашем авторстве. Хотелось бы обсудить каким образом.

0

Намека нема. Хипс будет изменен не мной... и вообще по-видимому без скриптов.

Я говорил что кто-то не прав? Я просто намякнул что нема в стандартной поставке ХотУ скрипта хайда.

p.s. это интересно не столько для шарда, сколько для меня самого

0

Как научить тулсет русскому ? Категорически не хочет писать в скриптах на русском

0

Помниться я там отвечал:
ВНИМАНИЕ ПОСЕТИТЕЛЯМ ФОРУМА

2Ллеитиан
Вот к чему может привести хаотическое перемещение постов. Авторы свои собственные вопросы найти не могут ;)

0

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

0

Читаю список фиксов в 1.64 и аж глаза слезятся, ну прям решение всех вопросов, поднимаемых в таких темах. :) Тут тебе и руки Бигби, и Исааки, и Танцоры с Драконьими последователями. Вот только никак не пойму фикса по поводу Варвара+Защитника гномов - его бы запретить, а они еще плюшек навешивают.

0

Может я не доконца прочитал... Не помню "глобальных" именений. У бигби только иммун к параличу уберут, исааки не помню вовсе. Про классы тоже не помню ни слова.

p.s. читал отседова: 1.64 Beta 1

0

А я читал на форуме от девелоперов.

0

гм... на биотваревском форуме я уже давно не появляюсь. Дай чтоль ссылку, тогда поверю ;)

0

Эх.. Видно не умею я передать интонацию в печатном слове.. Пост то ироничный был (тобишь, я тоже не верю). :)
А смысл я вам и так передать могу: собралась кучка товарищей и начали обсуждать мол то плохо, да это не так, тут к ним какой-то аки биоваровец присоединился - мол, мы это могем исправить, и это тоже, и даже в ближайшем патче (т.е. 1.63 тогда еще). И пошло-поехало - они ему чего хотят получить БООЛЬШОЙ кучей навалили.
Вот я над этой кучей и прослезился.. от смеха. :)
P.S. Найду ссылку снова - передам (я их обычно не запоминаю - память обычно не о том думает :)

0

=) Так-же как и у меня... Хотя зайти на тех-форум к ним нуно будет. Пару кой-каких оцень важных функций попросить прописать (а то например узнать школу специализации у визарда вообще невозможно).

0

Отключить активизацию свойства для некоторой вещи можно следующими методами:
1)Если мы не знаем у кого итем лежит, то: а) Перебираем всех подряд и находим нужного oPC, ну или неPC (думаю излишне говорить как); б) Перебираем вещи и сравниваем - Get[First/Next]ItemInInventory; в) Нашли? Теперь перебираем свойства Get[First/Next]ItemProperty; д) На а теперь RemoveItemProperty (Тип и параметры свойства можно сохранить в переменной итема, если свойство нужно будет восстановить);
е) Для FenrIX-a: Игнорируем предидущие пункты, вызывать такой скрипт можно по "onHeartBeat", "onItemAcquired" или как угодно еще, хоть по тригеру, странно что вообще вопрос встал.
2) Если мы знаем что за итем, то по "GetItemActivated" в скрипте "onItemActivated" - правда логично :)
Можно сделать ванд с супер заклинаниями, а на активации заменять на "FakeEffect" (серьезно, надо попробовать).
По поводу меча в руки: Опять же, на любом подходящем событии (см. пункт е) "ActionUnEquip" (если одет) и добавляем "AddItemProperty" с "Использовать только шестипалым", есть даже отдельная функция для "...UseLimitation". Хотя запретить брать в руки можно и другим способом.
P.S. Если этот ответ не устраивает, то просьба уточнить вопрос.
P.P.S. Пишите в СООТВЕТСТВУЮЩИХ темах, большая просьба.

0

Помогите с респуном в редакторе. Нужен скрипт чтобы герой после смерти воскрешался в одном месте (при указании тега) и у него отнималося NNN количество золото и опыта(например по 10%). Ответьте кто знает!

0

void RemoveXPFromParty(int nXP, object oPC, int bAllParty=TRUE)
{

if (!bAllParty)
{
nXP=(GetXP(oPC)-nXP)>=0 ? GetXP(oPC)-nXP : 0;
SetXP(oPC, nXP);
}
else
{
object oMember=GetFirstFactionMember(oPC, TRUE);

while (GetIsObjectValid(oMember))
{
nXP=(GetXP(oMember)-nXP)>=0 ? GetXP(oMember)-nXP : 0;
SetXP(oMember, nXP);
oMember=GetNextFactionMember(oPC, TRUE);
}
}
}

void main()
{

object oPC = GetLastRespawnButtonPresser();

if (!GetIsPC(oPC)) return;

AssignCommand(oPC, ClearAllActions());

object oTarget;
location lTarget;
oTarget = GetWaypointByTag("TELEPORT");

lTarget = GetLocation(oTarget);

//only do the jump if the location is valid.
//though not flawless, we just check if it is in a valid area.
//the script will stop if the location isn't valid - meaning that
//nothing put after the teleport will fire either.
//the current location won't be stored, either

if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

DelayCommand(3.0, AssignCommand(oPC, ActionJumpToLocation(lTarget)));

oTarget = oPC;

//Visual effects can't be applied to waypoints, so if it is a WP
//apply to the WP's location instead

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget);
else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), GetLocation(oTarget));

RemoveXPFromParty(500, oPC, FALSE);

nInt=GetGold(oPC);

AssignCommand(oPC, TakeGoldFromCreature(nInt, oPC, TRUE));

}

Конешна, можна сделать скрипт, который, например дает "штуку по имени смерть". Ну или что-то в этом духе. =) Это смотря на что фантазии хватит. =)

У нас, на дарксане есть штука по имени смерть.. и что-то еще... ээ.... забыл, в общем. =) Открою модуль - посмотрю. Если не забуду...

И вобще, народ, зачем умных скриптеров мучать? :) Простые скрипты делаем визардом, а те, что потруднее, можно сделать через генератор.

Например: http://nwvault.ign.com/Files/other/data/1044998316652.shtml

Прога конешна на инглище, но раз мы играем в НВН, мы ведь знаем английский? =)

0

Хертбит у меня и так уже заполнен донельзя. Не пойдет
onItemAcquired не подходит, так как надо чтобы шмотка не теряла своих способностей, а просто не могла использоваться.
onItemActivated действут только с Use Unique Power *. но никак не с любым действием/кастом.

На активации опять-же только при Use Unique Power *. иначе это событие не включаеться. И эффект ты не изменишь.

Про ip я вроде говорил... ах да - не тут. Вообшем добавление Only Usable By: недопустимо по тех. причинам.
И удалять их ни в коем случае нельзя (на шарде может они еще и сохраняться, но в сингле после лоада все переменные на айтеме стираються).

Уточняю.
Нужно одним скриптом (можно через вызов других) поставить запрет на надевание/использование предметов. Например запрет на загребание в руки меча или касто с палок/свитков/стафов/шапок/плащей/колец/и т.д.
С надеванием я конечно попробую сунуть в onItemEquip (хотя там и так уже чистого кода на 200 килобайт).
Но вот с кастом не пойдет. Нужен просто запрет, чтобы даже чаржи/свитки/бутылки не тратились.

P.s. модуль - сингловый, но расчитан на кооперативное прохождение партией из 4-6 человек.

0

А по подробнее немножко можно, где вводить тэг и че примерно за че отвечает, где ставиться скоко отнимет золото и опыта при смерти. Напиши если не трудно.

0

Перезаполненность скрипта – бред. Вместо того, чтобы писать 200К команд в одном скрипте, надо делать много вызовов вспомогательных файлов, каждый для своего случая (на подобие «спэлхука» для спэлов). Для «onItemActivate» смотри: x2_mod_def_act, x2_it_example, x2_inc_itemprop (там вроде не только уникальные забиты). На счет потери свойств, я же говорю: сохраняй их в переменных и восстанавливай для разрешения использовать в будущем. Один ньюанс – когда НЕ уникальный предмет активизируется, то идет подмена соответствующим событием, например, кастание спэла можно отследить по “spellcastby..” (определяем итем и удаляем эффект). Гм.. можно в том же спэлхуке задать проверку на наличие var int can’t_use == 1 (не хочешь менять сам скрипт, создай новый и сделай вызов).
Кстати, где лежит контрспэл? Если из него можно изъять кусок, то это идеальный вариант.

0

Как обычно, не обращайте внимания на неточности в английских словах, у меня под рукой тулсэта нет, а наизусть я функции и названия не помню (на разве, только те что заранее на бумажку записал :).

0

2LisK
Ну, этого я совсем не ожидал от людёв. =)
Смотри, плюхаешь что-нить (лучше вэйпоинт) с тэгом TELEPORT (oTarget = GetWaypointByTag("TELEPORT"); )

ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON) - это так сказать, обман зрения - визуальный эффект. =) Ищи нужный в разделе константы. Сейчас поставил ансуммон. =)

А что касается снимания - убирает все золото, ибо это хорошо и чесно. Храните деньги в сберигательных кассах. =)
А экспа - 500 штук. На уровень умножать не стал, ибо нефиг забывать все, если умер один раз. =)

Думаю, где про золото и опыт написано - понятно. =)

А засунуть все это дело надо в ОнПлеерРеспаун. =) Я ОнДес не люблю. =) Вот чисто по природе не люблю. =) Хотя, можно раздробить, например, чтоб снимать 100 опыта и 1000 монет при смерти и телепортировать в фигляндию, а остальное - при воскрешении и в куда-нить-где-все-играют. =)

0

to FenrIX: Сообщай хоть получилось что или нет. Если что, буду думать дальше (ведь самому интересно по правильному ли пути и как надо правильно)

0

K.SpecTr напиши пожалуйсто подробно как переименовывать файл .erf в .bic?
Если не получилось обычное переименование, нужно вырезать из *.erf файла "UTC..." блок и на ЕГО основе создать *.bic.
Или проще говоря вырезать из *.erf файла все байты до "UTC" нафиг, переименовать "UTC" в "BIC" и использовать за основу этот (полученный) файл.
Чем вырезать? как? какими прграммами? Напиши подробно без слэнга!
При обычном переименовании пишет стреефф чёто там не так и имя героя!

0

Помоему, там вполне доступно написано, вырезать в Винде Ctrl+X. Я пользуюсь UltraEdit-ом, но оно тебе надо? Если трудно хачить, используй программу LETO, которая лежит на nwvault-e.
to FenrIX: (Если вопрос еще актуален) Хочешь подарок - скрипт почтой? Почти работает :) (в смысле нужно тестировать, особенно функцию установки флага)

0

K.SpecTr Я может чего недогоняю? Ctrl+X команда вырезать это я понял, но я всё равно не вижу никакой UTC блок(какие байты непонятно) и как на его основе создать .bic? Лето никакое я качать не хочу, зачем если без него всё осуществимо? Всётаки пожалуйсто напиши как всё надо делать ОЧЕНЬ подробно. Заранее благодарен.

0

1) У меня именно инклюдами он и перезаполнен (32 инклюда). В общей сложности кода получаем порядка 200к.
а) Разбираться в этом ооооочень сложно
б) Конешно инклюд не компелируеться... но от этого не легче, там и так происходят трехэтажные просчеты с вызовом 3/4 этого самого инклюда. Ну вообщем надо. Так что все-таки желательно без него обойтись.
На счет x2_mod_def_act, x2_it_example и x2_inc_itemprop
// * This code runs when the item has the OnHitCastSpell: Unique power property
По-моему этим все сказано.

Повторяю еще раз: При сервере (шарде) ПРЕДМЕТЫ СОХРАНЯЮТЬСЯ У ЧАРА, там действует система экспорт-выход-вход-импорт. В сингле сохраняеться сам чар, без предметов, и его состояние. При этом переменные, повешанные на это "состояние" не сохраняються. Короче при системе save-load в сингле эти пременные с оружия слетают. Посему нельзя сохранять свойства на переменных, а через DB, или переменных с чара - трехэтажный геморрой.
Далее. Например двое решили сконнектиться по момеду и пройти данную кампанию. Тогда у одного свойства пропадут, и он отдает другому. Другой получает пустой предмет, хотя он должен быть напичкан магией по полное нехочу. Вот это и не подходит.

Далее. Мне нужно не чтобы "просто небыло эффекта", а чтобы был полный запрет на каст с предмета. Т.е. пребмет бы отображался на красном фоне. В спеллхук я и так запихнуть могу (сейчас стоит там временно).

Один ньюанс – когда НЕ уникальный предмет активизируется, то идет подмена соответствующим событием, например, кастание спэла можно отследить по “spellcastby..” (определяем итем и удаляем эффект).
Что-то я тут тебя не понял.

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

Cообщаю. По прямому и вообщем-то нежелательному пути (onItemEquip/onItemUnequip, spellhook). Вообщем видимо придеться так.

ХАчу. Естественно хАчу. Если я (!)Временно(!) не появляюсь на форуме, это не значит что я из жизни исчез. Высылай, посмотрю. (если что, мыло в профиле).

0

to FenrIX: В смысле "Ну и... ?"
Нашел оригинал вопроса... Понял что вам совсем не то надо... Не по свойствам, а целым итемом, ну так это еще легче.

0

=) Уже вообщем-то и не надо. Я решил нафиг переписать полностью спеллхук (включая в него части от Wild Mage'а....)

А айтемы уже прописаны на onItemEquip, onItemUnequip (воосновном своем).

Вообщем ответ на скрипт пошлю в мыле, чтобы не смущать присутствующих.

0

Кто знает, чем помочь при таком глюке - нажимаешь в тулсете просмотр области - выдает такое сообщение:
"Access violation at adress 690C6E8F in module 'vticd.dll. Write of address 00000008"
Прога при этом явно не висит, но окно с сообщением не убирается => до самой проги уже не достать=((( Гр-р-р! Кто уже видал такое и решил проблему - поделитесь мудростью!

0