Как сделать?
…
evp,
в високосных годах где-то я и напортачил. Показалось, что исправил ошибку, но теперь пропадает 1 февраля високосного года. Что-то с нумерацией дней у меня не клеится.
Да это Юлианский календарь. Делал его, чтоб набить руку, в то же время принцип мог мне пригодиться. О существовании формул для вычисления того или иного дня я, конечно, догадывался, есть же так называемые “вечные” календари, но на момент, когда делал эту систему, не был с ними знаком.
Нет, “весь код календаря” это расчёт текущей даты исходя из значения time - способ, который дают всем новичкам на форуме, но меня он не вполне устраивал.
Високосность конечно усложняет алгоритм, но если автор использует в игре похожий на действительный календарь, значит он задумывает какие-то квесты со временем. Если это просто блажь - другое дело. Но с вискосными годами, если игра предполагает внутриигровое время растянуть на несколько лет, можно придумать интересные события и загадки.
Дополните правило високосности. Если год кратен 100, то он невисокосный (Григорианский календарь).
Как-то так:
if (year MOD 4 = 0) and year MOD 100:
! Правила для високосного года
end
И все-таки я не понимаю, чем это лучше, чем готовые формулы? :) Разве что в качестве упражнения.
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,
о, спасибо, я посмотрела код и попробовала его приспособить для своей игры, только вылезло одно “но”:
с нормальными названиями предметов все работает, но стоит только назвать предмет так, чтобы его имя не отображалось, например, ‘<<$кинжал>>’, для того, чтобы осталась одна картинка, и код начинает выделывать фортели и показывать совсем не то, что нужно(
Да, и не совсем поняла, как работает метка, та, которая красным выделяется. При заданных условиях она перекидывает программу на какой-то кусок кода?