RU 📌 Pinned

Как сделать?

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

А с каких пор нельзя создавать кучу одинаковых(название) актов?

oleksandrigo,
ты имеешь в виду их название(актов) или одинаковые контейнеры в актах(блоки кода)?

При определённом действии персонажа выполняется блок кода, в котором есть цикл. Цикл выполняется на протяжении определённого времени, однако, пока действует цикл - всё замораживается ДО его полного выполнения. Проще говоря - пока код весь не будет выполнен, то действовать как-либо нельзя.
Ок. Это хорошо когда игрок только пришёл на локацию - код выполнен и всё. А когда, допустим, исполняется какой-либо цикл после действия, требующий времени на его реализацию, то всё стоит до его исполнения.
Вопрос: возможно ли сделать “независимые” циклы? Чтобы они исполнялись и игра продолжалась?
Для чего это нужно - объяснить с ходу сложно, но как пример, допустим, исполняется заклинание, построенное на одном цикле и игрок может его так или иначе отменить. Чтобы не было интерактива по типу mtg, где тебе предлагают выбор остановить или нет, а работала только реакция игрока. Цикл, который можно остановить - да, название так се.

Тогда используй не циклы, а локацию-счётчик. И большинство твоих проблем уйдет. Главное определись с временем выполнения.

Aleks Versus Moderator 07.09.2018 06:29 (7 years ago)

oleksandrigo,
args не передаётся, потому что он и не должен передаваться.
Код действия — это отдельная область кода, и соответственно локальные переменные для этой области свои. Чтоб твой код работал, надо делать так:

dynamic 'act("asdasdsdsada"): gs "<<$args[1]>>"'

Aleks Versus,
Ага я уже додумался. Но спасибо =)

Смотрите
Господин ААА Затратил 5,45 сек
Господин БББ Затратил 4,49 сек <<Он лидер>>
Господин БББ Затратил 9,98 9 сек <<Он лузер>>
Я испробовал уже все, кто нибудь подскажите как это сделать…
У меня получилось создать только “таймер”, но как зафиксировать, я не знаю!!! и я побывал через различные функции - ARRPOS, ARRSIZE, FUNC и другие. “Метод научного тыка не кто не отменял” но только в этом случае он нулевой.

Aleks Versus Moderator 09.09.2018 08:46 (7 years ago)

Freem82,
в смысле, как зафиксировать? Как записать, кому принадлежит какое время?
Если знаком с массивами, то это просто.

! Господин ААА затратил 5,45 сек:
$name_sportsman[0]='ААА' & time_sportsman[0]=5450
! Господин БББ Затратил 4,49 сек <<Он лидер>>
$name_sportsman[1]='БББ' & time_sportsman[1]=4490
! Господин БББ Затратил 9,98 9 сек <<Он лузер>>
$name_sportsman[2]='ВВВ' & time_sportsman[2]=9980
! вычисляем наименьшее значение:
min_time=min('time_sportsman')
! вычисляем номер в массиве
lider_sportsman=arrpos('time_sportsman',min_time)
! вычисляем наибольшее значение:
max_time=max('time_sportsman')
! вычисляем номер в массиве
loser_sportsman=arrpos('time_sportsman',max_time)
! теперь известны имена:
*pl "Господин <<$name_sportsman[lider_sportsman]>> затратил <<time_sportsman[lider_sportsman]>> — лидер"
*pl "Господин <<$name_sportsman[loser_sportsman]>> затратил <<time_sportsman[loser_sportsman]>> — лузер"

помогите разобраться
есть счётчик времени-

if minutes >= 60:
	:loop_minutes
	minutes -= 60	
	hour += 1
    gs 'hours'	
	if minutes >= 60:
		jump 'loop_minutes'
	end
end

if minutes < 10:
	$minutes_num='0'
else
	$minutes_num=''
end

if hour >= 24:
	:loop_hour
	hour -= 24	
	day += 1
	date += 1
	gs 'day'	
	if hour >= 24:
		jump'loop_hour'
	end
end

if hour >= 0 and hour <= 6:
	$times_of_day = 'night'
else
	$times_of_day = ''
end

if hour < 10:
	$hour_num='0'
else
	$hour_num=''
end

if date < 10:
	$date_num='0'
else
	$date_num=''
end

if day >= 8:day -= 7

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

и локация hours где предполагалось делать кд по часам
if poel>0:poel-=1

но что-то gs не особо хочет работать… возможно из-за того что в игре нет минут. время округленно до часов.
тогда как правильно сделать?

dopler76,
У тебя в цикле условие 2 раза повторяется.
:loop (if minutes >= 60: (время при 60 мин=1 час)jump’loop’) и с часами, и с минутами так нужно делать


Вообще, надо считать в минутах время. И подгонять его под разные условия. Пример. у нас есть время 1200 минут. Это: 1200/60= 20 часов, Дней: 20/24= 0,83(3). И так далее. Или в секундах. НЕТ обслуживания чисел с запятой
Если 1 день=90 часов, а у нас есть 1800 минут, то (1800/60)=30 часов. 1/3 дня.


if hour >= 0 and hour <= 6:
$times_of_day = ‘night’
Мне не понятно, почему от 0 до 6 часов ночь?
Рабочий день в деревне начинается в 5 утра.
Можно сделать так: пусть персонаж спит 8 часов. Если бодрость от 60% и ниже, то Действие: лечь в постель(часы +=8 бодрость +=100%)


Почему я об этом говорю. Например, в играх Borderlаnds на планете 1 день= 90 часов. Тогда надо делить на 90 часов, а не на 24.


дата ставится в формате (день.месяц.год)
И далее надо смотреть по какому календарю ты будешь делать игру.
Например, в мире Терри Прачетта в году более 12 месяцев.


Прошу прощения, если сослался на что-то запрещённое

нашел косяк. у меня переменная добавляла чисто часы hour+= поэтому цикл минут не работал.
заменил переменную на минуты и всё поскакало.

Григорий Лебедев #2234 16.10.2018 18:31 (7 years ago)

Никто не подскажет, как делать HTML-гиперссылки для перехода между локациями или выполнения строчек кода?

7H3_D31M0S,

<a href="exec: код тут>Текст</a>

Поиграл немного в одну игру, называется “Город туманов”, там есть интересная вещь

'Огромный зал церкви заставлен ((деревянными скамьями|церковь|$show_desc="скамья")), формирующими проход к ((алтарю||proc_select|$selitem = "алтарь")). Тяжелые тени скрывают высокие потолки, придавая комнате вид склепа. Огромное ((узорчатое окно|церковь|$show_desc="витраж")) за алтарем занимает большую часть стены. Три ступени из холодного черного камня ведут к алтарному возвышению. Высокие узкие окна разбросаны по всей церкви, но через них видны только затянутые туманом деревья. Небольшая дверца в дальнем углу ведет в подсобку. '

$show_desc = ''

Всю голову себе сломал пытаясь разобраться как работают подобные ссылки

((алтарю||proc_select|$selitem = "алтарь"))

Был бы очень признателен, хотя бы указанием в каком направлении грести ,что это за ссылки такие и как вообще это работает. В игре то выглядит все замечательно, берешь предмет и тыкая в ссылку появляются новые действия.

Григорий Лебедев #2234 17.10.2018 07:00 (7 years ago)

Svartberg, спс.

Log in or Register to post comments.