Как сделать?

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

vitorio555,
Loop - это цикл.
Есть ведь справочка - Циклы.
Проще говоря, этот код всегда будет обрабатываться, пока условие не будет выполнено.
В нашем случае, пока tm не станет равен нулю(tm -= 0). Потому что условие этого требует(if tm >= 60).

Насчёт рандома. Он меняется.
Чтобы исчезла кнопка, делаете флажок. Что-то накшталт такого:

Код:

шанс = rand(1,10)

if шанс > 0 and шанс <= 5:
  if strange_human_check = 0: act 'Странный человек': gt 'странный человек'
end

Следовательно, когда ГГ поговорил с этим, по истине странным человеком, мы ставим:

Код:

strange_human_check = 1

Пожалуйста, такой массивный код лучше вставлять в bb-код "code".

Жоский у вас код, не могу я его толково воспринять, может такой способ попробуете?(Я в принципе его в Counter закинул, правда Некс за такое жестоко наказывает, но вы рискните, может что лучше придумаете).
Напишите в вашей первой локации:

Код:

counter = 'счётчик'

Создайте локацию счётчик и напишите в ней:

Код:

if minuts > 59: hour += 1 & minuts = 0

if hour > 24: day += 1 & hour = 0
if day > 31: weak += 1 & day = 1
if weak > 9: year += 1 & weak = 1
GS '#Weak'
$hour = iif (hour < 10, '0<<hour>>', '<<hour>>')
$minuts = iif (minuts < 10, '0<<minuts>>', '<<minuts>>')

Вот так делаете название месяцев:

Код:

$weak[1] = 'Январь'

$weak[2] = 'Февраль'
! И так дальше...

Вот так можно выводить это самое время:

Код:

*PL '<<day>> день <<weak>> месяца(<<$weak[weak]>>) <<year>> года <<$hour>>:<<$minuts>>'

А с помощью $OnNewLoc можно это самое время двигать.
В своей первой локации(обычно она называется Начало) напишите:

Код:

$OnNewLoc = 'обработка переходов'

Создайте локацию "обработка переходов" и в ней напишите:

Код:

minuts+=1

В итоге, при любом переходе время будет двигаться.

Надеюсь, английский Вас не огорчает?

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

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

спасибо, это гораздо проще, щас буду пробовать, а насчёт того что не во всех месяцах 31 день что делать?и по поводу времени, оно будет двигаться одинаково для всех переходов? то есть если мне в лес, то 30мин, а если в соседний город тоже 30 мин, а как сделать так чтоб по разному время прибавлять? и ещё, в том коде что вы написали, переменные minuts, hour,week,yer не нужно гдет прописать, чтоб время не с 00:00 и месяц с годом не с 0 пошли отсчёт?

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

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

vitorio555,
Делаешь проверку на то, какой сейчас месяц. Что-то вроде:

Код:

if week = 4:

  if day > 30: weak += 1 & day = 1
end

Смотри, если оставишь всё как есть - то любой переход будет обходиться в минуту времени. Если хочешь больше, то уже пиши в действии необходимое количество времени.

Код:

act 'Пройтись в лес(30 мин.)': minuts += 30 & gt 'лес'

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

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

спасибо огромное за разъяснение! я там ещё добавил один вопрос, уже тогда здесь напишу, пока ты здесь, вот те переменные что ты написал в коде:minuts,hour,day,weak,year, их надо где-то вписать, чтоб изначально время было не 0.0.0г. 00:00?

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

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

vitorio555,
Да.

Код:

day = 1

weak = 1
year = 1333

Можно хоть в локации "Начало".

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

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

Исправляю Черта Ваську и столкнкося с проблемой, ниже сокращенный код. Мне нужно чтобы взяв вино и в дальнейшем возвращаясь в локацию Трактир, появлялся только текст соответствующий условию Вино. Но вместе с ним появляется и текст условия Монеты, почему? Ведь их больше нет в инвентаре. Подскажите что я не так делаю?

локация Трактир

if монеты = 0:
'Трактирщик:
-Сначала деньги!'
end
end
if монеты = 1:
'Трактирщик:
-Могу предложить бутылку вина!'
end
end
if вино = 1:
'Трактирщик:
-Отличный выбор, это вино стоит таких денег!'
end
end
IF монеты=1 and вино=0:
ACT 'Заплатить трактирщику за вино':
DELOBJ 'Монеты'
вино=1
ADDOBJ 'Бутылка вина'
GT $CURLOC
END
END

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

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

Есть первоначальная локация с первоначальным описанием и несколько вариантов действия на ней. Каждое действие выводит в описание локации новый текст, а старый при этом должен быть удалён. Само действие при выборе тоже должно удаляться из списка доступных. После выбора всех доступных действий должен произойти переход на новую локацию. Как это сделать?
(Просьба объяснять на уровне банального программирования в Qgene и желательно - с объяснением используемых команд. Спасибо)

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

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

Larson,
потому что переменную-маркер для монет не обнуляешь. В действии должно быть

Код:

монеты=0

Или. если не нужен текст ни по монеты=0 ни по монеты=1, пиши

Код:

монеты=2

Совёнок v1.1,

 Спойлер Show Spoiler Hide Spoiler
 

Код:

! выводим текст в окно основного описания

'Этот пример должен продемонстрировать работу действий по условию. Этот текст всегда будет показываться на локации'
! создаём условие
if текст=0:
! если ппеременная текст=0 (0 -- значение по умолчанию для всех переменных)
    ! выводим текст
    'Этот текст будет выведен при первом посещении локации. И больше никогда.'
! закрываем условие
end
! создаём условие, когда будет появляться первое действие
if громкость=0:
! если значение переменной громкость = 0
    ! создаём первое действие
    act 'Подрегулировать громкость':
    ! далее следует код, который сработает только при выборе действия
        ! возвращаем переменной текст значение 1, чтобы выводилась соответствующая надпись
        текст=1
        ! возвращаем переменной-флагу громкость значение 1, чтобы действие больше не появлялось
        громкость=1
        ! возвращаемся на текущую локацию, чтобы условия вступили в силу
        ! при переходе основное описание очистится и код всей локации будет выполнен вновь
        goto $curloc
    ! закрываем действие
    end
! закрываем условие
end
! то же самое для других действий
! создаём условие, когда будет появляться второе действие
if цветность=0:
! если значение переменной цветность = 0
    ! создаём второе действие
    act 'Подрегулировать цветность':
    ! далее следует код, который сработает только при выборе действия
        ! возвращаем переменной текст значение 2, чтобы выводилась соответствующая надпись
        текст=2
        ! возвращаем переменной-флагу цветность значение 1, чтобы действие больше не появлялось
        цветность=1
        ! возвращаемся на текущую локацию, чтобы условия вступили в силу
        goto $curloc
    ! закрываем действие
    end
! закрываем условие
end
! создаём условие, когда будет появляться третье действие
if масштаб=0:
! если значение переменной масштаб = 0
    ! создаём третье действие
    act 'Подрегулировать масштаб':
    ! далее следует код, который сработает только при выборе действия
        ! возвращаем переменной текст значение 3, чтобы выводилась соответствующая надпись
        текст=3
        ! возвращаем переменной-флагу масштаб значение 1, чтобы действие больше не появлялось
        масштаб=1
        ! возвращаемся на текущую локацию, чтобы условия вступили в силу
        goto $curloc
    ! закрываем действие
    end
! закрываем условие
end
! теперь пишем текст для каждого случая
if текст=1:
! если текст = 1 значит выводим надпись по громкости
    'Вы сунули отвёртку в ухо — громкость окружающего мира снизилась наполовину.'
! закрываем условие
end
if текст=2:
! если текст = 2 значит выводим надпись по цветности
    'Вы съели красивый гриб, и цвета стали намного ярче.'
! закрываем условие
end
if текст=3:
! если текст = 3 значит выводим надпись по масштабу
    'Вы подбросили наковальню в воздух и поймали её на маковку — картинка значительно сузилась.'
! закрываем условие
end
! добавляем переход на новую локацию, который будет совершаться автоматически при щелчке по последнему действию
! при этом текст, соответствующий последнему действию, мы не увидим
if громкость=1 and цветность=1 and масштаб=1:
! если действия с громкостью, цветностью и масштабом были выбраны, все три переменные равны единице
    ! переход на следующую локацию
    goto 'вторая_локация'
! конец условия
end

По хорошему переход в последнем случае нужно поместить в новое действие:
 Спойлер Show Spoiler Hide Spoiler
 

Код:

if громкость=1 and цветность=1 and масштаб=1:

! если действия с громкостью, цветностью и масштабом были выбраны, все три переменные равны единице
    ! открываем действие
    act 'Перейти на следующую локацию':
        ! переход на следующую локацию
        goto 'вторая_локация'
    !конец действия
    end
! конец условия
end

В крайнем случае можно сделать задержку:
 Спойлер Show Spoiler Hide Spoiler
 

Код:

if громкость=1 and цветность=1 and масштаб=1:

! если действия с громкостью, цветностью и масштабом были выбраны, все три переменные равны единице
    ! делаем паузу на две с половиной секунды
    wait 2500
    ! переход на следующую локацию
    goto 'вторая_локация'
! конец условия
end

или переход без очистки окна основного описания:
 Спойлер Show Spoiler Hide Spoiler
 

Код:

if громкость=1 and цветность=1 and масштаб=1:

! если действия с громкостью, цветностью и масштабом были выбраны, все три переменные равны единице
    ! переход на следующую локацию без очистки окна основного описания
    xgoto 'вторая_локация'
! конец условия
end

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

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

Aleks Versus,
Пробовал-пробовал, не доходит и не выходит у меня ничего(( получаются проблемы со взятием предмета. Если не трудно, пожалуйста напиши весь код, буду очень признателен! Мне нужно чтобы трактирщик по разному реагировал на ГГ: 1) когда ГГ заходит в трактир без монет; 2) когда заходит с монетами; 3) когда покупает вино и в дальнейшем возвращается в трактир.

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

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

Лишние end'ы. Не надо эндами закрывать двоеточия внутри игрового текста.
Путаница - между просто переменными и obj-ами

Мой вариант того же кода:

Код:

if obj 'монеты':

'Трактирщик:
-Могу предложить бутылку вина!'
    if obj 'Бутылка вина':
    else
        act 'Заплатить трактирщику за вино':
        delobj 'монеты'
        addobj 'Бутылка вина'
        gt $curloc
        end
    end
else
'Трактирщик:
-Сначала деньги!'
end

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

Информация

Статистика форума:
 
Всего тем:
965
Всего опросов:
14
Всего сообщений:
16790141
Всего сообщений сегодня:
18
Пользователи форума:
 
Всего пользователей:
2092
Последним зарегистрировался:
Appfox