Как сделать?
…
evp,
спасибо! Нашёл глобальнейшую ошибку. Просто вселенского масштаба.
С високосностью потом разберёмся. Забыли про тот календарь. Уберу его. Сейчас переделаю наново.
всем привет, есть у кого нить ссылка на самую простую боевку? А то что я видел немогу разобраться.
Так. Поправил календарик, кому ещё интересно. Проверил даты, потестил. Ничего не пропадает, стоически совпадают дни недели с датами действительного календаря. Так же для примера сделан календарь далёких родичей двемеров - недомеров, дабы показать, как легко и просто изменить данный календарь под свои нужды.
Благодаря evp была выявлена глобальная ошибка, а так же упрощены некоторые вычисления. Спасибо.
###calenda2.qsp###
Здравствуйте, форумчане. Возник небольшой вопрос: можно ли использовать оператор “jump” в операторе “dynamic”? Я пишу такой код
dynamic 'jump "метка"'
И мне выдает ошибку о том, что запрашиваемая метка не найдена. Возможно ли это решить?
Storm,
область действия jump в данном случае распространяется только на код, передаваемый оператору dynamic.
dynamic "jump 'метка'
:метка"
Чтобы прыгнуть на метку вне этого кода, можно использовать например такой способ.
$marker = $dyneval("$result = 'метка'")
jump $marker
:метка
Для прерывания выполнения кода в dynamic и dyneval пользуйся командой exit.
Возник такой вопрос: можно ли сделать так, чтобы предметы в окне инвентаря отображались не один за другим, а были как бы в таблице? Ну вроде как ячейки чтобы получились.
Я понимаю, что для этого придется строить html таблицу, но возможно ли реализовать такое добавление предметов в таблицу?
Lisichka,
в принципе в классическом плеере это сделать можно. Только отображать предметы придётся не в окне инвентарь, а в окне основного или дополнительного описания. Думаю, в Quest Navigator или Aero возможно поставить предметы и отдельным окном, если постараться.
Вывод предметов в виде таблицы:
i=1 & ! счётчик
$objs_table = '<table border=1>' & ! открываем таблицу
:for
if i<countobj+1:
! пока счётчик меньше количества предметов
$objs_table += '<tr>' & ! открываем строку
:2_cell
$objs_table += '<td width=50%>' & ! открываем ячейку
$objs_table += '<a href="exec:gosub ''onobjsel'',<<i>>">'+$getobj(i)+'</a>' & ! добавляем гиперссылку на обработчик предмета
$objs_table += '</td>' & ! закрываем ячейку
i+=1 & ! увеличиваем счётчик на 1
if i mod 2 =0 and i<countobj+1:
jump '2_cell' & ! если номер делится на два и еще не все предметы перебрали, можно добавить вторую ячейку
elseif i mod 2 =0 and i>=countobj+1:
$objs_table += '<td width=50%> </td>' & ! создаем пустую ячейку
end
$objs_table += '</tr>' & ! закрываем строку
jump 'for' & ! повторяем
end
$objs_table += '</table>' & ! закрываем таблицу
pl $objs_table & ! выводим таблицу в окно дополнительного описания
Пояснить, почему при выводе использовались гиперссылки?
Aleks Versus,
ох, я уже пожалела, что спросила, потому что почти ничего не поняла((
просто хотела сделать иконки для предметов, а выводить их одну за другой как-то не очень, но теперь поняла, что не доросла еще Х)
хотя все-таки объясните про гиперссылки)
Помогите пожалуйста с меню предметов, не как не могу понять как сделать больше чем один предмет. Покажите пример с двумя и более предметами.
Вот пример: menu.qsp
PsiH,
Как-то так…
menu_2.qsp
svandrus,
А все вроде понял, спасибо :)
Lisichka,
я наверное пытался спросить что-то другое по поводу гиперссылок, а теперь не соображу, что. Гиперссылки позволяют выполнить некий код, который помещён после слова exec:. Если посмотришь код, там из гиперссылок происходит обращение к локации ‘onobjsel’ с передачей номера предмета. Так реализуется функционал, который мы теряем, когда выводим предметы в виде таблицы. Вот рабочий пример с чудными картинками и комментариями: ###invent.zip###
Aleks Versus,
о, спасибо, я посмотрела код и попробовала его приспособить для своей игры, только вылезло одно “но”:
с нормальными названиями предметов все работает, но стоит только назвать предмет так, чтобы его имя не отображалось, например, ‘<<$кинжал>>’, для того, чтобы осталась одна картинка, и код начинает выделывать фортели и показывать совсем не то, что нужно(
Да, и не совсем поняла, как работает метка, та, которая красным выделяется. При заданных условиях она перекидывает программу на какой-то кусок кода?
Lisichka:
‘<<$кинжал>>’
так делать нельзя. Вставляй название в виде html-тега (в угловых скобках):
'<кинжал>'
При usehtml = 1 это работает. Когда ты вставляешь название в двойных угловых скобках, QSP воспринимает его как переменную. Т.е. фактически ты добавляешь не предмет <<$кинжал>>, а предмет без названия.
Aleks Versus,
урраа, все заработалоо! спасибо вам огромноее!!
и еще тогда вопрос по поводу вывода меню: я его вывожу вот так:
if $args['название предмета']='<$Кинжал>':
$dagger[0] = 'Осмотреть:!осмотр'
menu '$dagger'
end
! в локации !осмотр
if $args['название предмета']='<$Кинжал>':
*p '
Это простой кинжал. Без него вы не сможете драться, поэтому выкинуть его нельзя.
'
end
однако, описание теперь не вылезает вообще(
UPD.: хотя нет, я придумала:
if $args['название предмета']='<$Кинжал>':
item = 1
$dagger[0] = 'Осмотреть:!осмотр'
menu '$dagger'
end
!осмотр
if item = 1:
*p '
Это простой кинжал. Без него вы не сможете драться, поэтому выкинуть его нельзя.
'
end
и каждому предмету присваивать собственное значение переменной item X)