RU 📌 Pinned

Как сделать?

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

Aleks Versus Moderator 19.09.2015 12:29 (10 years ago)

evp,
спасибо! Нашёл глобальнейшую ошибку. Просто вселенского масштаба.

С високосностью потом разберёмся. Забыли про тот календарь. Уберу его. Сейчас переделаю наново.

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

Aleks Versus Moderator 19.09.2015 21:13 (10 years ago)

Так. Поправил календарик, кому ещё интересно. Проверил даты, потестил. Ничего не пропадает, стоически совпадают дни недели с датами действительного календаря. Так же для примера сделан календарь далёких родичей двемеров - недомеров, дабы показать, как легко и просто изменить данный календарь под свои нужды.
Благодаря evp была выявлена глобальная ошибка, а так же упрощены некоторые вычисления. Спасибо.
###calenda2.qsp###

Здравствуйте, форумчане. Возник небольшой вопрос: можно ли использовать оператор “jump” в операторе “dynamic”? Я пишу такой код

dynamic 'jump "метка"'

И мне выдает ошибку о том, что запрашиваемая метка не найдена. Возможно ли это решить?

Aleks Versus Moderator 19.09.2015 22:48 (10 years ago)

Storm,
область действия jump в данном случае распространяется только на код, передаваемый оператору dynamic.

dynamic "jump 'метка'
:метка"

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

$marker = $dyneval("$result = 'метка'")
jump $marker
:метка

Для прерывания выполнения кода в dynamic и dyneval пользуйся командой exit.

Возник такой вопрос: можно ли сделать так, чтобы предметы в окне инвентаря отображались не один за другим, а были как бы в таблице? Ну вроде как ячейки чтобы получились.
Я понимаю, что для этого придется строить html таблицу, но возможно ли реализовать такое добавление предметов в таблицу?

Aleks Versus Moderator 22.09.2015 20:07 (10 years ago)

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%>&nbsp;</td>'    &    !    создаем пустую ячейку
    end
    $objs_table += '</tr>'    &    !    закрываем строку
    jump 'for'    &    !    повторяем
end
$objs_table += '</table>'    &    !    закрываем таблицу
pl $objs_table    &    !    выводим таблицу в окно дополнительного описания

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

Aleks Versus,
ох, я уже пожалела, что спросила, потому что почти ничего не поняла((

просто хотела сделать иконки для предметов, а выводить их одну за другой как-то не очень, но теперь поняла, что не доросла еще Х)
хотя все-таки объясните про гиперссылки)

Помогите пожалуйста с меню предметов, не как не могу понять как сделать больше чем один предмет. Покажите пример с двумя и более предметами.
Вот пример: menu.qsp

PsiH,
Как-то так…
menu_2.qsp

svandrus,
А все вроде понял, спасибо :)

Aleks Versus Moderator 26.09.2015 08:16 (10 years ago)

Lisichka,
я наверное пытался спросить что-то другое по поводу гиперссылок, а теперь не соображу, что. Гиперссылки позволяют выполнить некий код, который помещён после слова exec:. Если посмотришь код, там из гиперссылок происходит обращение к локации ‘onobjsel’ с передачей номера предмета. Так реализуется функционал, который мы теряем, когда выводим предметы в виде таблицы. Вот рабочий пример с чудными картинками и комментариями: ###invent.zip###

Aleks Versus,
о, спасибо, я посмотрела код и попробовала его приспособить для своей игры, только вылезло одно “но”:
с нормальными названиями предметов все работает, но стоит только назвать предмет так, чтобы его имя не отображалось, например, ‘<<$кинжал>>’, для того, чтобы осталась одна картинка, и код начинает выделывать фортели и показывать совсем не то, что нужно(

Да, и не совсем поняла, как работает метка, та, которая красным выделяется. При заданных условиях она перекидывает программу на какой-то кусок кода?

Aleks Versus Moderator 26.09.2015 10:30 (10 years ago)

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)

Log in or Register to post comments.