Форум

Уведомления
Очистить все

[MS] Операции по работе с глобальной картой (header_operations.py)

 
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(is_currently_night),

Проверяет что в игре ночь, когда игрок находиться на глобальной карте

ПРИМЕР:

  # Checking escape chances of prisoners that joined the party recently.
  (6,
   [(gt, "$g_prisoner_recruit_troop_id", 0),
    (gt, "$g_prisoner_recruit_size", 0),
    (gt, "$g_prisoner_recruit_last_time", 0),
    (is_currently_night),
....

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

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:23
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(map_free),

Проверка в условии триггера сработает только если игрок на глобальной карте и закрыты все окна.

ПРИМЕР:

# Read books if player is resting.
  (1, [(neg|map_free),
       (gt, "$g_player_reading_book", 0),
....

Триггер отвечающий за чтение книг. Здесь проверка (neg|map_free),отвечает за то, чтобы книга не читалась, когда игрок находится просто в путешествии (на свободной карте), без этой проверки триггер будет срабатывать просто каждый час 

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:23
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(get_global_cloud_amount, ), -вернет в переменную текущую погоду (дождь, снег) на глобалке. Значение от 0 до 100.

(set_global_cloud_amount, ), -устанавливает значение для погоды от 0 до 100.

ПОЯСНЕНИЯ:

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

sf_clouds_0   = от 0 до 25 - ясная погода
sf_clouds_1   = от 25 до 50 - облачная погода
sf_clouds_2   = от 50 до 75 - легкий моросящий дождь или пред дождевая погода
sf_clouds_3   = от 75 до 100 - дождь.

sf_clouds -флаг скайбокса  в файле Skyboxes.py

в изначально погода установлена на значении 50. саморегуляция происходит в пределах /- 25 единиц. как происходят скачки погоды и от чего это зависит выяснить так и не удалось.

 

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:23
Джеки Чан
Известный участник Модератор Гильдия переводчиков

для работы с туманом

(get_global_haze_amount, ),- вернет в переменную значение от 0 до 100

(set_global_haze_amount, ),- назначает значение от 0 до 100

0 - ясно
100 - густой туман.
туман на карте также скажется в сценах.

 

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:23
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(store_current_hours, ),- вернет в переменную сколько часов прошло с начала игры.

ПРИМЕР:

....
(24, #Kingdom ladies send messages
 [ 	(store_current_hours, ":hours_since_last_visit"),
        (troop_get_slot, ":last_visit_hour", ":troop_id", slot_troop_last_talk_time),
        (val_sub, ":hours_since_last_visit", ":last_visit_hour"),
                     
        (gt, ":hours_since_last_visit", ":longest_time_without_visit"),
....   

Триггер отвечает за получение сообщения от дамы сердца с просьбой о визите.
Здесь операция store_current_hours,записывает в переменную ":hours_since_last_visit" текущее время. Далее вычисляется разница между временем последнего визита и текущим временем, и если со времени последней встречи прошло больше времени, чем заданно в переменной ":longest_time_without_visit" (по умолчанию 120 часов), то триггер срабатывает и вы получаете сообщение и квест на посещение дамы

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:24
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(store_time_of_day, ),- запишет в переменную текущее время суток. значение от 0 до 24

ПРИМЕР:

("wait_24_hours",[],"Wait until tomorrow.", [
          (assign,"$auto_besiege_town","$g_encountered_party"),
          (assign, "$g_siege_force_wait", 1),
          (store_time_of_day,":cur_time_of_day"),
          (val_add, ":cur_time_of_day", 1),
          (assign, ":time_to_wait", 31),
          (val_sub,":time_to_wait",":cur_time_of_day"),
          (val_mod,":time_to_wait",24),
          (val_add, ":time_to_wait", 1),
          (rest_for_hours_interactive, ":time_to_wait", 5, 1), #rest while attackable
          (assign, "$cant_talk_to_enemy", 0),
          (change_screen_return),
          ]),

Этот пункт меню, при осаде позволяет дождаться следующего утра, если по каким то причинам сейчас вы на штурм идти не готовы, хотя все инженерные работы завершены.
Здесь в переменную ":cur_time_of_day" с помощью операции store_time_of_dayзаписывается текущее время суток (количество часов, пошедших с последней полуночи). Далее высчитывается сколько времени осталось до ближайшего рассвета, записывается в переменную ":time_to_wait" и с помощью операции rest_for_hours_interactiveигрок ждёт с пятикратным ускорением времени нужное время

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:24
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(store_current_day, ),- запишет в переменную количество дней прошедшее от начала игры.

ПРИМЕР:

[anyone|plyr,"lord_talk",[#(troop_slot_eq, "$g_talk_troop", slot_troop_is_prisoner, 0),
                            (neg|troop_slot_ge, "$g_talk_troop", slot_troop_prisoner_of_party, 0),
                            (check_quest_active,"qst_lend_companion"),
                            (quest_slot_eq, "qst_lend_companion", slot_quest_giver_troop, "$g_talk_troop"),
                            (store_current_day, ":cur_day"),
                            (quest_get_slot, ":quest_target_amount", "qst_lend_companion", slot_quest_target_amount),
                            (ge, ":cur_day", ":quest_target_amount"),
                            (quest_get_slot, ":quest_target_troop", "qst_lend_companion", slot_quest_target_troop),
                            (str_store_troop_name,s14,":quest_target_troop"),
                            (troop_get_type, reg3, ":quest_target_troop"),
                            ],
   "I should like {s14} returned to me, {s65}, if you no longer require {reg3?her:his} services.", "lord_lend_companion_end",
   []],

Вариант диалога с лордом, если вы по квесту отдали одного из своих компаньонов ему на время.
Здесь операция store_current_dayзаписывает в переменную ":cur_day" количество дней прошедших с начала игры. Далее это число сравнивается с датой возвращения компаньона оговоренной в условиях квеста, и если текущая дата больше, вы можете в диалоге попросить лорда вернуть вашего спутника.

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:24
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(rest_for_hours, , [time_speed_multiplier], [remain_attackable]),- операция вынуждает партию игрока стать на отдых на определенный период времени.

ПРИМЕР:

("village_loot",[], "Plunder the village, then raze it.",
       [
          (call_script, "script_village_set_state", "$current_town", svs_being_raided),
          (party_set_slot, "$current_town", slot_village_raided_by, "p_main_party"),
          (assign,"$g_player_raiding_village","$current_town"),
                
                (try_begin),
                  (store_faction_of_party, ":village_faction", "$current_town"),
                     (store_relation, ":relation", "$players_kingdom", ":village_faction"),
                     (ge, ":relation", 0),
                     (call_script, "script_diplomacy_party_attacks_neutral", "p_main_party", "$current_town"),
                (try_end),	
                
          (rest_for_hours, 3, 5, 1), #rest while attackable (3 hours will be extended by the trigger)
          (change_screen_return),

При посещении деревни, в меню враждебных действий, вариант "Разграбить и сжечь деревню".
Здесь операция rest_for_hoursзаставляет отряд игрока ждать на глобальной карте 3 часа = 3, без возможности самостоятельно прекратить это ожидание, с пятикратным ускорением времени [time_speed_multiplier] = 5 и возможностью, что на игрока может в это время напасть враждебный отряд [remain_attackable] = 1

.

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:24
Джеки Чан
Известный участник Модератор Гильдия переводчиков

(rest_for_hours_interactive, , [time_speed_multiplier], [remain_attackable]),- вынуждает стать на отдых но с возможностью в любой момент его прервать

ПРИМЕР:

("start_collecting", [], "Start collecting.",
       [(assign, "$qst_collect_taxes_currently_collecting", 1),
        (try_begin),
          (quest_slot_eq, "qst_collect_taxes", slot_quest_current_state, 0),
          (quest_set_slot, "qst_collect_taxes", slot_quest_current_state, 1),
        (try_end),
        (rest_for_hours_interactive, 1000, 5, 0), #rest while not attackable
        (assign,"$auto_enter_town","$current_town"),
        (assign, "$g_town_visit_after_rest", 1),
        (change_screen_return),
        ]),

Пункт в меню, появляющегося в меню города, если игрок получил от лорда квест на сбор налогов, при выборе которого, начинается сам сбор ("начать сбор").
Здесь операция rest_for_hours_interactiveзаставляет отряд игрока ждать в городе 1000 часов = 1000, с возможностью самостоятельно прекратить это ожидание, с пятикратным ускорением времени [time_speed_multiplier] = 5и в это время на игрока не может напасть враждебный отряд [remain_attackable] = 0.
Не удивляйтесь такой большой цифре, т.к. за окончание сбора здесь отвечает треггер и 1000 часов просто максимальное допущение


- на какой период времени идет остановка
[time_speed_multiplier]- мультипликатор скорости течения времени. можно ускорить или замедлить.
[remain_attackable] - 1 - отряд игрока может быть атакован враждебным отрядом во время ожидания.
0 - отряд игрока не может быть атакован враждебным отрядом во время ожидания.
Причём при значении 0 отряд игрока визуально пропадает с карты.

ОтветитьЦитата
Автор темы Размещено : 26.01.2022 12:24

Оставьте ответ

Имя автора

Электронная почта автора

Заголовок *

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Политика конфиденциальности