RU 📌 Pinned

Как сделать?

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

Aleks Versus Moderator 11.01.2017 16:14 (9 years ago)

Darvin432,
я делаю так: храню весь выводимый текст в наборе переменных, а при выполнении каких либо действий полностью стираю и перерисовываю экран на основе этих переменных. Тут уже не имеет значения, gosub или goto. В твоём случае, если на экран выводятся всего две составляющие, таблицу можно хранить, допустим в переменной $table, а лог в переменной $log.

Друзья, добрый день. Снова вопрос.

$яблоки[0]=‘антоновка’
$яблоки[1]=‘белый налив’
$яблоки[2]=‘астраханское’
$яблоки[3]=‘ранетка’
$яблоки[4]=‘симиренко’

В нашем QSP есть 2-х, 3-х, и т.д. мерные массивы? Или их принято делать при помощи совмещения одномерных. Имею ввиду массивы у которых более одного индекса.

Aleks Versus Moderator 13.01.2017 18:05 (9 years ago)

Wol4ik,
решается через текстовые индексы:

! яблоки в первом кармане
$яблоки['0,0']='антоновка'
$яблоки['0,1']='астраханское'
$яблоки['0,2']='симиренко'
! яблоки во втором кармане
$яблоки['1,0']='белый налив'
$яблоки['1,1']='ранетка'
$яблоки['1,2']='антоновка'

Подробнее смотри здесь http://wiki.qsp.su/howto:arrays и здесь https://qsp.org/forum/66-podrobnosti-ispolzovania-massivov-vse-voprosy-suda

Аааа, понял. Спасибо. А тогда еще вопрос…. Можно ли создать переменную (странную разновидность одномерного массива) у которой может быть одновременно несколько значений?
Например
а[1]=5,8,4,9
а[2]=6,2,3,4
И т.д.
Заранее спасибо за ответ.
П.С. это нужно для реализации собственного движка инвентаря, взамен штатного.

Aleks Versus Moderator 13.01.2017 18:33 (9 years ago)

Wol4ik,
я бы просто вписал все значения в текстовую переменную

$a[1]='5,8,4,9'

Феноменально!!! Наличие символьных переменных дает возможность имитировать что нужно, при том, я так понял, каждое число в цепочке, тоже может быть переменной. Большое спасибо. Продолжу ваять)))

Привет еще раз, помогите пожалуйста.
Мне нужен отсчет часов и дней, при этом когда прошло 24 часа день начинается заново, персонаж оказывается в своей берлоге и так далее как день сурка, в любой локации где бы он не находился он должен попадать на стартовую локацию.
Как будут капать часы я понимаю, в действиях будут прописываться “часы +=1” и так далее допустим.
Так вот, как прописать возвращение к стартовой локации, если часы бьют 24?

Что мешает сделать переход на стартовую локацию по условию IF?

IF часы=25:
GOTO ‘стартовая_локация’
END

Или в конструкции всей игры есть подвох?

При том этот переход придется ставить сразу после каждого пополнения счетчика часов.

Разобрался, спасибо)
Начал изобретать велосипед, потом вспомнил что все намного проще..-_-

Т.е. в локацию “переход”?

Неет. Переход это просто мы так говорим в речи. GOTO это переход на локацию, название которой указывается в кавычках.

Есть такой вопрос:
Вот код

if money=0:
'<a href="exec: gt ''Локация'' ">Описание действия #1</a>'
END 
if hour >= 18 and hour <= 19:
'<a href="exec: gt ''Локация2'' ">Описание действия #2</a>'
END

При выполнении первого условия будет отображаться первая ссылка, но при выполнении второго условия первая ссылка заменяется второй (первая перестает отображаться), хотя первая по идее тоже не противоречит второй (money=0 так и осталось).
Как сделать чтобы отображались - сначала одна ссылка, потом если выполняется второе условие не противоречащее первому - добавлялась вторая ссылка? Понятно я могу прописать несколько условий, но если у меня их будет десяток, да и еще и в разных комбинациях. С примером кода если можно пожалуйста, а то что-то я подзапутался. Заранее спасибо.

Aleks Versus Moderator 19.01.2017 17:17 (9 years ago)

Deagle,
ты либо не тот код привёл, либо условия не соблюдаются, потому что при:

hour=18
if money=0: 
'<a href="exec: gt ''Локация'' ">Описание действия #1</a>' 
END 
if hour >= 18 and hour <= 19: 
'<a href="exec: gt ''Локация2'' ">Описание действия #2</a>' 
END

обе ссылки выводятся на экран. Если hour=20, выводится только первая, если money не равно нулю а hour=19 - только вторая.
Есть такой вариант:

if money=0: 
'<a href="exec: gt ''Локация'' ">Описание действия #1</a>' 
	if hour >= 18 and hour <= 19: 
		'<a href="exec: gt ''Локация2'' ">Описание действия #2</a>' 
	END
end

логика простая. Если money не равно 0 - ни одна ссылка не будет выводиться. Если money=0, но hour не 19 и не 18, будет выводиться только первая. Если же и money и hour соответствуют условиям, обе ссылки будут выводиться.

Все я понял свою ошибку, я упростил в примере код не придав значения у меня был вот такой ( я переделал дизайн quest navigator)

if money=0:
'<div id="action-block">'
'<a href="exec: gt ''Локация1'' ">Описание</a>'
'</div>'
END
if hour >= 18 and hour <= 19:
'<div id="action-block">'
'<a href="exec: gt ''Локация2'' ">Описание2</a>'
'</div>'
END

При таком варианте как раз и заменялся первый вариант вторым.
А правильно будет вот так:

'<div id="action-block">'
if money=0:
'<a href="exec: gt ''Локация1'' ">Описание</a>'
if hour >= 18 and hour <= 19:
'<a href="exec: gt ''Локация2'' ">Описание2</a>'
END
END 
'</div>'

Log in or Register to post comments.