Всякого рода фишки, (касающиеся скриптов) постить сюда |
Здравствуйте, гость ( Вход | Регистрация )
Всякого рода фишки, (касающиеся скриптов) постить сюда |
Aug 11 2004, 19:36
Сообщение
#1
|
|||||||||||||||
Level 8 Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] |
Тема создана главнм образом для новичков, но и более опытным товарищая почитать тоже не помешает. Итак. Минимум флейма. Максимум инфы. Начну я (кто бы сомневался :-) ) 1. LevelUpHenchman(). С помощью этой функции можно... повысить уровень ПС (применив ее к ПС, конечно) без распределения этим самым ПС всех плюшек. Действие фишки можно наблюдать в первой главе ХотУ. Когда в начальном диалоге (при заходе чаром малых уровней) выозникает выбор: повысить уровень самому или автомастически. Этот самый автоматический вариант и реализован с помощью LevelUpHenchman. 2. Тонкость конструкции if (condition) { . . . }.
вернет TRUE. Никогда не задумывались почему? Дело в том, что при "заявлении" условие автоматически приравнивается(==) к TRUE. TRUE в свою очередь численно равно 1 (FALSE = 0, в этом в можете убедиться, открыв nwscript.nss). Поэтому наше форма и возвращает 1. Посему
можно с легкостью заменить на
Не использовать в данном виде! См. пост _kaa_ и мой ответ. 3. Известно почти всем, но все же.
то же, что и
Аналогично и с float, string, effect и другими типами данных. 4. Упрощенная модель if {} else {} Допустим,
то же, что
т.е. все, что до '?' - условие, все, что после вопроса до двоеточия - присвоение в случае истинности утвержения в скобках, после двоеточия - в случае ложности. Продолжение следует. Если у вас есть то, чем можно поделиться и что заслуживает всеобщего внимания , прошу. |
||||||||||||||
Aug 11 2004, 21:45
Сообщение
#2
|
|||||||||||
Level 9 Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] |
Цитата(Tarre Talliorne @ Aug 11 2004, 19:36) 2. Тонкость конструкции if (condition) { . . . }.
вернет TRUE. Никогда не задумывались почему? Дело в том, что при "заявлении" условие автоматически приравнивается(==) к TRUE. TRUE в свою очередь численно равно 1 (FALSE = 0, в этом в можете убедиться, открыв nwscript.nss). Поэтому наше форма и возвращает 1. Посему
можно с легкостью заменить на
Ты проверь что будет для if (2) {} и вообще любого числа кроме 0 (даже отрицательного). Вернёт TRUE. Как ты и сказал, если выражение возвращает 0 - то это FALSE, иначе - TRUE. Чтобы понять (тем кому еще не понятно) - проще рассмотреть логическую конструкцию вне скобок. Скажем:
вернет 1 (TRUE), если k равен 5 и 0(FALSE) в любом другом случае. Т.е. сначала вычислится результат логической операции ==, и этот результат присвоится переменной i. Так что условие
используется для проверки на ненулевое значение локальной переменной.
Сообщение отредактировал _kaa_ - Aug 11 2004, 21:46 |
||||||||||
Aug 11 2004, 22:09
Сообщение
#3
|
|||
Level 8 Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] |
Destinguo, _kaa_, destinguo! Сеньк :-) 5.Давным-давно был вопрос, как убирать эффекты... Вернее, как убрать одни, скажем, визуальные, и оставить другие визуальные. Прием довольно прост и активно юзается биоповарами. В нижеприведенной функции эффекты сортируются не по типу, а по создателю. А создателем можно сделать локальный объект. Так они и снимаются. Итак:
Айван: МОЛОДЕЦ! (IMG:style_emoticons/kolobok_light/good.gif) Давай дальше! (IMG:style_emoticons/kolobok_light/yes3.gif) Сообщение отредактировал Aiwan - Aug 12 2004, 04:47 |
||
Nov 4 2004, 09:20
Сообщение
#4
|
|||
Level 3 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Вот ещё пара идентичных функций для работы с эффектами, ищет первый эффект по одному или комбинации признаков:
П.С. В редакторе, без видимого ограничения на длину строк, скрипт выглядел много лутше. |
||
Nov 22 2004, 20:14
Сообщение
#5
|
|||
Level 10 Класс: Монах Характер: Lawful Good Раса: Человек NWN: Контент |
Простейшая вещь, но может, кому пригодится? Когда в модуле надо обрабатывать много кастомных свойств объектов, скрипт OnActivateItem разрастается до беспредела. Во избежание этого, в свойстве OnActivateItem пишется (примерно) следующее:
что позволяет вызвать скрипт с именем ТЭГА ПРЕДМЕТА. Например, палка с тэгом dragon_stick вызовет (попытается вызвать) скрипт dragon_stick. Все просто. OBJECT_SELF будет указывать на того, на кого направлено свойство палки. З.Ы. Мечтательно Пару проверочек бы влючить... |
||
Dec 31 2004, 17:36
Сообщение
#6
|
|
Level 8 Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] |
По-моему это лишнее: новые скрипты жрут размер модуля, и, кроме того, в одном скрипте все более компактно, что ли. В официальной кампании есть скрипты и по 5 тысяч строк...
|
Jan 2 2005, 00:02
Сообщение
#7
|
|
4-х Кубовый Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора |
Tarre Talliorne
Если есть ХОРОШАЯ система именования скриптовых файлов, то этот способ весьма удобен, особенно, если над модулем трудится несколько скриптеров. ОБЩИЕ скрипты в таком случае получаются ВСЕ, которые стоят в свойствах мода. |
Jan 15 2005, 20:34
Сообщение
#8
|
|||||
Level 8 Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] |
6.Вот как-то вот так... Помнится, с годик назад структуру switch {...} мне подробно объяснил Лекс (если я не ошибаюсь). Так вот. Тогда дело ограничилось только
В то время как немногим (из моих НВН-знакомых) известна одна тонкость. Дело в том, что модель свич является упрощенной моделью иф-элс. И где же здесь элс -- задатите вы резонный вопрос. а вот оно:
Именно дефолт берет на себя инициативу в том, случае, если i не удовлетворяет ни n1, ни n2. Стоит отметить, что break; в конце действия дефолта факультативен. Сообщение отредактировал Tarre Talliorne - Jan 15 2005, 20:37 |
||||
Jan 25 2005, 21:37
Сообщение
#9
|
|||
Level 2 Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] |
Система тэговых скриптов включена в стандартные скрипты НВН (смотрите стандартные скрипты x2_mod_def_load, x2_mod_def_unaqu, x2_mod_def_unequ, x2_mod_def_act, x2_mod_def_aqu, x2_mod_def_equ, а так же скрипт-пример x2_it_example.nss) Касательно моего вклада в копилку идей: поделюсь с вами тем, как на Сиале реализован банк вещей. Сразу скажу, что описанная ситуация работает только с сервер-ваултными персонажами. Идея основана на баге одно функции: void DoPlaceableObjectAction(object oPlaceable, int nPlaceableAction) Дело в том, что эта функция, не смотря на ее название, работает не только с плэйсэйблами, но и с контейнерами (улавливаете мою мысль? :) ) сделав вызов с действием PLACEABLE_ACTION_USE вы можете для игрока открыть любой контейнер. А теперь наступают трудности. Надо сделать так, чтобы контейнер не был доступен пользователю и чтобы он и предметы из него не воровались. Заманчиво сделать контейнер-шкурку (это решает проблему доступа и воровства), но, к сожалению, все шкурки на игроке пропадают при заходе на шард. Поэтому пришлось сделать контэйнер размером 0Х0 (т.е. по нему нельзя щелкнуть мышкой, чтобы открыть) и делать в скрипте использования контейнера вещи, помещенные в контейнер плотовыми (как и сам контейнер),чтобы их нельзя было своровать. Способ конечно извратный, но у него есть огромное преимущество: он не использует БД и поэтому не нагружает сервер. |
||
Jan 25 2005, 21:44
Сообщение
#10
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
так...не понял про
- 0x0. Это как? (не в смысле что это. это я знаю.) - "сервер-ваултными" Те в сингле нельзя? |
Jan 25 2005, 21:53
Сообщение
#11
|
|||
Level 2 Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] |
0Х0 - это размер предмета - пришлось создать в файле baseitems.2da новый предмет-контейнер В сингле использовать эту фишку я особого смысла не вижу, так в нем спокойно можно пользоваться стандартной базой данных
Это, конечно, баг движка, но именно он позволяет сделать предмет, который нельзя выделить и использовать (только надо предупредить игрока, чтобы он очистил от предметов 4 ячейки в левом нижнем углу 1 страницы инвентаря, т.к. хотя размер нулевой, но 4 ячейки все таки используются и исли на этом месте лежат какие-то предметы, то доступ к ним может пропасть). Смысл в том, что технически игрок носит свой сейф с собой (чем достигается высокая надежность хранения вещей), но доступ к сейфу имеет только через специальное устройство (в виде плэйсэйбла в здании банка), к которому привязаны скрипты взаимодействия с контейнером. Если на шарде есть выпадение вещей после смерти (но обычно делается так, что плотовые вещи не выпадают), то наличие сейфа, в котором ироки могут хранить ценные неиспользуемые предметы, является очень ценной функцией для них. Для сингла я бы рекомендовал использовать шкурку-контейнер, так как , по-моему , при восстановлении игры она не пропадает. Сообщение отредактировал Тобур - Jan 26 2005, 00:04 |
||
Jan 25 2005, 22:23
Сообщение
#12
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Я знаю, что 0х0 это размеры вещи. Просто не знал, что движок такие размеры позволяет. Эту вещь нельзя выделить, можно только скриптово обратиться, так?
Я не хочу БД юзать. |
Feb 20 2005, 13:18
Сообщение
#13
|
|
Пингвиноид Класс: Обыватель Характер: True Neutral Раса: Человек |
По просьбе DBColl'a выкладываю свои умозаключения. Надеюсь, темой не обшибся...
К вопросу о букве "я" в тулсете Итак, есть проблема - при вводе буквы "я" в скриптах компилятор потом напрочь отказывается работать. Логически подумаем. Для начала несколько вводных: 1) Маленькая буква "я" имеет ASCII-код 255 (знающие уже догадались, остальным разжевываю) 2) Старые реализации сишной stdlib содержат функцию char fgetc(FILE *stream); 3) Есть глобальная переменная errno сишной библиотеки stdlib Проследим за компилятором. Считывая функцией fgetc очередной символ, он ожидает следующий символ или EOF при конце файла или ошибке. EOF принимает значение -1. Теперь возьмем букву "я", которая при выставленных всех битах имеет значение при signed char равным именно -1 (unsigned char(255) = signed char(-1)). То есть, получая из потока букву "я" компилятор считает, что достигнут конец файла или произошла какая-то ошибка. И ничтоже сумнявшися вываливается с сообщением об ошибке. При этом глобальная переменная errno остается равной 0 (нет ошибок, нет EOF). При написании компилятора разработчики проверяют только результат fgetc, не проверяя при этом errno. Отсюда и спотыкания компилятора. В новом тулсете и компиляторе такой проблемы уже не будет, потому что в современных реализациях stdlib fgetc возвращает уже тип int, а это четыре байта, а не один. Поэтому буква "я" будет распознаваться нормально. С причиной реакции компилятора на букву "я" разобрались. Как исправить? Дизасемблировать компилятор, вставить проверку errno, поменять заголовок исполняемого PE-файла. Заголовок нужно будет поменять, потому что проверка на errno займет, как минимум, дополнительно пару десятков байт. Поэтому в PE-заголовке нужно будет поменять размер сегмента кода. К сожалению я не знаю формат PE-заголовка (хоть он и берет начало от pure COFF формата, с которого начинался и линуксовый ELF-формат). Также я не знаю, как из ассемблера вызвать виндовый stdlib (достучаться к переменной errno в частности). Подытожим, что нужно для решения проблемы: 1) Дизассемблер (решаемо - ищется в Интернете) 2) Спецификация исполняемого PE-файла (решаемо - ищется в Интернете) 3) Вызов stdlib функций из ассемблера (с трудом, но решаемо - в Интернете или методом проб и ошибок) 4) Желание (не решаемо - мне по жизни лень. Профессия обязывает) Осталось найти на 4-й пункт пионера и проблема буквы "я" будет решена. P.S. Мечтательно так: вот был бы тулсет OpenSource... |
Feb 20 2005, 20:04
Сообщение
#14
|
|
Level 9 Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] |
почти все умозаключения далеки от реальности(кроме, пожалуй, дизассемблера) :drag:
но как катализатор пригодились... -> http://dumbo.nm.ru ps. на звание пионера не претендую, бо был я там - не понравилось... |
Feb 20 2005, 23:37
Сообщение
#15
|
|
Level 3 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Есть путь полегче. "я" можно назвать, например, объект, и вставлять GetName(...). Так было сделано на Сиале, ещё до моего прихода, и это работает. Если же мучить экзешник, это прийдётся делать после каждого патча...
|
Feb 20 2005, 23:55
Сообщение
#16
|
|
Level 9 Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] |
этот "путь полегче" относится к, можно сказать, азам. и он не зависит от версии. да. но это же жутко неудобно! хотя, понятное дело, можно привыкнуть и пальцами ног писать скрипты... ;) насчет обновлений - не проблема: если это кому-нибудь будет нужно, забацаю универсальный патчер.
|
Feb 21 2005, 01:29
Сообщение
#17
|
|
Level 3 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Хм. Я с этим столкнулся недавно. Вообще как-то русский в скриптах не применял, при любой возможности использую язык оригинала.
|
Feb 21 2005, 10:56
Сообщение
#18
|
|||||
Пингвиноид Класс: Обыватель Характер: True Neutral Раса: Человек |
На то они и умозаключения, чтобы быть ошибочными. Если не влом отписать - кратко, каковы реалии?
;) Без обид. Пионеры есть и сейчас. Но именно советским - и я был. В комсомол буквально на год не успел... :this: :D Сообщение отредактировал slavaz - Feb 21 2005, 10:58 |
||||
Feb 21 2005, 12:29
Сообщение
#19
|
|||
4-х Кубовый Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора |
НУЖНО!!! :good: |
||
Feb 21 2005, 13:27
Сообщение
#20
|
|||
Level 9 Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] |
slavaz если вкратце, то примерно так - вычитывается весь файл в буфер, потом идет разбор:
соотв-но, когда встречается "я" (0xff), FLAG становится -1 за счет signed типов (movsx FLAG, ch) - так что это скорее косяк биоповаров. ну а невозможность ввода русских букавок - это просто за счет проверки символов isgraph - вторая половина _ctype, как известно, пуста... так что либо заполнять _ctype значениями, скажем, _IS_PUN, либо заменить тельце isgraph на проверку char > 0x20. DBColl ок, как выкрою, так накатаю. только вот мне бы помогли старые версии nwtoolset.exe, clcompile(чем больше разных - тем лучше) - если есть у кого, было бы неплохо... ;) Сообщение отредактировал dumbo - Feb 21 2005, 13:28 |
||
Feb 21 2005, 14:06
Сообщение
#21
|
|||
Пингвиноид Класс: Обыватель Характер: True Neutral Раса: Человек |
2dumbo: МАМА родная моя! :shout: Действительно примерно такой алгоритм? Моего уважения к биоваревцам как кодерам убавилось, ей Богу...
Я, блин, как всегда, занадто глубоко укопался... не учел человеческий фактор... :swoon: По поводу ранних версий тулсета - думаю, DBColl поможет... :yes: В любом случае спасибо, вся общественность будет тебе благодарна. |
||
Feb 21 2005, 17:03
Сообщение
#22
|
|
4-х Кубовый Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора |
dumbo
Скажи, а возможно еще все-таки сделать, чтобы в редакторе скриптов было возможно печатать по-русски? Сможешь ли ты такое провернуть? У меня есть тулсет СоУ 1.32. Дать? |
Feb 21 2005, 23:42
Сообщение
#23
|
|
Level 9 Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] |
DBColl
ты скачай и посмотри... я это сразу сделал... :drag: |
Feb 22 2005, 00:30
Сообщение
#24
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
dumbo э, что то я не понял! А мне ссылку? :rolleyes:
|
Feb 22 2005, 00:45
Сообщение
#25
|
|
Level 10 Класс: Волшебник Характер: Neutral Evil Раса: Человек |
Вот нахимичел в тулсете, и получилось я попробовал поставить вместо DestroyObject, DestroyEffect!
И усё получилось эффект удаляется. |
Feb 22 2005, 11:24
Сообщение
#26
|
|||||
4-х Кубовый Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора |
Это что за новая функция такая??? :)
Ого! Я уже скачал, но еще не смотрел его просто... КУЛ! РЕСПЕКТИЩЕ! 3 года существования тулсета без русского языка и ответов новичкам, что НЕВОЗМОЖНО набирать русский текст в тулсете - копируйте через буфер, УШЛО В ПРОШЛОЕ! УРА, Товарищи! :good: :BRAVO: :BRAVO: |
||||
Feb 22 2005, 22:11
Сообщение
#27
|
|
Level 5 Класс: Рейнджер Характер: Neutral Good Раса: Человек |
[B]Прошу прошенья за флуд.
Это что, Думбо дизассемблировал nwtoolset.exe, исправил его и теперь можно русскиими буквами писать и "я" исползывать. Обалдеть! :D :good: :D //А вот я купил Си++ для чайников, сейчас вот изучаю, через сколько времени я также смогу? :lol: А чего биовары, этого сами не сделали?! У них ведь вообще все исходники есть? Кстати, можно мне тоже попрыбывать принести пользу? :) Может быть это и так все знают. Скрипты можно легко и не принужденно (почти) писать и компилировать без тулсета. (Тулсет большой, на слабых машинах долго грузится, в общем иногда этот может быть полезно). Для этого: 1. Качаем Адитор - текстовый редактор такой и устанавливаем его. (отсюда, например, но не уверен что у меня последняя версия) 2. Прописываем в autoxec.bat путь к папке utils в каталоге nwn. Что-то вроде SET PATH=с:\games\nwn\utils;%PATH% (Правильно написал? Вроде, усе работает? Кстати как в ХР/2К с autoxec'ом, все также? А то у меня 98-е.) Естественно, после этого нужно перезагрузить компьютер, чтобы настройки вступили в силу. 3. Запускаем адитор и идем в настройки: Edit -> Preferences На вкладке, File types -> Еxecute в поле File extension пишем: nss В поле Command line: clcompile &f Cтавим галочку Capture Output и нажимаем Add 4. На вкладке Interface -> Other убираем галочку Start in last visited directory. В противном случае скомпилированный файл будет появлятся в папке, где вы прошлый раз сохраняли файл (бага наверное). 5. По желанию и вкусу, настроить подсветку nss (файл подсветки нужно кинуть в папку с адитором) . Усе! Теперь можно открывать .nss-файлы aditor-ом и компилировать нажатием кнопочки Execute. Соббщения компилятуры пудут перехвачены и появятся в открывшемся снизу окошке самого aditor'a. Может похожую штуку и другие редакторы умеют делать. Но я знаю только про этот. Надеюсь это будет хотя-бы кому-нибудь полезно. Я вообще windows commander'ом пользуюсь и у меня nss в адиторе по F4 открываются. :) Добавлено в [mergetime]1109099859[/mergetime] Соббщения компилятуры пудут перехвачены мдя - это я видимо, обкурился, малость... :drag: Сообщение отредактировал Friedrich - Feb 22 2005, 22:15 |
Feb 23 2005, 09:48
Сообщение
#28
|
|
Level 9 Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] |
пользуясь случаем, поздравляю всех с праздником! :hunter:
как и обещал, забацал универсальный патчер Сообщение отредактировал dumbo - Feb 23 2005, 09:51 |
Feb 23 2005, 14:17
Сообщение
#29
|
|
4-х Кубовый Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора |
dumbo
РЕСПЕКТИЩЕ ТЕБЕ ОГРОМНЫЙ. Ты не смотри, что мало кто отреагировал. Просто еще никто нифига не понял вокруг, ЧТО произошло ;). Так что действительно готовься ловить респекты ;). :good: |
Feb 23 2005, 14:25
Сообщение
#30
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Хм, вот дела :) Де ж ты раньше был? РЕСПЕКТ. Однозначно. :yes:
|
Feb 23 2005, 14:47
Сообщение
#31
|
|
Level 6 Класс: Фея Характер: Chaotic Good Раса: Элементаль NWN: Маппинг Gem of the North |
ОФИГЕННО!!! :) ГДЕ ЖЕ ТЫ БЫЛ 2 ГОДА НАЗАД? РЕСПЕКТ!!! :good: :good: :good:
|
Feb 24 2005, 03:36
Сообщение
#32
|
|||||
Класс: Обыватель Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] |
dumbo, блин. Да за это не только памятник надо ставить! Молодец! :good: Спасибо за сделанное. :yes: И огроменный РЕСПЕКТ!!! Отдельное спасибо slavaz`у за то, что натолкнул МОЗГ на эту мысль.
Действительно, народ революцию пропустил. И я вместе с ними. Я рад, что нахожусь на форуме с такими людьми. |
||||
Feb 24 2005, 10:32
Сообщение
#33
|
|||
Level 10 Класс: Монах Характер: Lawful Good Раса: Человек NWN: Контент |
dumbo: Вот это да! Это и есть ВКЛАД в развитие! (Респект +1) :D
Да уж... Чертыре поста да еще и в "фишках про скрипты"... Народ же всю революцию пропустил! Срочно ссылку во все места! З.Ы. Надеюсь, биоповара не сильно обидятся... Вообще-то дизассемблировать программные продукты не OpenSource (или любой GNU) низя (а OpenSource не нужно)... |
||
Feb 26 2005, 18:05
Сообщение
#34
|
|
Level 2 Класс: Монах Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] |
Круто! Правда у меня сомнения по поводу возможных багов и использования модов в следующих версиях тулсета, но сделана действительно нужная вещь
|
Mar 7 2005, 18:51
Сообщение
#35
|
|
Level 8 Класс: Маг Характер: Lawful Good Раса: Полуэльф |
DBColl ХМ, а у меня 1.32... На вашем 1.64 пойдут мои модули?
dumbo Молодец!! Скачал я патч... Попробую... Это ж действительно переворот! Никаких тебе больше ненужных точек с тегами "YA" и проч...!!! :BRAVO: :BRAVO: :yahoo: |
Mar 11 2005, 22:31
Сообщение
#36
|
|
Level 11 Класс: Клерик Характер: Chaotic Good Раса: Полуэльф NWN: DM |
Присоединяюсь. Респект :good:
|
Mar 11 2005, 22:38
Сообщение
#37
|
|
Level 8 Класс: Маг Характер: Lawful Good Раса: Полуэльф |
А вы знаете, что можно запустить скрипт, дав его тег предмету, и когда он окажется в вашем рюкзаке, скрипт сработает. Следовательно не надо писать OnAcquiredItem.... Просто тег итема и скрипта одинаковые... :)
Lemegeton: "Да. Это делают дефолтные x2_mod_ - скрипты. Только они это скрипт будут запускать не только OnAcquiredItem но и OnUnAcquiredItem, onEqup, onUnEquip, onActivate..." © by Friedrich Более подробно о Tag-based скриптах можно узнать в Lexicon'е Lexicon > Lyceum > Tutorial > Beginning Scripting > Grimlar - Introduction To Tag Based Scripting "вообще, tag-based скрипты - правильная штука(все поведение предмета описывается в одном скрипте), особенно если сравнивать это с кучей "if(GetTag(oItem)){...}" обильно развешанных во всех модульных скриптах... " (с) by dumbo Все остальные посты по обсуждению этой темы удалены. Сообщение отредактировал Lemegeton - Mar 14 2005, 18:13 |
Sep 12 2005, 03:54
Сообщение
#38
|
|
Level 9 Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] |
древняя хреновинка. позволяет делать автопатчеры для хаков (хаков/модулей и т.п.)
нет времени на доработку =( |
Sep 17 2005, 14:33
Сообщение
#39
|
|
Level 9 Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] |
|
Sep 17 2005, 20:11
Сообщение
#40
|
|||
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Очень аккуратно пользуйтесь функцией
На днях лишний раз SetCutsceneMode FALSE привело к тому, что РС стал в режиме бога и не уязвим для повреждений. Промучался пол дня, пока нашел бяку... |
||
Sep 20 2005, 02:31
Сообщение
#41
|
|
Level 5 Класс: Маг Характер: Lawful Good Раса: Тварь |
Несложный но интересный способ установления камеры, без констант.
Задаём переменную. [NSS]float x=0.0f; \\ Движение по оси Х float y=0.0f; \\ Зум, по оси У float z=0.0f;\\ и Конечноже ось Z [\NSS] ----------------------------------------------- Осталось только применить Переменную, и камера установлена. [NSS] x=13.9f; y=14.9f; z=15.9f;[\NSS] |
Sep 7 2006, 19:00
Сообщение
#42
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Известно, что патчить сейвы низя... НО. Если компильнуть все скрипты модуля и впихнуть nss ncs в хак, то модуль будет работать на скриптах их хаков. Теперь достаточно исправить патем 5-10 скриптов, кинуть их исходники и компельнутые файлы в хак например аддонюхак и все. СЕЙВ БУДЕТ БРАТЬ УЖЕ ИСПРАВЛЕННЫЕ СКРИПТ. Проверял тока что. Это конечно по большей степени качается сингловиков... Но все же. ВОЗМОЖНО ЧТО ТО МОЖНО И С ЛОКАЦИЯМИ ТАК И С ДИАЛОГАМИ... Я пока не проверял. Кому нефик делать, проверьте и скажите. (IMG:style_emoticons/kolobok_light/smile.gif)
|
Sep 7 2006, 19:17
Сообщение
#43
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
можно. я те еще в начале года об этом говорил:
http://www.city-of-masters.ru/forums/index...?showtopic=2162 можно все ресурсы в хак и сейвы соот. тоже содержать изменения будут. |
Sep 17 2006, 11:31
Сообщение
#44
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Я мучался чтолько лет не зная, что РС в режиме катсцене может просто ходить пешком, раньше я налаживал эффект замедления. Оказалось при команде
NSS // The action subject will move to lDestination. // - lDestination: The object will move to this location. If the location is // invalid or a path cannot be found to it, the command does nothing. // - bRun: If this is TRUE, the action subject will run rather than walk // * No return value, but if an error occurs the log file will contain // "MoveToPoint failed." void ActionMoveToLocation(location lDestination, int bRun=FALSE) РС идет нормальным пешком... Смешно и обидно. Столько парился в катсценах (IMG:style_emoticons/kolobok_light/smile.gif) |
Dec 20 2008, 23:34
Сообщение
#45
|
|
Level 3 Класс: Псионик Характер: Neutral Good Раса: Человек NWN: Скриптинг [Sn] |
Сегодня заметил, что:
У PC появилась собственная шкурка. Раньше ее требовалось создавать в инвентаре и одевать на персонажа, теперь же она есть и носит гордое название "PC Properties". (IMG:style_emoticons/kolobok_light/smile.gif) А выяснилось это вот каким образом. Создал шкурку, решил ее нацепить на персонажа. Запускаю, одеваю шкурку и в логе читаю "Item swaped out". Открываю инвентарь, лежит "шкурка" игрока. (IMG:style_emoticons/kolobok_light/smile.gif) |
Dec 21 2008, 14:46
Сообщение
#46
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Ну, решили что хватит через зад использовать шкуры животных, вдруг гринписовцы заявят на разрабов и сделали шкуру для РС (IMG:style_emoticons/kolobok_light/smile.gif)
|
Dec 21 2008, 18:03
Сообщение
#47
|
|
Level 3 Класс: Псионик Характер: Neutral Good Раса: Человек NWN: Скриптинг [Sn] |
Ну, решили что хватит через зад использовать шкуры животных, вдруг гринписовцы заявят на разрабов и сделали шкуру для РС (IMG:style_emoticons/kolobok_light/smile.gif) Если бы они еще оставили опцию класть шкурку в инвентарь (через тулсет), было бы шикарно. |
Dec 21 2008, 19:51
Сообщение
#48
|
|
Level 4 Класс: Друид Характер: True Neutral Раса: Человек |
Цитата "PC Properties" Тоже нашел эту шкурку) оказывается она нужна для езды на лошадях(если я правильно понял) |
Dec 22 2008, 00:45
Сообщение
#49
|
|
Level 11 Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North |
Шкурка эта создана с единственной целью - чтобы чары, сделанные до 1.69, могли ездить на лошадях. Мерзавцы-биовари запихали её в спеллхук, так что не удивляйтесь, что она в инвентарь при касте спеллов падает (IMG:style_emoticons/kolobok_light/smile.gif) Причём она создаётся до 30 раз при касте любого спелла (IMG:style_emoticons/kolobok_light/wacko.gif)
Сообщение отредактировал Ilerien - Dec 22 2008, 00:47 |
Dec 22 2008, 13:19
Сообщение
#50
|
|
Level 3 Класс: Псионик Характер: Neutral Good Раса: Человек NWN: Скриптинг [Sn] |
Шкурка эта создана с единственной целью - чтобы чары, сделанные до 1.69, могли ездить на лошадях. Мерзавцы-биовари запихали её в спеллхук, так что не удивляйтесь, что она в инвентарь при касте спеллов падает (IMG:style_emoticons/kolobok_light/smile.gif) Причём она создаётся до 30 раз при касте любого спелла (IMG:style_emoticons/kolobok_light/wacko.gif) Получается, что вешать переменные на нее бессмысленно? (раз она уничтожается и дается по новой или, что то не так понял?) |
Dec 22 2008, 14:37
Сообщение
#51
|
|
Level 4 Класс: Друид Характер: True Neutral Раса: Человек |
Может я ошибаюсь конечно, но помоему скриптом можно шкурку повесить и на место "укуса"??
|
Dec 22 2008, 21:43
Сообщение
#52
|
|
Level 11 Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North |
Цитата Получается, что вешать переменные на нее бессмысленно? (раз она уничтожается и дается по новой или, что то не так понял?) Это надо подробнее смотреть скрипты биоварей, насколько я помню, шкурка эта, если есть в слоте, то не убивается. Я рекомендую просто локалку X3_NO_SHAPESHIFT_SPELL_CHECK на модуле выставить в 1. Если лошади в модуле не используются, то этого должно хватить (IMG:style_emoticons/kolobok_light/smile.gif) Цитата Может я ошибаюсь конечно, но помоему скриптом можно шкурку повесить и на место "укуса"?? Не налезет.
Сообщение отредактировал Ilerien - Dec 22 2008, 21:57 |
Dec 22 2008, 22:12
Сообщение
#53
|
|
Level 4 Класс: Друид Характер: True Neutral Раса: Человек |
Цитата Не налезет. А если в 2da создать отдельный вид шкурки и в параметре слота указать ... ну вообщем я не помню какая это цифра, но "укус" (IMG:style_emoticons/kolobok_light/declare.gif) ??? |
Dec 22 2008, 22:41
Сообщение
#54
|
|
Level 11 Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North |
Да можно хоть саму шкурку изменить в 2да, чтобы налезала, только надо учесть, что итемы в этим слотах используются в качестве природного оружия существа. Сам никогда не пробовал этим заниматься, надо тестить (IMG:style_emoticons/kolobok_light/smile.gif)
|
Dec 23 2008, 19:17
Сообщение
#55
|
|
Level 4 Класс: Друид Характер: True Neutral Раса: Человек |
Цитата итемы в этим слотах используются в качестве природного оружия существа В смысле свойства, которые будут вешаться через редактор будут такие-же как для "укуса"?? Если да, то это ненужная трата времени( |
Mar 21 2009, 21:05
Сообщение
#56
|
|
Level 2 Класс: Обыватель Характер: Lawful Good Раса: Полуэльф |
Народ, никто не подбросит идею, как сделать расписание по часам для мобов? Я знаю, что эта тема уже поднималась, но найти не смог...
|
Mar 22 2009, 11:11
Сообщение
#57
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
http://nwnmod.narod.ru/stat_anim_npc2.htm
вместо рандомного выбора ActionSet будет функция, которая на основе времени и каких-либо еще параметров будет этот ActionSet выбирать. Собсна эта функция и будет расписанием. совет: Если все действия выполняет на 1 локации - проблем нет. Если же нужно чтобы ночью ходил домой и тд - советую не заморачиваться с "честным" движением домой, ибо в последних версиях НВН этот механизм переработали и он стал какой-то кривой. Лучше этот эффект эмулировать, телепортируя домой нужных НПС, когда игрока нет на карте. Если игрок в этот момент дома у НПС, можно НПС кидать к двери, имитируя приход. Если же игрок в другом месте - смело кидай НПС куда нужно. |
Mar 22 2009, 11:44
Сообщение
#58
|
|
Level 2 Класс: Обыватель Характер: Lawful Good Раса: Полуэльф |
Спасибо!=)
|
Oct 21 2011, 07:37
Сообщение
#59
|
|
Level 2 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Забавная вещь, при использовании действия ActionMoveToObject, если персонаж начинает движение без присутствия игрока на локации, он не ищет путь от точки а к точке б, а идет... Оо... напролом. Потом застревает, судя по логам и минусовой координате по оси высоты в его векторе, к примеру, в тайле с деревом. Сначала хотел использовать проверку, есть ли игрок на локации, потом телепортировать NPC, вместо того, чтобы его двигать. Но потом решил просто модифицировать скрипт WalkToWaypoint. Не буду его выкладывать, по скольку модифицирован он для моих нужд
Так будет полезно знать, что если вы захотите, чтобы внезапно какой нить нписюшник, далеко от игрока, захотел сходить за пивом, нужно либо немножко поломать голову, либо сделать так, чтобы на его пути не было препятствий) |
Oct 21 2011, 14:42
Сообщение
#60
|
|
Тролль Класс: Пьяный Мастер Характер: Chaotic Neutral Раса: Тварь |
А ActionForceMoveToObject не спасает?
|
Текстовая версия | Сейчас: 20th May 2024 - 07:13 |