LofZ Опубликовано 16 февраля, 2006 Жалоба Поделиться Опубликовано 16 февраля, 2006 Люди! Помогите с созданием квеста! Ниче не понимаю. Как, например, отличить по виду локальный скрипт от глобального? Как заставить запись в журнале появится, когда игрок попадает в определенную ячейку? скрипт повесить? какой? На что? А квест такой: нужно найти израненного непися и дотащить до дома. Нужно чтобы непись, а заодно и его вещи не появились раньше, пока игрока не пошлют на это задание. Потом нужно, чтобы непись пошел за игроком, но не слишком живо, потому что ранен. В случае опасности он не мог бы кинутся в бой по этой же причине, и не нападал бы, если игрок его ударит. А потом когда они дойдут, надо передать раненого в надежные руки. Как другой Ai узнает, что непись дошел? Как будет выглядеть скрипт на этом неписе? Ссылка на комментарий Поделиться на другие сайты Поделиться
Artem13 Опубликовано 16 февраля, 2006 Жалоба Поделиться Опубликовано 16 февраля, 2006 Локальный скрипт, как правило, имеет владельца, т.е. прикреплен к обьекту или неписю. Других способов вроде нет. При выполнении пакета AI проверка на завершение: GetAiPackageDone. RTFM Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 17 февраля, 2006 Автор Жалоба Поделиться Опубликовано 17 февраля, 2006 Цитата чувствую, обьяснил плохо.....Да нет, объяснение прекрасное! Спасибо большое! Только у меня этот скрипт не пошел. Вот к этой строчке редактор почему-то прицепился: Цитата if ( GetDistance Player < 512 )И к этой: Цитата ForceGretingЧего-то could not purse, еще какой-то объект не нашел и где-то еще синтаксические ошибки. Что я сделала не так? Ссылка на комментарий Поделиться на другие сайты Поделиться
Artem13 Опубликовано 17 февраля, 2006 Жалоба Поделиться Опубликовано 17 февраля, 2006 RTFM. Неверный синтаксис. В первом случае ..., во втором - в слове гритинг должно быть две е Сорри, В первом случае попробуй просто скобки потавить if ( (GetDistance, Player) < 512 ) Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 20 февраля, 2006 Автор Жалоба Поделиться Опубликовано 20 февраля, 2006 спасибо за помощь! Только что-то опять идет не так.На неписе висит вот это Цитата short DoOnce if ( DoOnce == 0 ) Disable set DoOnce to 1endifВ результате диалога, когда посылают на квест - Цитата "ID раненого непися" -> enableРедактор все принял, в конструкторе непися видно. А в игре его - нет на месте!!!! :1anim_be: Проверила заклинанием "нюх бродяги" Нашла офигенно крутой волшебный меч "Погибель магов" о существовании которого в Морре даже не подозревала. Но ничего живого в округе нет. :1anim_al: Что такое? Ссылка на комментарий Поделиться на другие сайты Поделиться
Artem13 Опубликовано 20 февраля, 2006 Жалоба Поделиться Опубликовано 20 февраля, 2006 Дык ушел наверное... Ты для начала попробуй поставить в пределах видимости от того места, где берешь квест...Наиболее простой способ "обездвижить" непися - в настройках AI выставить Distance в 0... Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 20 февраля, 2006 Автор Жалоба Поделиться Опубликовано 20 февраля, 2006 Дык уже стояло Distance в 0... :1anim_am:Он правда на краю утеса стоял, но падать-то некуда, разве только игроку на голову... Кажется, эта проблема тут уже возникала...http://www.forum.fullrest.ru/index.php?showtopic=5684&st=0А вот этого-то кусочка у меня и нет... Цитата if ( once == 1 )if ( GetJournalIndex "dummy" >= 50 ) Enable Set once to 2endifendif Ссылка на комментарий Поделиться на другие сайты Поделиться
Artem13 Опубликовано 20 февраля, 2006 Жалоба Поделиться Опубликовано 20 февраля, 2006 Ты руководство по скриптам читал? Там черным по белому, что все должно срабатывать однократно, должно обрамляться условиями Do - Once... Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 20 февраля, 2006 Автор Жалоба Поделиться Опубликовано 20 февраля, 2006 Цитата Ты руководство по скриптам читал? Там черным по белому, что все должно срабатывать однократно, должно обрамляться условиями Do - Once...1. Читала. :1anim_aw: Впрочем, я не злюсь, в самом деле мой ник-аббревиатура такой своеобразный. Надо аватарку повесить. 2. Проблема не только в DoOnce. Ты написал для меня строки кода с этой переменной. Но в предыдушей теме к этому всему прилагался еще кусок кода. я предполагаю, что у меня ничего не работает без этого куска. Однако, все равно проверить это можно будет, только когда я приду домой и доберусь до редактора. Ссылка на комментарий Поделиться на другие сайты Поделиться
Artem13 Опубликовано 20 февраля, 2006 Жалоба Поделиться Опубликовано 20 февраля, 2006 1. Сорри:)2. Просто приведенный тобой кусок в точности соответствует тому, что я писал.. Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 22 февраля, 2006 Автор Жалоба Поделиться Опубликовано 22 февраля, 2006 ааааааа все равно скрипт не идет.... :1anim_be: редактор все принимает, но игра загружается с сообщением об ошибке. ничего не работает! Спасите-помогите! Вот что висит на раненом: Цитата Begin sсript Short once if ( once == 0 )DisableSet once to 1endif if ( once == 1 )if ( GetJournalIndex "dummy" >= 50 ) ; индекс записи, когда герой соглашается идти искать непися Enable Set once to 2endifendifif ( GetDistance Player < 512 )if ( GetDistance "ID дающего квест" < 512 ) Journal "ID журнала" 2 ForceGretingendifendif End scriptОпытным путем обнаружено, что проблема в верхнем кусочке - появится после записи журнала. Игра выдает ошибки - error script EXPRESSION и Left Eval Что делать?!!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 23 февраля, 2006 Жалоба Поделиться Опубликовано 23 февраля, 2006 Try this: Begin smtfq Short once if ( menumode == 1 ) return endif if ( GetHealth < 1 ) Journal "dummy" 85;это запись, которая появляется при смерти NPC endif if ( once == 3 ) if ( GetWeaponDrawn ) if ( GetTarget player == 1 ) StopCombat AiFollow player 0 0 0; чтобы не напдал на игрока else SetFlee 100;дабы бежал от опасности endif endif endif if ( once == 0 ) Disable Set once to 1 endif if ( once == 1 ) if ( GetJournalIndex "dummy" >= 50 ) Enable Set once to 2 endif endif if ( once == 2 ) if ( GetDistance player <= 512 ) ForceGreeting;это когда игрок встречает раненого Set once to 3 endif endif if ( once == 3 ) if ( GetDistance "ID дающего квест" <= 512 ) ForceGreeting;это когда уже пришел AiWander 512 5 0 0 20 0 0 10 30 0 0 0 Set once to 4 endif endif End А вот Journal лучше использовать в поле result приветствия при встрече, ибо *приветствует* он сам, посредством ForceGreeting.В том же результе ставим AiFollow player 0 0 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 27 февраля, 2006 Автор Жалоба Поделиться Опубликовано 27 февраля, 2006 Большое спасибо! :1anim_ab: Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти