RU 📌 Pinned

Как сделать?

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

Podkovally:

или как?

JDN = JDNStart + time/1440
hour = (time/60) MOD 24
minut = time MOD 60
weekday = (JDN MOD 7) + 1

JDa = JDN + 32044
JDb = (4*JDa + 3)/146097
JDc = JDa - (146097*JDb/4)
JDd = (4*JDc + 3)/1461
JDe = JDc - 1461*JDd/4
JDm = (5*JDe + 2)/153

day = JDe - (153*JDm+2)/5 + 1
month = JDm + 3 - 12*(JDm/10)
year = 100*JDb + JDd - 4800 + JDm/10
$hour = iif (hour < 10, ’0<<hour>>’, ‘<<hour>>’)
$minut = iif (minut < 10, ’0<<minut>>’, ‘<<minut>>’)

Как-то так .

Aleks Versus Moderator 16.04.2016 11:09 (9 years ago)

skunsss,

skunsss:

Как-то так .

Это перерасчёт значений часы/минуты/дни/месяца/годы исходя из значения переменной time.
Игровое время ты меняешь, изменяя переменную time. Вот там же где ты меняешь эту переменную нужно менять и значения переменных, отвечающих за голод и сон.

Aleks Versus:

Это перерасчёт значений часы/минуты/дни/месяца/годы исходя из значения переменной time.
Игровое время ты меняешь, изменяя переменную time. Вот там же где ты меняешь эту переменную нужно менять и значения переменных, отвечающих за голод и сон.

Временная система отсюда :
https://qsp.org/forum/790-kalendar-po-metodu-sceta-ulianskih-dnej

Что-то типа - Бодрость = Бодрость - 10 ?
IF Бодрость < 1:
GT ‘Подворотня’
end

И еще вопрос, как ограничить счетчик статов что-б они не выходили за пределы 100 .

Aleks Versus Moderator 16.04.2016 19:00 (9 years ago)

skunsss:

Временная система отсюда :
http://qsp.su/index.php?option=com_agor … ;Itemid=57

отсюда-то отсюда, но ты понимаешь, как она работает? ))

Текущее время хранится в переменной time.
Локация calendar - пересчитывает значения.
Когда в игре происходит какое-то действие, должно изменяться текущее время и должны быть пересчитаны значения:

act 'Ехать на вокзал': 
        time += 45 & ! изменяем текущее время (прибавили сорок пять потраченных минут)
        gs 'calendar'  & ! пересчитываем значения
        gt 'station'  & ! отправляемся на локацию вокзала
end

Вот здесь как раз при изменении времени можно было изменить и значения бодрости и голода. Всё верно:

act 'Ехать на вокзал': 
       time += 45 & ! изменяем текущее время (прибавили сорок пять потраченных минут)
       бодрость = бодрость - 10  & ! можно записать короче бодрость -= 10
       голод = голод + 5  & ! можно записать короче голод += 5
       gs 'calendar'  & ! пересчитываем значения
       gt 'station'  & ! отправляемся на локацию вокзала
end

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

голод+=5
if голод > 100: голод = 100

Если тебе лень всякий раз писать это, или ты боишься забыть прописать проверку условия, можно написать универсальную локацию:
!golod

голод += args[0]
if голод >100: голод = 100
if голод < 0: голод = 0

Тогда, чтобы изменить значение голода, нужно будет писать:

gosub '!golod',5 & ! голод увеличился на 5 единиц
gosub '!golod',-15 & ! голод уменьшился на 15 единиц

P.S. И ещё, просьба, помещай код в блок для кода, кнопка

А можно ли сделать так, чтобы текст описания появлялся ПОСТЕПЕННО САМ? Если возможно, то напишите пример кода.

Weliot:

А можно ли сделать так, чтобы текст описания появлялся ПОСТЕПЕННО САМ? Если возможно, то напишите пример кода

'а'
wait 50
cls
'а '
wait 50
cls
'а м'
wait 50
cls
'а мо'
wait 50
cls
'а мож'
wait 50
cls
'а можн'
wait 50
cls
'а можно'
wait 50
cls
'а можно'
wait 50
cls
'а можно л'
wait 50
cls
'а можно ли'
wait 50
cls
'а можно ли '
wait 50
cls
'а можно ли с'
wait 50
cls
'а можно ли сд'
wait 50
cls
'а можно ли сде'
wait 50
cls
'а можно ли сдел'
wait 50
cls
'а можно ли сдела'
wait 50
cls
'а можно ли сделат'
wait 50
cls
'а можно ли сделать'
wait 50
cls
'а можно ли сделать?'
end

Вроде всё правильно, что не так?
‘<p align=“right”>’ ’04/04/2245 15:01’ ‘<p align=“center”><font color=“#00FF00”>’ ‘текст’ ‘<hr></P>’
wait 170
end
‘<p align=“right”>’ ’04/04/2245 15:02’ ‘<p align=“center”>’ ‘текст.’ ‘<hr></P>’
wait 170
end

после wait не нужно ставить end
wait это задержка, cls нужно чтобы следующее на том же месте появлялось, иначе второй строкой вылезет,
принцип:
текст
задержка
очистка
текст
а end в самом конце

Aleks Versus Moderator 17.04.2016 09:18 (9 years ago)

Aaaspavel:

а end в самом конце

зачем end в конце?

Weliot:

А можно ли сделать так, чтобы текст описания появлялся ПОСТЕПЕННО САМ? Если возможно, то напишите пример кода.

$stroka = 'А можно ли сделать так, чтобы текст появлялся постепенно?'
i=1
:for
if i<len($stroka)+1:
	wait 250
	*p $mid($stroka,i,1)
	i=i+1
	jump 'for'
end

Ещё посмотрите “кроличью нору”. Лежит в теме “не игры”.

Aleks Versus,
О, как интересно!
(просто так мимо пробегала)
А возможно ли прикрутить кнопку, чтобы скипнуть постепенное появление текста или пока цикл не закончится, его не удастся прервать?
Ну или увеличить скорость появления текста? Я посмотрела кроличью нору, там это как-то делается через counter.. Черт, это интересное открытие, давно хотела сделать что-то подобное!

UPD: все, я нашла, как увеличить скорость, сама проглядела, ха-ха, ну надо же, надо очки протереть Х)

О господи, уже больше 10 лет прошло, а авторы на QSP продолжают клепать “анимированное появление текста” и всё ещё надеются украсить этим игру, придать ей оригинальности…

Мрак.

Aleks Versus Moderator 17.04.2016 12:43 (9 years ago)

Lisichka:

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

ту дело скорее не в цикле, а в wait. wait - прерывает выполнение программы на определённое время. А между wait - события считай происходят мгновенно, поэтому даже если ты создашь что-то типа:

$stroka = 'А возможно ли прикрутить кнопку, чтобы скипнуть постепенное появление текста или пока цикл не закончится, его не удастся прервать?'
act 'Прервать': recut=1
i=1
:for
if i<len($stroka)+1 and recut=0:
	wait 10
	*p $mid($stroka,i,1)
	i=i+1
	jump 'for'
else
	*clr
	$stroka
end

ты просто не успеешь нажать действие.

с другой стороны counter выполняется через определённые промежутки времени, поэтому можно попробовать через него:

#1
$stroka = 'А возможно ли прикрутить кнопку, чтобы скипнуть постепенное появление текста или пока цикл не закончится, его не удастся прервать?'
act 'Прервать': recut=1
i=1
$counter='counter'
SETTIMER 150

#counter
if i<len($stroka)+1 and recut=0 $curloc='1':
	*p $mid($stroka,i,1)
	i=i+1
elseif $curloc='1'
	*clr
	$stroka
	settimer 500
end

Nex,
Ну иногда можно, если драматичный момент, чтобы создать напряжение, например)

Aleks Versus,
Спасибо, можно и так попробовать))

дело не в оригинальности, вот например, игра не просто нажми на строчку - получишь результат, а варианта:

style
#inv-show-gg{
	background-image:url(../../../pic/poisk/fon.png);
	left:50px;
	top:300px;
}
#inv-show-gg:hover{background-image:url(../../../pic/poisk/glas-active.png);}

получится, что игрок видит просто картинку, но если поводить курсором по экрану, то в определённом месте проявится glas-active.png - иконка активации поиска клада. Но просто так игрок хрен догадается, разве что случайно наткнётся, поэтому в начале игры можно сделать что-то типа обучалки через тот же wait

ах-хах, забавно привел пример, знач wait 10, а SETTIMER 150 :)
а если wait 9000 поставить, то можно ролик на 90 сек показать
фокус в том, что wait подвешивает плеер и пока действие wait не закончится сделать с игрой нельзя вообще ничего, кроме alt+enter или alt+f4, поэтому то, что автор закладывает в wait гарантировано не будет пропущено игроком, а то, что игроку не известно сколько заложено времени, то лучшего занятия, чем почитать текст придумать сложно, вообще странно, что wait не сделали обязательным атрибутом текстовых игр, чтобы игрок не занимался кликодрочеством, а вынужден был ждать-читать текст. )))

Log in or Register to post comments.