Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
08.08.2015 15:39

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Вопросы по URQ

Появился один вопрос относительно URQL.

Сцены\комнаты\локации могут иметь свои локальные переменные, которые не будут сбрасываться с каждым новых входом?

Конкретный пример того, что хотел реализовать:

Есть комната, там есть монстр, а у него есть "очки здоровья" и именно эти ОЗ должны сохраняться т.е. зашёл - пострелял немного, а затем сбежал, потом вернулся и добил монстра.

Такое можно реализовать? Конечно можно глобальную переменную объявить что-то вроде loc_room_gateA_monter_hp, но это как-то ... вроде должно быть что-то такое встроенное?

Неактивен

0    0    #2
10.08.2015 12:03

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

uux написал:

Один из приемов, чтобы не запутаться в длинной череде похожих переменных - давать переменным, относящшимся к определенной локации, имя, начинающееся с имени этой локации.

Таки пришёл к этой мысли. Это будет немного запарно конечно. Жаль, что нет зачатков ООПа, хотя бы в виде локальных и глобальных переменных - придётся выходить из ситуации.

Функции в URQ - это по сути тоже комнаты? Можно как-то нацепить на кнопку (возможно, в сплывающем меню) посещение и возвращение обратно? Есть вроде такая штука как "proc", но есть ли подобие, но для кнопок?
В чём суть - хочу сделать что-то вроде "магазина", в который можно будет войти из различных локаций, при этом там можно (вот неожиданность!) купить что-нибудь, хотелось бы по кнопке сделать это (операция с инвентарём), а потом нажав на "назад" - вернуться в локацию из которой зашли в магазин.

Неактивен

0    0    #3
10.08.2015 21:35

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Да, вроде смысле понятен. По сути это тогда получается собственные переменные рода "превлок" и "каррентлок". Но на самом деле понадобится только одна - превлок. Получается её каждый раз необходимо будет ставить для каждой локации или есть какой-то механизм для этого? Вроде имеется локация common - она вызывается при действии (переходе) или всегда (как обновление игры - каждый "кадр") ?

Неактивен

0    0    #4
11.08.2015 15:22

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Да я просто невнимательно похоже читал, раз не заметил этого )

Про сохранение чего-то не совсем понял, которое про use_inv_Запись. Это такая "функция" для сохранения игры? Или это что-то совсем другое. Видел в плеере есть загрузка, а сохранение я так понял на плечах автора? Т.е. только он сам решает где должно быть сохранение или же можно всё таки сделать пункт меню "сохранить игру" ?

Неактивен

0    0    #5
12.08.2015 15:10

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

О, получается можно сделать кнопку, которая всегда будет активна и не будет привязана к самому квесту, а будет где-то там висеть ? Тогда наверно так и стоит сделать мне ибо там скорее всего будет большая смертность персонажа, а может и нет - посмотрим как будет.


Всё больше я сомневаюсь в выборе URQ. Думаю больше с уклоном в объекты, а URQL не такой язык. Как можно сделать на нём сущность монстра и при этом с параметрами различными?
Ладно, если речь идёт о какой-то конкретном монстре, но что если я захочу в локацию А поместить монстра с типом1 ? Т.е. это ведь как-то надо будет всё вычислять, надеюсь меня спасут функции.

Неактивен

0    0    #6
14.08.2015 14:23

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Подумаю по поводу instead, спасибо.

Пока всё же ставлю себе цель описать всё независимо от платформы и уже от этого идти дальше, однако, уже лучше со старта знать некоторые моменты платформы. Сколько ещё времени уйдёт на конкретную реализацию - не знаю.

Instead выглядит сложнее с первого взгляда, буду иметь ввиду тогда эти две платформы, да.

Неактивен

0    0    #7
14.09.2015 11:55

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Появилось пару вопросов-проблем относительно URQ.

Можно ли составлять конструкции вот такого вида?

Код:

if <> then A1
else
if <> then A2
else
if <> then A3
else
A4

Пробую написать такое, но условия срабатывают как-то неверно.

И ещё по поводу меню. Нужно каждый раз делать метки вроде такого:

Код:

:mark1
btn mark1_1, Abc
btn mark1_2, Def 
end
:mark1_1
...
end
:mark1_2
...
end

Можно ли как-то сократить такую конструкцию? Т.е. чтобы логика нажатия кнопок оставалась в рамках одного mark1 ?

И похоже нет возможности вызвать proc в меню? Хотел вывод сообщений сделать при нажатии на кнопку, но мне дебаг говорит, что нельзя.

UPD:

И ещё такой вопрос. Все проверки в if then else происходят при помощи == ? Постоянно то там, то здесь условие не срабатывает - это меня огорчает.
И переменные. Они же все глобальные, так? т.е. они не только в области метки действуют? Это к предыдущему вопросу - условия не срабатывают.

Вот конкретный код:

Код:

:proc_EnterCode;( CODE, HACKLVL )
    proc_EnterCode_BOOL_OUT = 0;
    proc_EnterCode_BOOL_HACK = 0;
    proc Sys_Msg( "Введите код" );
    pln
    input InputCode;

    if (InputCode == #%proc_EnterCode_1$ ) then
           _proc Sys_Msg( "Ввод кода - Удачно!" ) & proc_EnterCode_BOOL_OUT = 1 else proc Sys_Msg( "Кодовый замок - Неуспех!" ) & proc_EnterCode_BOOL_OUT = 0
    
end;

:EnterSecretCode
proc proc_EnterCode( "11111", 0 );
if proc_EnterCode_BOOL_OUT = 1 then
    _ proc Sys_Msg("Код верный! Вы получили навыки: Хакерство+ и макс.здоровье до 40!") &
    _ Hero_Hacker = 3 &
    _ C_HealthPointsMax = 40
_ else
    _ proc Sys_Msg("Код неверный. Хотите попробовать ещё?") &
    _ btn EnterSecretCode, Да
goto NowOnShip5;
end;

Отредактировано DarkDes (14.09.2015 13:15)

Неактивен

0    0    #8
14.09.2015 16:18

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Евг,  спасибо за ответ!

Поковырялся в коде и ... понял, что опять что-то намудрил сам.
Конструкция из многих if-then-else действительно нормально работает - записал сначала в строку, а потом попытался разбить - вроде нормально.

Про передачу параметра в кнопку - хорошее решение, надо будет сделать так.

А вот с инпутом это я серьёзно проиграл даже в двух местах. В строку перевёл и параметр и сам инпут - всё стало окей.
Важный момент для Урки, который на мой взгляд нелогичен - разный запрос на "=" и "==". Собственно второй годится для строк (поэтому инпут с ним и сравнивается), а первый - для чисел. От того и не правильно условия были у меня smile

Неактивен

0    0    #9
20.09.2015 13:27

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Нужно будет запомнить эти хитрости : )

Наверно опять глупый вопрос, ответ на который где-то в документации, но опять не увидел его:
Имеется ли в Фурке\URQL символ перехода на следующую строку? Т.е. как обычно '\n' в Си.
Что-то вроде этого:

Код:

MyStringVar = "Это первая строка <символ перевода строки> А это вторая строка";

А выводилось бы это так:

Код:

Это первая строка
А это вторая строка

Или такое не предусмотрено?

И ещё кое-что ... опять.
Можно делать подстановку в кнопку? Т.е. у меня есть "функция" с параметром, где этот параметр - локация, например, "Loc_Begin". Пишу что-то вроде вот такого:

Код:

btn #%Loc_Begin$, Назад

Но Фурка ругается. Какое значение в кнопке вообще должно быть? Можно так делать? Это мне необходимо для кнопки "назад". Есть конечно previous_loc, но это не то, что необходимо.

UPD:
Ох, стоило написать и чуть повозится - решения нашлись smile
Вдруг кому пригодится - для переноса строки есть такая штука - #/$. Вставляется в текст и строка переносится.
А по поводу подстановки - похоже в BTN она не работает, но нашёл "хак", делаю так:

Код:

:Loc_Shop
...
btn func_exit( "#%Loc_Shop_1$" ), Назад
...
end
:func_exit
goto #%func_exit_1$
end

Использование: Loc_Shop( "Loc_to_go" );
И при нажатии на кнопку "назад" будет переход на указанную локацию. Знаю, что костыль, но через кнопку как-то не получилось.

Отредактировано DarkDes (20.09.2015 16:12)

Неактивен

0    0    #10
21.10.2015 16:34

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Привет всем!
Квест ещё разрабатывается, но очень уж медленно, что печалит меня. Всё боюсь, что на КРИЛ не успею, но буду стараться.

Тут появился такой вопрос: имеется ли в URQ команда для очистки инвентаря? Или может полный рестарт, но в виде команды, а не стандартного пункта меню?

Неактивен

0    0    #11
22.10.2015 12:05

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Примерно так и делал - с меткой. Ссылаюсь на инициализацию всего и вся.
Да, спасибо за команды.  И perkill наверно пригодится тоже.

Неактивен

0    0    #12
23.10.2015 12:03

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Пытаюсь тут реализовать "бой", делаю через таймер из примера на вики.
Только вот какое дело - когда нажимаешь на текст\кнопку\ссылку, то тогда пауза как бы сбивается т.е. у меня сейчас "фазовый" бой, где игрок должен успеть за N секунд тыкать по ссылкам. Но получается так, что когда нажал на ссылку, то сразу бой переходит на следующую фазу, что вообще-то неправильно (в чём тогда смысл таймера будет?).

Знает кто как такое изменить? Т.е. смена фаз исключительно по таймеру, а не при любом действии игрока?

Неактивен

0    0    #13
23.10.2015 19:57

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Ajenta написал:

что не так здесь?

Тут такая штука, что вот этого всего и не нужно мне.
Ситуация такая, прямо из игры:
Игрок встречает врага и ему на экране печатается сообщение1 т.е. какое-то описание врага\встречи и тут запускается таймер, например, на 2 секунды т.е.
после двух секунд должно вывестись сообщение2, потом через 2 секунды - сообщение3, а потом gameover так сказать.
Дак вот, мне необходимо, чтобы сообщения выводились ровно через 2 секунды, а не как сейчас. Сейчас получается так, что если прошло меньше двух секунд и игрок нажал по ссылке, то идёт другое сообщение - этого не то, что мне нужно.
Из чего получается ситуация, когда всё ломается, а именно по моей задумке должна быть возможность "затыкать врага" ещё на сообщении1, а он с каждым тыком идёт дальше по сообщениям hmm


Евг, можно попробовать такой вариант, да. Не уверен, что смогу всё правильно реализовать т.к. время-то поджимает smile

Неактивен

0    0    #14
30.10.2015 12:24

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Всё же не получается реализовать нормально этот бой sad
Можно как-то сделать так, чтобы нажатие на кнопки\ссылки не сбрасывали паузу? Вот только эта штука мешает. А если через цикл, то у меня просто всё зависает на определённое время (значит он работает?), но при этом ничего не выводит, а потом бац и уже "Ты труп".

Похоже придётся тогда придумать другой метод боя, раз этот такой проблемный.

Неактивен

0    0    #15
30.10.2015 13:55

DarkDes
Участник (+12)
Зарегистрирован: 27.07.2015
Сообщений: 56

Re: Вопросы по URQ

Через таймер и делаю ... или pause - это другое ?
--
хотя почти удалось реализовать криво-косо, но постоянно какие-нибудь баги всплывают. Всё же неудобно с интерпретируемыми языками связываться - куда лучше, когда есть компилятор и он может сразу сказать, что где-то беда.

Отредактировано DarkDes (30.10.2015 13:57)

Неактивен

Powered by PunBB
© copyright 2001–2022 iFiction.Ru