Как сделать?

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

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

ejikplains
useravatar
Offline
53 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

ejikplains
useravatar
Offline
53 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

Svartberg
Geek
useravatar
Offline
201 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

Код:

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

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1416 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

oleksandrigo
ТвореЦ
useravatar
Онлайн
98 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

Freem82
useravatar
Offline
7 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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]>> — лузер"

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1416 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

Код:

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
useravatar
Offline
2 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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 месяцев.
-------------
Прошу прощения, если сослался на что-то запрещённое

Poganec37
useravatar
Offline
14 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

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

dopler76
useravatar
Offline
2 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
1023
Всего опросов:
14
Всего сообщений:
16790423
Всего сообщений сегодня:
1
Пользователи форума:
 
Всего пользователей:
2239
Последним зарегистрировался:
4ugskor