Welliar Опубликовано 25 июня, 2005 Жалоба Поделиться Опубликовано 25 июня, 2005 Я написал скрипт:[morrscript] Begin Caverna_ticket_script short doOnceshort PC_Has_Caverna_Ticket if (MenuMode == 1) returnendif if (GetPCCell Мидуна, Клуб Каверна == 1) if (doOnce == 0) ForceGreeting Set doOnce to 1 ;the officer asks player about his ticket endifendif if (doOnce == 1) ;if player go out from Caverna if (CellChanged == 1) Set doOnce to 0 endifendif if (PC_Has_Caverna_Ticket == 1) if (CellChanged == 1) Set PC_Has_Caverna_Ticket to 0 ; set player has ticket to 0 if he go out from the club endifendif end[/morrscript] Он компилируется, но в игре выдается два сообщения:1. Script error: EXPRESSION in caverna_ticket_script2. Left eval И включается меню персонажа. (В смысле карта, багаж и т.п.)Я не понимаю из-за чего это может быть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 25 июня, 2005 Жалоба Поделиться Опубликовано 25 июня, 2005 название ячейки - в кавычках Ссылка на комментарий Поделиться на другие сайты Поделиться
Morag Опубликовано 25 июня, 2005 Жалоба Поделиться Опубликовано 25 июня, 2005 Ага. И пробелов с запятыми не жалей. Из-за них часто бывают ощибки. Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 27 июня, 2005 Автор Жалоба Поделиться Опубликовано 27 июня, 2005 Нет, если ставишь название в кавычки, CS выдает ошибку о несуществующей функции (район называется Мидуна, Клуб "Каверна") Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 27 июня, 2005 Жалоба Поделиться Опубликовано 27 июня, 2005 перезапусти CS, такое случается если сделать ячейку, а потом ее сразу в скрипте писать Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 27 июня, 2005 Жалоба Поделиться Опубликовано 27 июня, 2005 Переименуй ячейку, в ее имени лучше кавычки не ставить... ставь апостровы, вот такие 'ЗЫ: А какой тег использовать для "Скрипт ТЕС3"? Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 27 июня, 2005 Жалоба Поделиться Опубликовано 27 июня, 2005 <morrscript>содержание скрипта</morrscript>только <> поменять на [] Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 29 июня, 2005 Автор Жалоба Поделиться Опубликовано 29 июня, 2005 Действительно надо было поменять " на '. Теперь у меня другой вопрос:Вдиалоговом меню стражник спрашивает PC о билете в клуб. В случае, если таковой наличиствует, то он отпускает игрока и должна включиться переменная. Только вот, не включается она. Когда снова пытаешься заговорить со стражем, он выдает стартовую реплику, а билета-то у тебя уже нет! Я не знаю что делать. Все строки расположены так, как надо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 29 июня, 2005 Жалоба Поделиться Опубликовано 29 июня, 2005 проверить условия выполнения Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 30 июня, 2005 Жалоба Поделиться Опубликовано 30 июня, 2005 Действительно надо было поменять " на '. Теперь у меня другой вопрос:Вдиалоговом меню стражник спрашивает PC о билете в клуб. В случае, если таковой наличиствует, то он отпускает игрока и должна включиться переменная. Только вот, не включается она. Когда снова пытаешься заговорить со стражем, он выдает стартовую реплику, а билета-то у тебя уже нет! Я не знаю что делать. Все строки расположены так, как надо.<{POST_SNAPBACK}> Должно быть что-то вроде:greetin 1:Дай-ка мне свой билет!в results(как я понял):player -> RemoveItem "ID билета"set твоя_локальная_переменная to 1в условиях:ID стражникаLocal твоя_локальная_переменная (ты ее через скрипт стражнику определил?) == 0 greeting 2Угу, проходи, я уже забирал у тебя билетв условиях:ID стражникаLocal твоя_локальная_переменнвя == 1 (попробуй вариант != 0 или > 0) Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 30 июня, 2005 Автор Жалоба Поделиться Опубликовано 30 июня, 2005 У меня так и есть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 30 июня, 2005 Жалоба Поделиться Опубликовано 30 июня, 2005 нужна сделать глобальные переменные для проверки наличия билета и для проверки проходил уже или нет, а иначе отсылать в садгритинг1если естьгритинг2если если нету и не проходилгритинг3если нету, но уже проходил Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 30 июня, 2005 Жалоба Поделиться Опубликовано 30 июня, 2005 нужна сделать глобальные переменные для проверки наличия билета и для проверки проходил уже или нет, а иначе отсылать в садгритинг1если естьгритинг2если если нету и не проходилгритинг3если нету, но уже проходил<{POST_SNAPBACK}> Так я то же самое и предлагаю, только БЕЗ глобальных переменных(чего это вас всех на Глобал тянет, когда и локалом можно легко обойтись?!) я, как понял, та переменная и должна отвечать за прохождение... те, один гритинг не обязателен, если нет разницы в том проходил он или нет... просто после того как билет отдан будет выводиться одно и то же приветствие Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 30 июня, 2005 Жалоба Поделиться Опубликовано 30 июня, 2005 на глобальные тянет, потому что удобно в некоторых случаях и нечего этого стыдится, от лишнего глобала комп не умрет :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 30 июня, 2005 Автор Жалоба Поделиться Опубликовано 30 июня, 2005 Вот что у меня:Greeting 0------------------ На кой *** ты сюда приперся?Условия:Global "PC_Has_Caverna_Ticket" < 0Results:player->PositionCell.....Goodbye------------------ Как дела?Условия:ID "Imper_captain"Global "PC_Has_Caverna_Ticket" != 0Results:------------------ Отлично, можешь развлекаться.Условия:Function "Choice" == 1Item "Ticket" >= 1Results:player->removeitem "ticket" 1Set PC_Has_Caverna_Ticket" to 1Goodbye------------------- Ты меня обманул! Урод!Условия:Function "Choice" == 1Item "Ticket" == 0Results:Set PC_Has_Caverna_Ticket to -1player->PositionCell......Goodbye------------------- Хорошо, возьми его.Условия:Function "Choice" == 2Results:player->PositionCell......Goodbye------------------- У тебя есть билет?Условия:Global "PC_Has_Caverna_Ticket" == 0Results:Choice "Да" 1 "Я его забыл" 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 1 июля, 2005 Жалоба Поделиться Опубликовано 1 июля, 2005 Вот что у меня:Greeting 0------------------ На кой *** ты сюда приперся?Условия:Global "PC_Has_Caverna_Ticket" < 0Results:player->PositionCell.....Goodbye-----------------<{POST_SNAPBACK}> плаг можешь скинуть, попробую поправить...? _lost81@mail.ru Ссылка на комментарий Поделиться на другие сайты Поделиться
Welliar Опубликовано 1 июля, 2005 Автор Жалоба Поделиться Опубликовано 1 июля, 2005 Скинул. Только без темы. Случайно. Так, что не удаляй. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 1 июля, 2005 Жалоба Поделиться Опубликовано 1 июля, 2005 Скинул. Только без темы. Случайно. Так, что не удаляй.<{POST_SNAPBACK}> Ok, пошел ловить.... Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 4 июля, 2005 Жалоба Поделиться Опубликовано 4 июля, 2005 (изменено) Слушай, поправить я тебе поправил.... :rolleyes: диалоги капитана стражи и бармена B) (косяк все-таки был в основном в скрипте) , но, похоже, запорол такие как "мое занятие", "определенное место" и тд и тп, осталось только "кто-то особенный" :blink: ... Я склонен думать это из за особенностей CS по части вырезания @ и # признайся честно, у тебя эти топики фурыкали или нет? Если нет, то я попробую поправить... и на будующее, создавай топики в greeeting 3 удачней будет а вообще читай MSFD8 помогает! ;) Изменено 7 июля, 2005 пользователем lost81 Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiberius Flavius Опубликовано 19 июля, 2005 Жалоба Поделиться Опубликовано 19 июля, 2005 Раз разговор коснулся диалогов, то мне кажется, что будет полезным такое замечание. Когда используется команда Choice "ID1" 1 "ID2" 2, то ее нужно размещать под теми репликами (TopicInfo), которые содержат ответы. Просто у меня были затруднения, когда я пытался все это дело органзовать снизу вверх, оп порядку. И еще. Иерархия Greeting имеет силу. Для тех приветствий, которые должны быть реализованы в первую очередь, лучше использовать Greeting 0 или Greeting 1. Менее важные следует размещать в других. И если гритинг должен быть задействован единожды, то необходима проверка условия. Кроме того, это уже чисто практическое, темы, созданные для одного определенного персонажа, удобнее всего добавлять в отфильтрованном диалоге. Да, КС в переводе акеллы действительно опчему-то любит вырезать знаки гиперссылок. С английским такое не происходит. поэтому лучше всего воспользоваться конструкцией "Реплика" Choice "Продолжить"AddTopic "тема" "Ответ" После этого тема добавляется в список тем. Если задействовать просто AddTopic, то топик возникнет, если щелкнуть еще оп одному. И если тема имеет какое-то особенное значение, то обозначить ее лучше примерно так"-тема". Тогда она по-любому всплывет вверху. Надеюсь, мои замечания помогут.И еще. 2Lost81, если в этих топиках не содержится новой информации, то проще всего почистить плаг при помощи специальным программ физически удаляющих данные из мода, поскольку КС все равно хранит память (возможно, это баг такой, в любом случае, это свойство приносит вред). Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 20 июля, 2005 Жалоба Поделиться Опубликовано 20 июля, 2005 2Tiberius Flavius 1- Сначала создай топик, а уж затем греетинг с использованием этого топика!2 - Весь прикол в том, что эти темы специфические... (стандартных NPC они не коснулись!) 3- конструкция не совсем верна, в самом низу- вопрос! А выше ответ, при чем, чем больше условий накладывается на этот ответ (при наличии нескольких его вариантов) тем он должен быть выше, с самым минимальным количеством условий ответ должен находиться в самом низу, но не ниже самого вопроса! Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiberius Flavius Опубликовано 20 июля, 2005 Жалоба Поделиться Опубликовано 20 июля, 2005 Должно быть, я высказался не совсем верно. Разумеется, сначал необходмо создать тему, иначе при проверке и компиляции скриптов диалога Морр обнаружит ошибку, причем в игре сообщит о ней довольно неприятным образом. Собственно, гритинга это не касается, а скорее самой команды AddTopic.А что касается структур продолжения, то вопрос (точнее, ту реплику, которая использует вариации Choice), то ее необходимо размещать в низу открываемого ей списка. Правда, я не совсем понимаю почему так. Впрочем, движок Морра билдила Беседка, к ней и вопросы:)О темах. Если они не коснулись стандартных неписей (я так понимаю, они задействованы для опреденнного персонажа или группы), то по делу они не должны выбивать топики. У КС есть весьма нехорошее свойство сохранять даже то, что только было просмотрено, а не изменено. Я как вспомню первый промотр своих плагинов через Advanced ModCleener... Возможно, причина в другом, но на всякий случай проверь. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 21 июля, 2005 Жалоба Поделиться Опубликовано 21 июля, 2005 А что касается структур продолжения, то вопрос (точнее, ту реплику, которая использует вариации Choice), то ее необходимо размещать в низу открываемого ей списка. Правда, я не совсем понимаю почему так. Впрочем, движок Морра билдила Беседка, к ней и вопросы:)О темах. Если они не коснулись стандартных неписей (я так понимаю, они задействованы для опреденнного персонажа или группы), то по делу они не должны выбивать топики. <{POST_SNAPBACK}> Весь прикол в том, что игра начинает проверять топики и гритинги сверху в низ, и при удовлетворительных условиях выводит на экран! Следовательно "легковыводимые" топики должны проверяться позже "трудновыводимых" иначе всегда будут вылазить "легковыводимые", а до трудновыводимых игра просто не будет добираться, по той простой причине, что после вывода на экран мессаги, игра больше не проверяет топики! Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiberius Flavius Опубликовано 25 июля, 2005 Жалоба Поделиться Опубликовано 25 июля, 2005 Весь прикол в том, что игра начинает проверять топики и гритинги сверху в низ, и при удовлетворительных условиях выводит на экран! <{POST_SNAPBACK}>Согласен. Это действительно так. Впрочем, если говорить о практике, то это как раз то, что очень легко устранить. По-любому в грамотно организованном диалоге будет задействована проверка условия действительности того или иного события. Кстати, ты случаем не знаешь в каком порядке игра начинает проверять условия в скриптах? Иногда бывает так, что вроде как if/elseif/endif структуры построены логически верно (если говорить о логике полноценных языков программирования вроде Дельфи или Джаваскрипта), однако игра выдает совсем не то, что требовалось? Может, это из-за того, что Моррскрипт это, по сути, производное игрового движка ? Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 25 июля, 2005 Жалоба Поделиться Опубликовано 25 июля, 2005 Кстати, ты случаем не знаешь в каком порядке игра начинает проверять условия в скриптах? Иногда бывает так, что вроде как if/elseif/endif структуры построены логически верно (если говорить о логике полноценных языков программирования вроде Дельфи или Джаваскрипта), однако игра выдает совсем не то, что требовалось? Может, это из-за того, что Моррскрипт это, по сути, производное игрового движка ?<{POST_SNAPBACK}> Скрипты исполняются КАЖДЫЙ КАДР сверху вниз пока действуют, соответственно если у тебя 35 fps, он будет выполнен 35 раз за одну секунду. В том то и проблема всех начинающих скриптеров - они не знают принцип действия. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти