Форум » » FireURQ » Ответить

FireURQ

fireton: FireURQ - это GUI-based интерпретатор URQ. Текущая версия:1.3.2 Основные возможности: Реализация URQL, близкая к классической URQ_DOS Расширенный синтаксис, позволяющий, например, передавать параметры в локацию-подпрограмму (отличия синтаксиса подробно описаны в файле справки). Возможность вставки изображения (или его части) в текст. Декораторы: фрагменты текста или изображения (включая анимированные GIF), которые можно поместить в любое место на экране и по-разному ими манипулировать. Пользовательские шрифты. Поддержка архивного формата квестов .QSZ, при использовании которого ресурсы можно поместить в файл квеста Расширенная поддержка музыки и звука. Поддерживаются форматы WAV, AIFF, MP3, MP2, MP1, OGG, а также трекерные форматы музыки: XM, IT, S3M, MOD, MTM, UMX. Кроме того, воспроизводится и MIDI-музыка (файлы MID). Также поддерживается формат MO3 (трекерная музыка с OGG-упакованными семплами). Реализован fadein и fadeout для музыки. Удобная озвучка локаций. Возможность создания exe-файла игры. Удобный режим отладки, в котором легко обнаружить ошибку и модифицировать квест без перезапуска проигрывателя. Многое другое (для справки смотрите прилагающийся файл FireURQ.html). Баги и пожелания направляйте в FireURQ Bug Tracker. Демонстрации возможностей: 1) http://ifwiki.ru/files/Fireurq_demo.qsz 2) http://ifwiki.ru/files/Decodemo.qsz 3) http://ifwiki.ru/files/Skindemo.qsz История версий Планы на следующую версию Скачать последнюю версию Документация

Ответов - 301, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All

fireton: uux, спасибо за багу. Качайте новую версию.

uux: fireton пишет: uux, спасибо за багу Ох, боюсь, ты еще меня проклинать будешь;). [pre2]inv+ 1, Кирпич :test pln Тестовая локация btn test, test end :use_Кирпич proc someproc forget_procs end :someproc pln Здесь бросаем кирпич inv- 1, Кирпич end[/pre2] Похоже, есть проблемы с inv- и forget_procs.

fireton: uux, inv- поправил. Можно забирать новую версию. Что касается "неправильной" работы forget_procs, то смотри пункт 4b описания. В фурке переход на локации-обработчики инвентаря - не процедуры, а просто goto. Согласен, это спорно, но все-таки. В какой-то момент у меня была веская причина сделать так (хоть я ее и забыл уже ). Если хочется закончить игру из локации-обработчика, то можно очистить все кнопки и перейти куда подальше в локацию без кнопок. Это, кстати, будет работать и в досурке.


uux: fireton пишет: Что касается "неправильной" работы forget_procs, то смотри пункт 4b описания. В фурке переход на локации-обработчики инвентаря - не процедуры, а просто goto. Согласен, это спорно, но все-таки. В какой-то момент у меня была веская причина сделать так (хоть я ее и забыл уже ). Собственно, основной моей проблемой с forget_procs в предыдущей версии FireURQ была не данная особенность работы, а то, что при обращении к ней примерно через раз вываливался Run-time error.

fireton: Это я поправил. Была ошибка, что если вызывать forget_procs без перехода по proc, то падало. Наверное, надо было написать это в историю версий. Ну да ладно. Найдешь еще багов - велкам! :)

fireton: Выложил версию 0.1.8 BETA. Проклятый inv... Но, кажись, я его таки победил...

uux: fireton пишет: Выложил версию 0.1.8 BETA. Проклятый inv... Но, кажись, я его таки победил... Уверен?;) inv+ 1, И-Скакун :Pent pln Пент btn Pent, Мы никуда не уйдем с Пента! end :Izvr pln Вот ты и на Извре. btn Izvr, И с Извра мы тоже никуда не уйдем! end :use_И-Скакун_Активировать pln Ты активируешь И-Скакун и оказываешься на Извре. pln forget_procs goto Izvr end

fireton: Тебе что не нравится, собственно? Размножение кнопок? Я вообще плохо понимаю логику, по которой они должны очищаться. В фурке кнопки очищаются только в двух случаях: переход по кнопке и команда clsb. Если их очищать при действии над инвентарем - будет еще хуже - пропадут все кнопки в локации. Вызывай вместе с forget_procs команду clsb - и будет счастье. Хотелось бы услышать побольше мнений по поводу поведения фурки при переходе на другую локацию через действие над инвентарем...

uux: fireton пишет: Тебе что не нравится, собственно? Размножение кнопок? Ну да, именно оно;). Если без него никак - будем обходить...

fireton: uux пишет: Ну да, именно оно;). Если без него никак - будем обходить... Я бы рад решить эту проблему как-то изящней. Ну вот, смотри. Мы доходим до end и высвечиваем список накопившихся кнопок. Затем пользователь вызывает действие у инвентаря. Мы прыгаем на локацию-действие. Там что-то делаем. Встречаем end и опять же высвечиваем список кнопок. Как определять момент, когда автору понадобилось увести нас на совершенно другую локацию? В урке локации - довольно-таки условны. Поэтому в локациях-действиях рекомендуется никуда не прыгать, а выставлять флаги и переменные. А если уж понадобилось прыгнуть, то, я понимаю, это нештатная ситуация и надо позаботиться об очищении списка кнопок самостоятельно.

fireton: Ок. Я, кажется, понял. Для досурки действие - это подпрограмма. Перед переходом на нее все кнопки очищаются. А после возврата - перепроигрывается локация, с которой произошел переход на локацию действие. Таким образом, кнопки наполняются заново, причем, с учетом изменений, произошедших на локации-действии! С одной стороны, это хорошо. С другой - плохо. Ведь мы могли перейти на текущую локацию по цепочке goto, набирая кнопки "по пути". Тогда исходную цепочку уже не удастся повторить. Не говоря уже о том, что в текущей локации могли меняться какие-нибудь переменные и ее повторное исполнение разломает логику игры. Вот пример: [pre2]inv Палка :dummy pln Вы стоите в большой светлой комнате btn other, Выйти из дома goto ТЕСТ :ТЕСТ pln У вас в руках палка. if (razm=1) then pln Один конец ее размочален нафик. btn ТЕСТ, Повтор end :other pln Вы вышли из дома и теперь стоите на лужайке. btn dummy, Вернуться end :Use_Палка_Треснуть об землю pln Вы со всего размаху шандарахаете палкой об пол! razm=1 end[/pre2] В досурке, если перед тем, как выйти из дома, треснуть палкой об землю, то выйти из дома уже никогда не удастся. В фурке все будет хорошо, но информация о размочаленной палке не появится на экране после возврата из локации-действия. Впрочем, можно же вставить вывод подобного сообщения в саму локацию-действие. Люди, мне очень нужны ваши комментарии по этому поводу! Пожалуйста, помогите мне определить, что есть правильное поведение в данном конкретном случае!

uux: fireton пишет: Люди, мне очень нужны ваши комментарии по этому поводу! Пожалуйста, помогите мне определить, что есть правильное поведение в данном конкретном случае! Тон, просто надо посмотреть существующую базу игр под Досурку. Если такое поведение (переход куда-нибудь из инвентаря) встречается часто, то тогда и делать какие-то телодвижения. А если таких игр всего пять штук, то и фиг с ним. Если абстрагироваться от вопросов обратной совместимости, то, на мой взгляд, поведение фурки более логично.

Korwin: Мне кажется надо делать, как в досурке. Иначе мы никогда не разберемся в стандартах. С другой стороны, fireton, хорошим тоном в досурке тоже негласно считалось кнопки в действиях с инвентарем не добавлять, а только менять условия (переменные), по которым и происходит добавление кнопок в исходной локации

fireton: Я буду очень благодарен, если кто-нибудь укажет мне на игру из существующих, в которой поведение фурки фатально, а поведение досурки - единственно правильное.

Nex: аццкий квест? не знаю как там с процедурами, но для тестирования особенностей по-моему как раз

noname: 1. fireton, интересно, откуда ты вставил этот пример- я скопипастил в notepad, так у меня вся прога получилась одной строчкой 2 uux пишет: Если такое поведение (переход куда-нибудь из инвентаря) встречается Korwin пишет: хорошим тоном в досурке тоже негласно считалось кнопки в действиях с инвентарем не добавлять, а только менять условия (переменные), по которым и происходит добавление кнопок в исходной локациинаверное, я чего-то не понимаю, но в примере с палкой НЕТ перехода куда-нибудь из инвентаря, и кнопки В действиях с инвентарём НЕ добавляются. а отличие в выполнении- ЕСТЬ проще всего его заметить, если сразу же, первым делом размочалить палку на фик. выкладываю тот же текст в нормальном(для копипастинга виде): inv Палка :dummy pln Вы стоите в большой светлой комнате btn other, Выйти из дома goto ТЕСТ :ТЕСТ pln У вас в руках палка. if (razm=1) then pln Один конец ее размочален нафик. btn ТЕСТ, Повтор end :other pln Вы вышли из дома и теперь стоите на лужайке. btn dummy, Вернуться end :Use_Палка_Треснуть об землю pln Вы со всего размаху шандарахаете палкой об пол! razm=1 end

qwerty: сначала я подумал, что и досурка и фурка ведут себя по-своему логично, исходя из характерных для них особенностей вывода инфы на экран НО покрутив 'отличный' момент, и мысленно 'примерив' его для различных ситуаций, пришёл к другому выводу. 1. pln Вы стоите в большой светлой комнате btn other, Выйти из дома goto ТЕСТ ; btn ДО goto я стал бы делать ТОЛЬКО в тех случаях, когда она(btn) НЕ должна быть видна при переходе на ТЕСТ из другого места. так что досурка этот момент обрабатывает верно 2. и другой аспект отличия: попробуйте убить чудовище и снять с него шкуру(только эти два действия, и никаких других!) в этом примере: inv меч inv нож чудо=1 :входим pln войдя в вонючую пещеру, ты останавливаешься, не видя ничего вокруг. pln через минуту глаза привыкли к тьме, и ты видишь, что :пещера if чудо=1 then pln в нескольких шагах от тебя спит жуткое чудовище if чудо=0 then pln в нескольких шагах от тебя лежит труп жуткого чудовища, if чудо=0 then pln его шкура может тебе пригодиться pln btn пещера, приглядеться ещё end :Use_меч_атаковать врага if чудо=0 then pln успокойтесь: все плохие уже мертвы if чудо=1 then чудо=0 & pln ты убил зловредную гадину end :Use_нож_снять шкуру if чудо=1 then pln ничего хорошего из этого не выйдет if чудо=0 then pln ты сделал очередной надрез end ;процесс снятия шкуры и проверка её наличия опущены за ненадобностью

uux: noname пишет: uux пишет: цитата: Если такое поведение (переход куда-нибудь из инвентаря) встречается Korwin пишет: цитата: хорошим тоном в досурке тоже негласно считалось кнопки в действиях с инвентарем не добавлять, а только менять условия (переменные), по которым и происходит добавление кнопок в исходной локации наверное, я чего-то не понимаю, но в примере с палкой НЕТ перехода куда-нибудь из инвентаря, и кнопки В действиях с инвентарём НЕ добавляются. noname, внимательнее читай всю ветвь дискуссии, а не отдельные сообщения, и вопросов будет возникать меньше. Все началось вот с этого примера в одном из моих предыдущих постов (дублирую его здесь, чтобы тебе не искать): inv+ 1, И-Скакун :Pent pln Пент btn Pent, Мы никуда не уйдем с Пента! end :Izvr pln Вот ты и на Извре. btn Izvr, И с Извра мы тоже никуда не уйдем! end :use_И-Скакун_Активировать pln Ты активируешь И-Скакун и оказываешься на Извре. pln forget_procs goto Izvr end В этом примере Досурка действует корректно (после активации И-Скакуна очищает кнопки исходной локации), а Фурка (и, кстати, Акурка тоже) - нет. Здесь как раз есть переход из в другую локацию из инвентаря. Пример Тона с палкой - это контраргумент, ситуация, когда Фурка обрабатывает все нормально, а Досурка - не совсем.

noname: to uux: ветку читал, просто понял не так: я думал, что то отличие уже исправлено в выложенной после этого версии, и теперь Тон обдумывает, исправлять ли ему другое отличие(из примера с палкой). надеюсь, что qwerty удалось показать, что досурка вполне корректно ведёт себя и в этом случае спасибо за разъяснение

uux: Korwin пишет: С другой стороны, fireton, хорошим тоном в досурке тоже негласно считалось кнопки в действиях с инвентарем не добавлять, а только менять условия (переменные), по которым и происходит добавление кнопок в исходной локации Урочных правил хорошего тона я не знаю, конечно, но в моем примере логично делать переход именно из инвентаря, а не из исходной локации (особенно, если в ней не одна кнопка, а несколько - код распухнет на несколько условных операторов). Тон, появилась свежая сумасшедшая мысль: а может, просто сделать побочным эффектом forget_procs очистку кнопок? Ведь, как я понимаю, forget_procs в основном именно для того и применяют, чтобы избежать накапливания кнопок при переходе по цепочке процедур. Можно также регулировать поведение forget_procs в отношении кнопок флагом из программы... Пусть безумная идея - вы не решайте сгоряча (c) ;)



полная версия страницы