RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2425163 views

Народ, есть один вопрос. У меня есть код:

ncm=0
:цикл
If ncm<=np:
n[ncm]=ncm
*pl'<a href="EXEC:gs ''Инвентарь персонажа'',n[ncm]"><<$char[ncm]>></a>'
ncm=ncm+1
jump 'цикл'
end

Код работает таким образом: выводит имена персонажей в виде ссылок в зависимости от количества персонажей. Они нумеруются начиная с нуля и их количество хранит переменная “np”. Думаю с циклом вывода всё понятно. Меня интересует массив “n[ncm]” в операторе GS. Почему-то в строке

*pl'<a href="EXEC:gs ''Инвентарь персонажа'',n[ncm]"><<$char[ncm]>></a>'

значение элемента массива “n[ncm]” после оператора GS всегда приравнивается к нулю. Из-за этого я не могу реализовать вывод данных, в которых бы использовалась переменная из массива ARGS, которая передается с оператором GS. Вопрос: это невозможно сделать в QSP, или у меня что-то не правильно в коде?

Storm,
это классическая “грабля”.

Нюанс заключается в том, что при нажатии ссылки, значения переменных будут посчитаны на момент нажатия, а не на момент прохождения очередного шага цикла.

В приведённом примере, решается достаточно просто. Нужно принудительно вычислить значения переменных в шаге цикла, сразу подставив готовые значения в строку. Это делается с помощью механизма “подвыражений”, обозначается двойными угловыми скобками.

! Неправильно:
! <a href="EXEC:GS 'Инвентарь персонажа', np">Хвост</a>
*PL '<a href="EXEC:GS ''Инвентарь персонажа'', n[ncm]"><<$char[ncm]>></a>' 

! Правильно:
! <a href="EXEC:GS 'Инвентарь персонажа', 0">Хвост</a>
*PL '<a href="EXEC:GS ''Инвентарь персонажа'', <<ncm>>"><<$char[ncm]>></a>'

Nex, спасибо большое, всё заработало). А то я уже думал делать по другому)

Одиночка #1417 17.05.2015 20:17 (10 years ago)

Кто нибудь подскажите, как сделать тайник? Вот, допустим, у нас есть локация тайник и у ГГ есть пистолет, вода, и $Патроны (Равные 30). Как сделать так, чтобы в тайник можно было класть вещи, а также потом их забирать?

Одиночка,
выкладываю пример.

Также советую изучить библиотечку, дополняющую инвентарь, и файл objs.qsp в архиве примеров кода.

Здравствуйте,
у меня вопрос по меткам в локации. Когда-то давно тут объясняли, что не стоит пользоваться JUMP, если метка вынесена за пределы действия… Суть в том, что кем-то из корифеев описывался способ перейти на конкретное место в локации при помощи GT и метки, т.е. что-то вроде GT $curloc, ‘loop’
Про ARGS речи не было. Идея такая:

#forest
!Определяем случайный тип врага
i = rand(1,4)
:loop
IF hp > 25:
act 'Hit':
!Дальше проверяем сколько отнялось здоровья, денег, зубов...и пробуем вернуться на ту же локацию к метке, но так, чтобы не запускать по-новой рандомизатор.
gt $curloc, 'loop'
end
end

В общем у меня эта конструкция что-то не работает.

Aleks Versus Moderator 19.05.2015 15:26 (10 years ago)

svandrus,
не могло такого быть, что не было речи про args[]. Ты ведь передаешь аргумент локации, к которой обращаешься. В начале локации попробуй такую строку:

if $args[0]='loop': jump 'loop'

Фактически, переменной $args[0] ты уже присвоил значение ‘loop’ вот этой командой

gosub $curloc,'loop'

, так почему не воспользоваться этим?

Aleks Versus,
В том-то и дело, что про ARGS речи не велось… Обычно я и разбиваю ими локацию на секции с его помощью и обращаюсь к нужному варианту, но в памяти сидит именно вот этот способ - через GT. Речь шла об организации циклов и неправильном использовании JUMP.
Я уже писал, что не понимаю как пользоваться местным поиском - какие-то совершенно рандомные результаты выдаются, чего бы я у него не спрашивал. Обсуждение было в этой теме, но просматривать 288 страниц… опять…
Может я, конечно, и не совсем правильно помню, но если кто-нибудь умеющий разговаривать на одном языке с поиском найдёт именно вот этот фрагмент обсуждения - буду благодарен.

Aleks Versus Moderator 19.05.2015 16:36 (10 years ago)

svandrus,
через goto только так. Ты передаешь ‘loop’ аргументом. Можешь, конечно, засунуть метку в переменную, а потом при повторном вызове локации проверять значение переменной, но это будет практически то же самое, только с новой глобальной переменной.
Вот тема, где обсуждался этот вопрос. Попробую поискать ещё что-нибудь, но вряд ли найдутся иные способы.

Те же яйца, только от Некса.

Aleks Versus,
Во-во.. оно! Спасибо! Там про ARGS нет ничего, правда есть этот страшный XGT…
Я так и знал, что если написать много полезных сообщений выдаётся специальный пароль для общения с поиском на одном языке.

Как сделать так, чтобы в основном окне описаний отображались строки, содержащие теги html не отключая USEHTML?
Т.е. мне нужно вывести на экран строку:
<center>Text</center>

svandrus,
заменяй угловые скобки на спецсимволы “<” и “>”.

Я начинаю осваивать QSP. Столкнулся с вопросом по десятичным дробям. Во время назначения переменных, при использовании запятой пишет, “ошибка синтаксиса”, а при использовании точки “неизвестное действие”. Пришлось заменять десятичные дроби выражениями, вроде а = 1+7/10. Как сделать так, чтобы программа понимала десятичные дроби?

Талер,
в QSP подерживаются только целые числа.

См. использование множителя.

То есть, если вычисляя формулу, у меня получится дробное значение он его округлит? А вывести его и использовать никак нельзя?

Log in or Register to post comments.