![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1286
|
|||
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
Scaled общий смысл цитаты из лексикона сводится к тому, что если хочешь нормально управлять encounter'ом, то рисуй вокруг него триггер, и в OnEnter оного производи необходимые тебе действия. т.е. в твоем случае в OnEnter окружающего encounter триггера нужно вписать:
ps. чтобы не париться с вырисовыванием триггера, проще нарисовать такой же по форме, но чуть больше по размерам и расположить encounter внутри этого триггера. pss. тэг подправил.. ведь "dd_night_enc" могут и не понять. :) Сообщение отредактировал dumbo - Jun 15 2005, 13:44 |
||
![]()
Сообщение
#1287
|
|||||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
dumbo Совсем не обязательно вырисовывать внешний управляющий триггер. Достаточно эти функции юзать на самом Encounter в его OnEnter. ;) Ночной.
Не ночной.
Добавлено в [mergetime]1118833521[/mergetime] ЗЫ. Такая схема вполне успешно ведет себя в Леворе. Так что ремарка от Виктора Моралеса ошибочна. =) |
||||
![]()
Сообщение
#1288
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
DBColl
веришь-нет: еще до чтения ремарки проверил именно путем внедрения в OnEnter SetEncounterActive(GetIsNight()) - не ра-бо-та-ет. посмотрел на поведение, и мысли закрались о том, что он выплевывает крич либо до запуска OnEnter, либо просто после прогона OnEnter не проверяет active флаг. после увиденного пошел читать подробнее и в обнаруженной ремарке нашел подтверждение своих мыслей... :) видимо, у вас там что-то еще приделано... :xz: |
![]()
Сообщение
#1289
|
|||
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Нет, все именно так, как я сказал. Просто там надо мутить как-то с настройками САМОГО ЭНКАУНТЕРА. Я помню, долго бился с этим вопросом и в итоге нашел именно то положение настроек (active, continued и тп), при котором такая схема заработала. ;) Хотя не исключаю, что что-то в энкаунтерах могло быть пофиксено в ХотУ, потому что Левор, как известно, делался на СоУ и именно ТАМ все работало. |
||
![]()
Сообщение
#1290
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
DBColl
прочитал описание еще раз :) в настройках поставил Single Shot, Active сбросил - вот теперь все правильно работает с SetEncounterActive(GetIsNight()) в OnEnter encounter'a... ;) |
![]()
Сообщение
#1291
|
|||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
В функции
FALSE и TRUE - это атака в пассивном и активном режиме, а что эти режимы подразумевают, как их понимать. |
||
![]()
Сообщение
#1292
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
-fenix-
пассивный режим означает то, что атакующий не будет бежать к атакуемому. если у него будет только оружие ближнего боя, то он будет курить бамбук. иначе постреляет. |
![]()
Сообщение
#1293
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Люди просветите, что в функциях делает это - int Reserved1(), int Reserved2...int Reserved85(), это ваще за чем?
|
![]()
Сообщение
#1294
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
-fenix-
непонятно, откуда ты это выкопал - в скриптах биоваров такого нет. обычно, такого рода имена встречаются в параметрах функций, полях структур, и делается это для того, чтобы впоследствии не менялся размер структуры, формат вызова функции - резервируется для возможного будущего использования. применимо к именам функций, да еще и в "своих скриптах", это выглядит как-то так... покажи кусок скрипта, где ты это нашел, и расскажи где ты его(этот скрипт) нашел. ps. в результате прений и мега-флуда(ныне почившего) было выяснено: функции ReservedXX были введены в xp1(SoU) и заменены в xp2(HotU) на группу функций типа itemproperty и функции работы с ними. Сообщение отредактировал dumbo - Jun 17 2005, 12:53 |
![]()
Сообщение
#1295
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Тут вот особо продвинутые люди создают собственные функции, не подскажет ли кто из них как это делать?
Или тут так не объяснить? Тогда хоть скажите с помощью каких прог(иль в самом тулсете), я тогда сам буду ковыряться(без тупых вопросов не обойтись:D). |
![]()
Сообщение
#1296
|
|||||
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
QUOTE=-fenix-, Jun 17 2005, 11:24]Тут вот особо продвинутые люди создают собственные функции, не подскажет ли кто из них как это делать?[/QUOTE] Если это "тупой вопрос", то функции объявляются следующим образом: <тип возвращаемого значения> <имя функции>(<список параметров>) { <тело функции, т.е. тут описано, собственно то что эта функция делает.> } Пример:
Добавлено в [mergetime]1119003303[/mergetime]
:swoon: Если, вдруг имелось ввиду, как делать движковые функции, то сомневаюсь, что тут тебе кто-нить поможет (*слегка косится на Думбо*). Хотя особо продвидуные наверное могут и не такое. Сделали ведь, говорять, какие-то умельцы SetName. Сообщение отредактировал Friedrich - Jun 17 2005, 13:08 |
||||
![]()
Сообщение
#1297
|
|||||||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Friedrich Я ни этот вопрос имел ввиду тупым. Я имел ввиду, что есле это трудно объяснить тут, то намекните и я сам буду разбераться, задавая попутно тупые вопросы. А пользоваться этими функциями так ?
их надо объявлять в каждом скрипте.
Было бы интересно, но я до этого еще не дорос :)
это к чему??? И еще вопросы 1) Есть в НвН массивы или какие - нибудь условия со счетчиком(как в паскале for) или их делать с помощью while? 2) Есть в НвН метки(как в паскале label)? 3) просветите, что такое инклюд и как его юзать. Почему столько вопросов? Потому что у меня наконец появилось время для того, что бы заняться изучением НвН'овского скриптинга по человечески. !!!НАКОНЕЦ!!! Вот скачал сейчас два томика :) скриптов, веселый вечер у меня намечается. Сообщение отредактировал -fenix- - Jun 17 2005, 20:15 |
||||||
![]()
Сообщение
#1298
|
|
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Феникс, лексикон посмотреть не судьба? Или с аглицким вообще никак? Даже если никак, то все равно посмотреть на досуге будет не вредно.
А ежели в чего-то Паскале шаришь, то я чего-то не понимаю твоих вопросов про функуии. Все точно также. Если есть есть какой-то кусок кода, который требуется регулярно выполнять, или он просто содержит какие-либо логически связанные действия или вычисления, то их целесообразно отделить от основной программы в отдельный блок - функцию или процедуру (void-функции - это считай как процедуры). Пользываться самописными функциями затем можно как стандартными. Чтобы не переписывать одни и те же функции в разных скриптах, их можно объединять в библиотеки - инклюды (Биоварские инклюды обычно называится nw_i0_* или x*_inc_*, нп: nw_i0_generic). Директивой #include "filename" при компиляции соотыетствующий файл будет добавлен к основному скрипту. Инклюд не должен содержать функии main. Далее, 1) циклы в НВСкрипте конечно есть: int i; for (i = 0; i < 5; i++) { // statements ... // this loop will cycle i as 0, 1, 2, 3, and 4 } Аналог for i:=0 to 4 do или н.п.: for(i = 4; i >= 0; i--){} аналог: for i:= 4 downto 0 do while (expression) { statement; } выполняется, пока expression истинно. Как в паскале, в общем. do {statement;} while(expression); Как repeat ... until, только выполняется пока условие истинно. 2) Меток и goto естественно нету, т.к. они есть атрибут "дурного стиля программирования" (или фортрана). :D 3) Массивов как таковых нету, но если очень нужно - то их можно симулировать с помощью локалок по принципу: Имя локалки = имя массива + номер ячейки. См. биоварский инклюд nw_o0_itemmaker Еще советую почитать, хотя-бы книжечку по Си, которую тут Айван где-то выкладывал (на предмет синтаксиса). Хотя это не обязательно, Лексикону тебе за глаза хватит. |
![]()
Сообщение
#1299
|
|||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Да. С англицким вообще никак, но лексикон скачал и ковыряю его потихоньку с помощью сократа и лингво. :( У меня просто раньше времени не было разбераться в НвН скриптах, экзамены и все такое. Все, что увидел мельком, это if и локалки, их пока и юзал. Про циклы с пост и предусловием в статьях нашел, а про for и label нигде не написано, вот и спросил есть ли таковые. Спсибо за ответы :good: И новый вопросик Перевод Валео ни кто не заканчивал? |
||
![]()
Сообщение
#1300
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Нет. Есть желание? Вперед! |
||
![]()
Сообщение
#1301
|
|
Level 8 ![]() ![]() ![]() Класс: Рейнджер Характер: Chaotic Evil Раса: Нежить ![]() |
что такое Валео?..или кто такой?
|
![]()
Сообщение
#1302
|
|||||||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Кто такой. Автор перевода функций скриптов тулсета на русском. Но он дощел до "G" и дальше видемо надоело, тем более, что осталось еще наверно 3/4.
Желание есть и английский там понять можно(только это дополнительное время), да вот только этих функций еще до Х..., очень много. Короче нужно просто много времени, а его как раз и нет. Уламываю друга, каторый в английском шарит, помочь, но он пока усердно отбивается. :D Добавлено в 17:19 Тут где-то говорили про функцию, каторая заставляет телеги ездить, кораблики плавать. Ненапишите ее еще разок ПЛИЗ Добавлено в 22:10 Написал вот это
все нормально только: НПС должен выполнить команды в таком порядке подойти к ПС-> проиграть анимацию-> проиграть звук-> сказать привет. А на деле получается так сказал привет-> проиграл звук-> подошел-> проиграл анимацию ПОЧЕМУ ТАК? Сообщение отредактировал -fenix- - Jun 19 2005, 22:12 |
||||||
![]()
Сообщение
#1303
|
|||
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Чего такое очередь дейсвий в курсе? Вижу в курсе. Тогда почему SpeakString, а не ActionSpeakString и PlayVoiceChat, значит, тоже надо в очередь ставить (которая на НПС1 своя собственная). |
||
![]()
Сообщение
#1304
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Friedrich:V: Усе допер.
|
![]()
Сообщение
#1305
|
|
Level 4 ![]() ![]() Класс: Оборотень Характер: Neutral Evil Раса: Тварь ![]() |
Приветствую вас.
Вот такой у меня вопрос- если в инвентаре игрока есть допустим 10 stacked items (незнаю как перевести- суммированных? :xz: ), Например 10 зелий лечения. Как при определенном действии уничтожить 5 из них? Например в диалоге- чтобы нпс забирал заданное кол-во этих зелий? Сообщение отредактировал Zik - Jun 21 2005, 06:53 |
![]()
Сообщение
#1306
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Zik!!! Делается это очень просто для начала создай нужное зелье и дай ему ТЭГ затем, открываешь редактор диалогов, и соответственно открываешь тот диалог, который нужен тебе, далее выбираешь ту ветку диалога в которой NPC должен забрать у игрока зелья, когда ты ее выберешь, нажми вкладку СОВЕРШЕНЫ ДЕЙСТВИЯ там нажми кнопку МАСТЕР СКРИПТОВ там выбери ВОЗМИТЕ У ИГРОКА и в окошечке ВОЗЬМИ ПРЕДМЕТ пиши ТЭГ твоего зелья. Все закончить.
|
![]()
Сообщение
#1307
|
|
Level 4 ![]() ![]() Класс: Оборотень Характер: Neutral Evil Раса: Тварь ![]() |
В таком случае к сожалению забирается именно предмет- то есть в данном случае все зелья, сложенные в один набор с этим тэгом.
Я имею в виду те предметы, у которых есть размер стэка. К примеру дефолтно у зелий он 10, то есть зелья одинакогого типа сложатся в 1 наборчик с подписью 10. У стрел- 99. Мне необходимо забрать только часть - допустим у меня лежит 99 стрел (изображается как стрела, занимающая 2 квадратика инвентори с подписью 99), мне нужно из них взять 33. |
![]()
Сообщение
#1308
|
|||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Работа со стеком у вещей :
Технология такая: нашел вещь, узнал сколько их в стеке. Если больше, чем тебе надо взять, то SetItemStackSize(oItem,GetItemStackSize(oItem)-N) где N - cколько надо взять. Иначе берем все (DestroyObject()), N понижаем на GetItemStackSize(object oItem) и бежим дальше по циклу. (ДО этого надо сделать проверку на общее кол-во вещей и сравнить с N. Скрипт такой есть в базе) |
||||
![]()
Сообщение
#1309
|
|||
Level 4 ![]() ![]() Класс: Оборотень Характер: Neutral Evil Раса: Тварь ![]() |
А если из общего количества вещей в инвентори отнимать? Например есть 1 упаковка 10 бутылок и одна неполная- 7, всего 17 бутылок, надо отнять 12. Вот таким скриптом я узнаю сколько всего бутылок в инвентори игрока:
Не подскажете как из него отнимать? Что нибудь вроде SetNumItems |
||
![]()
Сообщение
#1310
|
|||
Level 5 ![]() ![]() Класс: Рейнджер Характер: Neutral Good Раса: Человек ![]() |
Zik Чего-нить в этом роде
Вроде, работает. |
||
![]() ![]() |
Текстовая версия | Сейчас: 4th May 2025 - 16:06 |