Создание ивентов, привязанных к дате - Учебники по моддингу - Strategium.ru Перейти к содержимому

Создание ивентов, привязанных к дате

Рекомендованные сообщения

Было взято с реддита, вот ссыль: 

 

 

Если коротко, то система ивентов в хойке сделана через одно место, поэтому если вы хотите привязать ивент к конкретной дате, придется извращаться. Расскажу на примере моего мода. Допустим мы хотим, чтобы ивент сработал, условно, 20 января. По механике игры, проверка триггеров происходит каждые 20 дней. То есть это примерный разброс вашего события. Если изменить частоту проверки, то игра начнет и без того сильно лагать. НО, есть способ задать точное исполнение ивента. 

Создаем скрытый ивент через hidden = yes , и ставим его срабатывание как 
mean_time_to_happen = {
        days = 1
    }

то есть этот скрытый ивент сработает в тот же день, в котором происходит проверка триггеров. Причем ивент активируем только через триггер
trigger = {
        tag = ТэгСтраны
    }
Следующий нужный нам ивент мы запустим через счетчик, а именно 
immediate = {
        ТэгСтраны = {
            country_event = { id = АйдиИвента.номер days = X } #, где Х - кол-во дней от дня проверки до желаемого события
        }
    }

допустим вместо Х мы поставим 5, оформляем эти два ивента, запускаем игру. Ждем, пока сработает наше второе событие. У меня оно сработало, допустим, 8 января, следовательно, у меня день проверки триггера 8-5=3 января. Всё. Теперь любой нам нужный ивент мы пишем через ивент-счетчик, подставляя вместо Х вычисленное кол-во дней. 

Кстати, само кол-во дней легко можно вычислить через этот сайт: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Надеюсь помогу модерам, потому что я сам промучился с этим несколько дней, прежде чем найти хоть сколько-нибудь рабочий способ. 

Если кому надо, полный код ивента-счетчика и второго ивента:

Спойлер

country_event = {  #начальный eвент-счетчик //дату отсчитывать от 3 января
    id = arme.1
    title = arme.1.t
    desc = arme.1.d
    picture = GFX_news_election_rally
    
    fire_only_once = yes
    
    hidden = yes 
    trigger = {
        tag = ARM
    }
    mean_time_to_happen = {
        days = 1
    }
    
    immediate = {
        ARM = {
            country_event = { id = arme.2 days = 78 } # where X is the number of days from January 9 to your desired date
        }
    }
    
    option = {
        name = arme.1.a
        
    }
    
    
}
#2
country_event = { 
    id = arme.2
    title = arme.2.t
    desc = arme.2.d
    picture = GFX_gfx
    
    
    
    fire_only_once = yes
    is_triggered_only = yes
    
    
    
    
    option = {
        name = arme.2.a
       
    }
   
    
    
}

 

Изменено пользователем Москит
Ссылка на комментарий

Закреплённые сообщения
2 часа назад, UNN_Fgr сказал:

Допустим мы хотим, чтобы ивент сработал, условно, 20 января.

Это обычно делается намного проще и элегантнее, не верьте всему, что пишут на всяких непрофильных реддитах. В /history/countries в файле нужной страны можно добавить в конце:

 

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Изменено пользователем GBV
Ссылка на комментарий

3 часа назад, GBV сказал:

Это обычно делается намного проще и элегантнее, не верьте всему, что пишут на всяких непрофильных реддитах. В /history/countries в файле нужной страны можно добавить в конце:

 

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Любо. Буду знать, спасибо. 

Ссылка на комментарий

В 13.11.2021 в 14:58, GBV сказал:

Это обычно делается намного проще и элегантнее, не верьте всему, что пишут на всяких непрофильных реддитах. В /history/countries в файле нужной страны можно добавить в конце:

 

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Можно задать вопрос, есть ли возможность сделать ивенты в первую неделю игры? По такой схеме ивент не появляется раньше 8 января, а мне необходим ивент 3 января.

Ссылка на комментарий

Aurelius36
19 минут назад, Lancet_ сказал:

Можно задать вопрос, есть ли возможность сделать ивенты в первую неделю игры? По такой схеме ивент не появляется раньше 8 января, а мне необходим ивент 3 января.

Не знаю как в хойке, точнее не уверен наверняка, но в других играх присутствует настройка, при старте игры некоторое время нет ивентов. Как бы защита от флуда и даёт время игре просчитать всякое.. :boy-cleanglasses:

Ссылка на комментарий

47 минут назад, Lancet_ сказал:

Можно задать вопрос, есть ли возможность сделать ивенты в первую неделю игры? По такой схеме ивент не появляется раньше 8 января, а мне необходим ивент 3 января.

В common/on_actions/ можно через on_startup задать ивент хоть прямо на старте игры, а там уже и до 3-го дня недалеко.

Ссылка на комментарий

CAXAPc4AEM

Я не понял тему, скажите подробнее как сделать так чтобы был ивент в котором например лидер с айди FIN_lauri_christian_relander станет лидером партии Демократия 1 марта 1943?

Изменено пользователем CAXAPc4AEM
Ссылка на комментарий

23 часа назад, CAXAPc4AEM сказал:

Я не понял тему, скажите подробнее как сделать так чтобы был ивент в котором например лидер с айди FIN_lauri_christian_relander станет лидером партии Демократия 1 марта 1943?

 

В 13.11.2021 в 13:58, GBV сказал:

Это обычно делается намного проще и элегантнее, не верьте всему, что пишут на всяких непрофильных реддитах. В /history/countries в файле нужной страны можно добавить в конце:

 

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Ссылка на комментарий

Michael Cudlitz

@GBV Нужна помощь. Я создал новостное событие, и мне нужно, чтобы оно появлялось один раз и больше не появлялось, но оно появляется каждые 1-2-3 недели.

 

 

Спойлер

news_event = {
    id = news.595
    title = news.595.t
    desc = news.595.d
    picture = GFX_news_event_016
    
    major = yes

    trigger = {
        tag = SHO
    }

    immediate = {
        set_global_flag = new_nacia_of_sho
    }

    mean_time_to_happen = {
        days = 0
    }

    option = {
        name = news.595.a
    }
}

 

 

Ссылка на комментарий

19 минут назад, Michael Cudlitz сказал:

trigger = {
        tag = SHO
    }

Если так задать триггер вызова, то конечно оно будет постоянно вызываться, никаких ограничений же нет, есть тег - будет срабатывать у него до посинения. При подобном вызове ивента по триггерам для ограничения количества используется в ивенте параметр fire_only_once = yes.  Но возможно, здесь просто нужно было задать более сложное условие срабатывания или же сделать новостной ивент вызываемым из другого места (is_triggered_only = yes), как это обычно делается в новостях из ванильной игры.

Ссылка на комментарий

Michael Cudlitz

@GBV Ну вот, хорошо, я прописал ивент новостной так, чтобы он появлялся, когда у моей страны сменится столица через фокус. И что в итоге? Ивент появляется раньше фокуса, а потом не появляется вовсе. Я просто не могу разобраться с этими триггерами — они как будто написаны бухим мужиком из парадокс, полная чушь.

 

 

 

Спойлер

news_event = {
    id = news.596
    title = news.596.t
    desc = news.596.d
    picture = GFX_news_event_016
    
    major = yes
    fire_only_once = yes

    trigger = {
        tag = SHO
        owns_state = 445  
    }

    mean_time_to_happen = {
        days = 0
    }

    option = {
        name = news.596.a
    }
}

 

 

Ссылка на комментарий

8 часов назад, Michael Cudlitz сказал:

Ивент появляется раньше фокуса, а потом не появляется вовсе.

Уже прогресс, раз появляется только один раз, а не бесконечно. Я не знаю, что и как тут точно должно быть в итоге, но если нужно просто сделать новость после выполнения фокуса, то не нужно использовать триггеры в самом ивенте, достаточно его вызвать напрямую при выполнении фокуса: 

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

И в самой новости вместо триггеров параметры будут попроще:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Ссылка на комментарий

CAXAPc4AEM

Мужики, у меня чё то нифига не работает. Создаю ивент, всё делаю правильно как в инструкции, и в чит кодах пишу event <номер моего ивента AAT_finland_political.10> но пишет что такого ивента нет, а я сделал всё правильно. Что делать? (я создаю ивент для финнов где персонаж FIN_lauri_relander становится лидером страны)

Изменено пользователем CAXAPc4AEM
Ссылка на комментарий

50 минут назад, CAXAPc4AEM сказал:

Что делать?

Смотреть Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. . Подозреваю, что error.log развеет иллюзию "всеправильности", иначе бы игра видела и вызывала ивент через консоль.

Ссылка на комментарий

Michael Cudlitz

@GBV Ну да, теперь работает. Но вот только когда я создаю событие на падение того или иного города, оно тоже работает. Однако после создания двух или трёх таких событий у меня ванильные события становятся без локализации, то есть отображаются только их id. Я смотрел логи, но ничего подозрительного не нашёл. Также я использовал новые id, не затрагивая ванильные. В чём проблема?

Ссылка на комментарий

12 часа назад, Michael Cudlitz сказал:

Однако после создания двух или трёх таких событий у меня ванильные события становятся без локализации, то есть отображаются только их id. Я смотрел логи, но ничего подозрительного не нашёл. Также я использовал новые id, не затрагивая ванильные. В чём проблема?

Нужно разбираться и заниматься отладкой, мало ли что там. Если локализация пропадает с определёнными изменениями, то нужно вычислить этот момент, после которого возникает ошибка.

Ссылка на комментарий

19 часов назад, Michael Cudlitz сказал:

Где найти эту отладку?

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

Ссылка на комментарий

Michael Cudlitz

@GBV А вот, конечно, не совсем по теме, но у меня есть код. Я пытался сделать так, чтобы событие появлялось, когда абсолютно любая страна захватывает, например, Лондон. Я сделал это для того, чтобы не прописывать каждую страну отдельно, так как это очень долго. В общем, вот код, который я написал, но он не работает. Почему?             

 

 

Спойлер

add_namespace = fricas

news_fricas = {
    id = fricas.102
    title = fricas.102.t
    desc = fricas.102.d
    picture = GFX_news_event_soldiers_marching
    
    major = yes
    
    trigger = {
        126 = { is_controlled_by = ROOT }
        126 = { is_owned_by = ENG }
        ENG = { has_war_with = ROOT }
        NOT = { has_global_flag = fall_of_london }
    }

    immediate = {
        set_global_flag = fall_of_london
    }
    
    mean_time_to_happen = {
        days = 2
    }
    
    option = {
        name = fricas.102.a
        trigger = {
            NOT = {
                TAG = ROOT
                TAG = ENG
            }
        }
    }
    option = {
        name = fricas.102.b
        trigger = { TAG = ROOT }
        }
    }
    option = {
        name = fricas.102.c
        trigger = { TAG = ENG }
    }
}
 

 
 

 

Изменено пользователем Michael Cudlitz
Ссылка на комментарий

В 30.07.2024 в 19:06, Michael Cudlitz сказал:

В общем, вот код, который я написал, но он не работает. Почему? 

Ну, например если сравнить с другими ивентами, в т.ч. новостными то там не используется таким образом ROOT, сомневаюсь что оно так будет работать. Тут видимо нужно передtлать это во что-то типа 126 = { NOT =  is_controlled_by = ENG } }

Ссылка на комментарий

Присоединиться к обсуждению

Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Ваша ссылка автоматически преображена.   Отображать как простую ссылку

×   Предыдущее содержимое было восстановлено..   Очистить текст в редакторе

×   You cannot paste images directly. Upload or insert images from URL.

  • Ответы 21
  • Создано
  • Последний ответ
  • Просмотры 2871

Лучшие авторы в этой теме

Популярные сообщения

GBV

Это обычно делается намного проще и элегантнее, не верьте всему, что пишут на всяких непрофильных реддитах. В /history/countries в файле нужной страны можно добавить в конце:   41ec20b2c07b2c1

GBV

В common/on_actions/ можно через on_startup задать ивент хоть прямо на старте игры, а там уже и до 3-го дня недалеко.

UNN_Fgr

Было взято с реддита, вот ссыль:      Если коротко, то система ивентов в хойке сделана через одно место, поэтому если вы хотите привязать ивент к конкретной дате, придется извращат

Aurelius36

Не знаю как в хойке, точнее не уверен наверняка, но в других играх присутствует настройка, при старте игры некоторое время нет ивентов. Как бы защита от флуда и даёт время игре просчитать всякое.. 

GBV

Правильно - это так, как будет работать нужным образом, это нужно проверять на практике, я писал что для начала нужно бы избавиться от рута в триггерах: 126 = { NOT = { is_controlled_by = ENG } }

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу


Copyright © 2008-2024 Strategium.ru Powered by Invision Community

×
×
  • Создать...