Азы скриптинга NWN/NWN2. Внеклассные занятия, Открыто для всех желающих |
Здравствуйте, гость ( Вход | Регистрация )
Азы скриптинга NWN/NWN2. Внеклассные занятия, Открыто для всех желающих |
Oct 6 2007, 22:55
Сообщение
#1
|
|
Класс: Пьяный Мастер Характер: Lawful Good Раса: Тварь MySQL, PHP, JavaScript Порядок Времени |
а это... можно спросить? (IMG:style_emoticons/kolobok_light/blush.gif) а что такое переменная? (IMG:style_emoticons/kolobok_light/blush.gif)
|
Oct 10 2007, 09:25
Сообщение
#2
|
|
Лорд AxisTown'a Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг |
то Griffon
Цитата void main() { object oPC = GetPCItemLastEquippedBy(); object oItem = GetPCItemLastEquipped(); //собственно само уничтожение DestroyObject } это можно использовать для написания скрипта по уничтожению..но только если пишется скриптпо уничтожению того, что надето на oPC (IMG:style_emoticons/kolobok_light/rolleyes.gif) так как нам поставлена задача уничтожить все , что есть в сундуке, то, очевидно это не подойдет Цитата пришла идея ловить все предметы пошагово object GetFirstItemInInventory(object oTarget=OBJECT_SELF); object GetNextItemInInventory(object oTarget=OBJECT_SELF); //собственно само уничтожение предметов DestroyObject а вот это уже шаг в правильном направлении (IMG:style_emoticons/kolobok_light/biggrin.gif) особенно важна идея, что это прийдеться делать Цитата пошагово ведь мы заранее незнаем скольо всего навалено в сундук - целая куча, один предмет или вообще он пустой то Artlira Цитата Не совсем понятно на какой слот надо будет ставить этот скрипт, на OnHeartbeat или OnUsed? очевидно, что логически скрипт уничтожения ставить на OnClose сундука - ведь это очень логично : подходит к сундуку уничтожения игрок, открывает его, выкладывает в сундук все, что ему не понадобиться и закривает сундук( и при этом уничтожает мусор) Цитата 1. Обозначить сам сундук как объект (oChest) object oChest = GetObjectByTag("Sunduc_1") с заданным тагом так как сундук в данном случае у нас "рабочий инструмент " и скрипт будет на его слоте , то он и являеться тем обьектом по умолчанию (OBJECT_SELF), то правильно будет object oChest = OBJECT_SELF; п.с. очевидно мы сЛексом пишем одновременно о одних и тех же вешах (IMG:style_emoticons/kolobok_light/biggrin.gif) Добавлено через 19 минут 53 секунды пока писал пост завис и надо было повторить (IMG:style_emoticons/kolobok_light/sad.gif) ...продолжаю Цитата 2. Обозначить любой предмет, как предмет лежащий в этом сундуке object oItem = GetFirstItemInInventory(oChest) ? здесь мы оперделяем oItem не как любой предмет, но именно как первый предмет в инвенторе но сама идея так делать совершенно правильная (IMG:style_emoticons/kolobok_light/good.gif) Цитата 3. Проверять 1 действием скрипта пустой ли сундук, если пустой, то должен быть выход из скрипта? да ,это следует проверить кстати,Лекс уже подсказал вам как проверить пустой ли инвентарь Цитата подсказка: проверка пустоты - инвалидность (OBJECT_INVALID, GetIsObjectValid) очередного взятого предмета (GetNextItemInInventory). Инвалидный - несуществующий или неправильно заданный объект. Скажем мы пытаемся найти в модуле объект с тэгом "LEX", а такого объекта там нет. Цитата 4. 2 действием проверить - есть ли в инвентаре сундука любой предмет (oItem), не знаю нужно ли в этом случае проверять кем положен? По условиям скрипта (уничтожение любого предмета) это вроде не требуется? а зачем еще раз что то проверять? в пункте 2 вы определил, что oItem являеться первым в инвентаре сундука, а выполнив правильно пункт 3 мы убедились, что сундук непустой и , значит такой первый предмет в инвентаре существует( а если при проверке установили, что инвентарь пуст то уже вышли( закончили выполнение скрипта)) Цитата 5. Если такой предмет найден, он должен быть уничтожен. DestroyObject(oItem) ? и снова выход из скрипта. функция найдена правильно, но зачем выходить из скрипта-ведь предметов может быть больше чем 1! а нам надо уничтожить все вещи... как я уже писал выше главная идея этого скрипта в том, что мы будем выполнять действия пошагово( что и выявил Griffon (IMG:style_emoticons/kolobok_light/good.gif) ) и одни и те же действия будем повторять НЕСКОЛЬКО раз такое действие называеться циклом циклы бывают двух типов 1) те, в которых известно точное количество повторений 2) те ,которые выполняют одни и те же действия ПОКА выполнено какое то условие как выдумайте, какой вид повторения нам нужен (и обоснуйте почему)? Сообщение отредактировал mamuc - Oct 10 2007, 13:21 |
Текстовая версия | Сейчас: 31st May 2024 - 22:59 |