RU 📌 Pinned

Как сделать?

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

Aleks Versus,
Массив создаётся как отдельная локация?

во, созрел ещё один вопрос: игры на классике ладно, худо-бедно, но защищены паролем от дурака, а игры на навигаторе, как сдедующей ступени эволюции уже незащищены ничем… нет возможности сложить хотя бы css сложить в архив и запаролить, вроде навигатор должен читать архивы

Aleks Versus Moderator 04.04.2016 19:21 (9 years ago)

Совёнок,
массив - это, в грубом приближении, набор переменных с одинаковыми именами, которые различаются по индексу (называем эти переменные - ячейки массива). В нашем случае $track - это массив. $track[0], $track[1], $track[2] - ячейки массива. Почему я и предложил тебе прочитать эту статейку - ТЫЦ.

И вроде бы я ясно понятно написал:

Aleks Versus:

В начале игры:
Код:
! заносим файлы в массив

Т.е. на самой первой локации в твоей игре. Я не знаю, как она называется. “начало”, “start”, “1” быть может.

Помогите разобраться. Делал пример из уроков. Захотел запилить время на примере одной из игр код следующий:

Spoiler

!Время
if minut >= 60:
:loopmin
set hour = hour + 1
set minut = minut - 60
if minut >= 60:
jump ‘loopmin’
end
end

if hour >= 24:
hour -= 24
weekday += 1
number += 1
end

:loop_weekday
if weekday >= 8:
weekday -= 7
jump ‘loop_weekday’
end

:loop_number
if number >= 31:
number -= 30
month += 1
jump ‘loop_number’
end

:loop_year
if month >= 13:
month -= 12
year += 1
jump ‘loop_year’
end

if minut < 10:set $nilmin = ’0’
if minut >= 10:set $nilmin = ‘’

!Дни недели
if weekday = 1:set $weekday = ‘Понедельник’
if weekday = 2:set $weekday = ‘Вторник’
if weekday = 3:set $weekday = ‘Среда’
if weekday = 4:set $weekday = ‘Четверг’
if weekday = 5:set $weekday = ‘Пятница’
if weekday = 6:set $weekday = ‘Суббота’
if weekday = 7:set $weekday = ‘Воскресенье’

!Месяца
If month = 1:set $month = ‘Января’
If month = 2:set $month = ‘Февраля’
If month = 3:set $month = ‘Марта’
If month = 4:set $month = ‘Апреля’
If month = 5:set $month = ‘Мая’
If month = 6:set $month = ‘Июня’
If month = 7:set $month = ‘Июля’
If month = 8:set $month = ‘Августа’
If month = 9:set $month = ‘Сентября’
If month = 10:set $month = ‘Октября’
If month = 11:set $month = ‘Ноября’
If month = 12:set $month = ‘Декабря’
end

!Отображение времени
CLR
PL ‘Сейчас <<number>> <<$month>> <<year>> года, <<$weekday>>. Время <B><<hour>></B> часов <B><<$nilmin>><<minut>></B> минут
В кармане: <<Money>> руб.’

Код времени находится в локации Stat. Изначальный параметр времени (hour = 20) в стартовой локации ( с кнопкой начать). К примеру в локации спальня (bedroom) пишу условие:

Spoiler

gs ‘stat’
if hour < 23:
act ‘Поспать часик’:
cla
hour += 1

‘Я проспал час.’

act ‘Встать’:gt’bedroom’
end
end

Сколько бы я времени не крутил кнопка ‘поспать’ так и не появляется.
Если же в условии я пишу =20 то кнопка появляется, при этом так и остается висеть. Как я понимаю проблемма в том что время берется не просчитанное а из стартового условия. Помогите разобраться пожалуйста.

Aleks Versus Moderator 05.04.2016 17:56 (9 years ago)

Bup0H,
всё работает. Дело в чём-то другом. Проверил в чистой игре:#ЧИСТАЯ ИГРА#

В чистой игре работает. Вставил код в пример из урока. Сначала заработало, сейчас нет. Не пойму что не дает.
vremya_i_uslovie_(2).qsp

Aleks Versus Moderator 06.04.2016 10:32 (9 years ago)

Bup0H,
если ты имеешь ввиду ошибку “локация с заданным названием не существует”, то эта ошибка говорит сама за себя. У тебя переход на локацию bedroom, которой нет в игре. А так - работает.

Нет, нет с локацией то все понятно, кнопка не исчезает. Вот что изменилось в чистой версии, я поменял знак и добаил кнопку по накрутке часов. Условие уже не работает. 22.qsp

'<a href="exec:gt ''a'',''st''">текст</a>'

текст в навигаторе, который активирует действие.
вопрос: как этот текст заменить картинкой, которую нужно ещё и расположить на экране в нужном месте, что-то типа интерактивной карты, это мне для каждой из 2812 точек в css координаты выставлять?

и ещё один вопрос по поводу msg
его никак нельзя сделать всплывающим сообщением?
сейчас по сути msg это как всплывающий запрет, обрывающий действия, к примеру квест на 3 часа игрового времени диалог, где первая фраза активирует вторую(if fr=1:fr=2), вторая третью(if fr=2:fr=3) и так далее по цепочке и посреди квеста вдруг всплывает msg, то он обрывает квест и приходится переписывать код для нпс, потому как уже if fr=8, а значит с этим нпс, который настроен на if fr=1 квест продолжить не получится

блин, в общем то разобрался, каждую точку придётся отображать в style.css, с фиксированными точками понятно, а вот как правильно написать код, задумка такая: карту разобью на ячейки, карта 900px на 500рх, это выйдет 180 ячеек 50px на 50px, можно задать каждому свою ячейку. мб кто-то даст совет как это сделать правильнее?

Aleks Versus Moderator 06.04.2016 21:26 (9 years ago)

Bup0H,
ну а как оно сработает? Ты заходишь на локацию bedroom, один раз выполняется код:

gs 'stat' 
if hour > 22: 
    act 'Поспать часик': 
        cla 
        hour += 1  
        'Я проспал час.' 
        act 'Встать':gt'bedroom' 
    end 
end

ACT 'Подождать час': 
	hour += 1
	gs 'Stat'	
END

Когда ты щёлкаешь по действию “Подождать час” - срабатывает только:

hour += 1
	gs 'Stat'

Чтобы вновь проверить, доступно ли действие “поспать часик”, нужно, чтобы код на локации bedroom выполнился ещё раз, для этого нужно снова на неё перейти:

ACT 'Подождать час': 
	hour += 1
	gs 'Stat'
	goto 'bedroom'	
END

pospat2.qsp

Aleks Versus Moderator 06.04.2016 21:34 (9 years ago)

Aaaspavel:

сейчас по сути msg это как всплывающий запрет, обрывающий

ничего подобного. msg не прерывает выполнение кода. После того, как щёлкнул по OK, код выполняется далее.

С картой твоей вообще ничего не понял. Если у тебя простая таблица, состоящая из квадратных картинок, зачем прописывать координаты ячеек через стили? Отрисуй таблицей.

Aleks Versus:

С картой твоей вообще ничего не понял. Если у тебя простая таблица, состоящая из квадратных картинок, зачем прописывать координаты ячеек через стили? Отрисуй таблицей.

сама по себе каждая локация это $BACKIMAGE = ‘content/back.png’, а нпс на ней не постоянно присутствуют, а появляются по игровому времени либо в зависимости от квеста, соответственно для каждой игровой ситуации в зависимости от игрового времени и квестов отрисовывать ещё и новую таблицу для каждой локации? если вначале игры на локации будут две картинки нпс, то в середине их там может оказаться около 20-50, а отображаться должны только доступные для активации

style
/* s-map */
#map-one-one{left:0px; top:0px}
#map-one-two{left:0px; top:50px}


qsp
if hour = 7 or hour = 18 and lani=12:
'<div id = "map-one-one" class="map-elements"><a href="exec:gs''gs_time_loc'' & gt''m''"><img src="pic/maps-a/home.png"></a><span>Дом</span></div>'
if hour >= 3 and hour <= 23 and derty=2:
	'<div id = "map-one-two" class="map-elements"><a href="exec:gs''gs_time_loc'' & gt''arka''"><img src="pic/maps-place/arka.png"></a><span>Арка</span></div>'

а что может дать таблица из плюсов?

Aleks Versus:

Re: Как сделать?

Aaaspavel написал(а):
сейчас по сути msg это как всплывающий запрет, обрывающий
ничего подобного. msg не прерывает выполнение кода. После того, как щёлкнул по OK, код выполняется далее.

да ну?
игровая ситуация:

локация holl
$metka = $ARGS[0]   
$loc = $CURLOC
gs'gs_inv_show'
$location = 'holl'
if hour = 9 or hour = 21:
'<div id="acts-buttons">'
   '<a href="exec:gs''gs_time'' & minut+=20 & gt ''holl_2''">поговорить с нпс</a>'
'</div>'
else
	msg'магазин закрывается, продавец уходит' & gt'place'
end

если hour = 9 и minut<=39 то msg вообще не появится в этой локации, потому как мы перейдём в следующую,
а если hour = 9 и minut>=40 то msg оборвёт действия и выставит нас за дверь.

Log in or Register to post comments.