had

Автопостройка

347 сообщений в этой теме

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

Закреплённое сообщение
Artos_VV

Спасибо за мод, избавляет от рутины...

Но есть замечание: вроде как все новое строится как задумано в моде, но в логе идет ругань на постройки электростанций и начальных лабораторий. Вроде на условия в 400 и 458 строках файла events/autobuild.txt:

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

Строки в логе постоянно повторяются:

Кусок логаНажмите здесь!
 [17:57:54][trigger_impl.cpp:577]: Script Error: Invalid context switch[pop], file: events/autobuild.txt line: 458, Scope:

type=tile

id=0

random={ 449984283 449984283 }

root={

type=country

id=0

random={ 449984283 449984283 }

}

from={

type=country

id=0

random={ 449984283 449984283 }

}

prev={

type=planet

id=0

random={ 449984283 449984283 }

root={

type=country

id=0

random={ 449984283 449984283 }

}

from={

type=country

id=0

random={ 449984283 449984283 }

}

prev={

type=country

id=0

random={ 449984283 449984283 }

}

}

[Cкрыть]

Нужно бы подправить, а то иные ошибки в логе можно не увидеть.

Пожелание: Неплохо бы ввести некую задержку (таймер) при наступлении события о возможности строительства/апгрейда, на минуту-две. А то при получении новых технологий (и подобном) ресурсы мгновенно тратятся и сам игрок не успевает принять решение - тратить самому, например. на корабли/оружие/апгрейд или пусть продолжает строить/апгрейдить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Спасибо за мод, избавляет от рутины...

Но есть замечание: вроде как все новое строится как задумано в моде, но в логе идет ругань на постройки электростанций и начальных лабораторий. Вроде на условия в 400 и 458 строках файла events/autobuild.txt:

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

Строки в логе постоянно повторяются:

Кусок логаНажмите здесь!
 [17:57:54][trigger_impl.cpp:577]: Script Error: Invalid context switch[pop], file: events/autobuild.txt line: 458, Scope:

type=tile

id=0

random={ 449984283 449984283 }

root={

type=country

id=0

random={ 449984283 449984283 }

}

from={

type=country

id=0

random={ 449984283 449984283 }

}

prev={

type=planet

id=0

random={ 449984283 449984283 }

root={

type=country

id=0

random={ 449984283 449984283 }

}

from={

type=country

id=0

random={ 449984283 449984283 }

}

prev={

type=country

id=0

random={ 449984283 449984283 }

}

}

[Cкрыть]

Нужно бы подправить, а то иные ошибки в логе можно не увидеть.

Пожелание: Неплохо бы ввести некую задержку (таймер) при наступлении события о возможности строительства/апгрейда, на минуту-две. А то при получении новых технологий (и подобном) ресурсы мгновенно тратятся и сам игрок не успевает принять решение - тратить самому, например. на корабли/оружие/апгрейд или пусть продолжает строить/апгрейдить.

Это еррор лог? Странно, у меня он пустой. Здания строятся?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Iviom

Тэг every_owned_planet работает на все планеты? Или только на core миры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Тэг every_owned_planet работает на все планеты? Или только на core миры?

Играю без секторов, специально проверять лень.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Artos_VV
Это еррор лог? Странно, у меня он пустой. Здания строятся?

Да, в error.log. Здания то строятся, как уже и сказал, но и в лог сыпет. Вероятно некие ячейки(плитки) не подпадают под условия...

Добавил условие exists = pop перед pop = {...} и мусор в логе исчез.

Сунул свой нос поглубже в код и ... офигел малость ;)

1. Нашел неточность в строках 427 и 428 - т.е. будут строится только для "Планетарная администрация" (_1). Надо бы поправить окончания _2 и _3.

2. В каждом(!) такте игры перепроверяется не один десяток раз(!) каждая(!) ячейка на каждой(!) планете империи - такую нагрузку нужно разгружать. Я себе пока вот такой кусочек оптимизировал:

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

[Cкрыть]
По поводу таймера хз. По идеи здания должны строиться раз в год. Но в игре эвент выполняется каждый день, возможно это вина парадоксов, а может я неправильно понимаю суть блока он ерли пульс.

Суть - этот эвент проверяется ежегодно, точнее в течении каждого года, если условие (у тебя has_edict = auto_build_3) выполняется. Если событие (постройка/апгрейд) не произошло, то и проверка продолжается. Т.о. если будет возможность что-то построить/апгрейдить в текущем году - то постройка выполняется немедленно и наступает пауза до след. года. Учитывая, что в моде три эвента - то и ежегодные паузы снивелированы...

В общем нужно глобально усовершенствовать код мода. :)

Тэг every_owned_planet работает на все планеты? Или только на core миры?

У меня вроде сектора не затрагивает.

Изменено пользователем Artos_VV

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Да, в error.log. Здания то строятся, как уже и сказал, но и в лог сыпет. Вероятно некие ячейки(плитки) не подпадают под условия...

Добавил условие exists = pop перед pop = {...} и мусор в логе исчез.

Сунул свой нос поглубже в код и ... офигел малость ;)

1. Нашел неточность в строках 427 и 428 - т.е. будут строится только для "Планетарная администрация" (_1). Надо бы поправить окончания _2 и _3.

2. В каждом(!) такте игры перепроверяется не один десяток раз(!) каждая(!) ячейка на каждой(!) планете империи - такую нагрузку нужно разгружать. Я себе пока вот такой кусочек оптимизировал:

1. Значит забыл обновить версию на яндекс диске, в стиме уже должно быть это исправление. Сейчас перезалью.

2. Не вижу в чем преимущество random перед every, я конечно не видел код и игры и не знаю как проводится проверка, но интуитивно кажется, что особой разницы нет.

Плюс (если я не ошибаюсь) проверка random происходит единожды для планеты/клетки (по крайней мере на это намекают ванильные эвенты), то есть за раз одна клетка в год.

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

Попробовал вставить is_triggered_only = yes, эвенты перестали срабатывать. Хотя у других ванильных эвентов из on_yearly_pulse = { есть эта строка.

Да, внезапно ожил еррор лог, тоже эта ошибка с попами. Добавил твою правку, вроде норм.

Раз уж заговорили об оптимизации, решил убрать лишние проверки на планеты. Вот они действительно не нужны.

Спасибо за фитбек.

Новая версия на яндексе и стиме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Iviom

Можешь залить код на гитхаб?

Изменено пользователем Iviom

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Можешь залить код на гитхаб?

Это возможно, а зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Artos_VV
1. Значит забыл обновить версию на яндекс диске, в стиме уже должно быть это исправление. Сейчас перезалью.

Ну... пользуюсь тем что для пиратов ;) , пока о покупке только подумываю.

Обнову скачал, постараюсь синхронизироваться.

2. Не вижу в чем преимущество random перед every, я конечно не видел код и игры и не знаю как проводится проверка, но интуитивно кажется, что особой разницы нет.

Плюс (если я не ошибаюсь) проверка random происходит единожды для планеты/клетки (по крайней мере на это намекают ванильные эвенты), то есть за раз одна клетка в год.

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

Как выше уже говорил, on_yearly_pulse работает ежегодно И(!) если что-либо не срабатывает по событию - то продолжает в этом году свои проверки по всем планетам и по всем ячейкам, загружая движок игры.

Т.о. применяя random для ячеек как раз и выходит некая случайная задержка/отсрочка (пока очень маленькая) перед началом застроек, дабы игрок успел среагировать. Да и движок игры менее напрягается.

Раз уж заговорили об оптимизации, решил убрать лишние проверки на планеты. Вот они действительно не нужны.
Помимо излишних планет нужно бы для выбранной планеты в одном цикле по ячейкам проверять все условия для построек/апгрейдов, а не размазывать по куче перебираний всех ячеек по каждому поводу. Цикл получается очень разветвленный, но зато оптимизирован и легко адаптируем под новые доп.условия.

Подскажи, плз, что означает условие is_growing = no ? То, что связано с "поп не растет" - ясно, но зачем ты его применяешь, если уже рядом используешь has_grown_pop = yes (поп уже выросший). Извиняюсь за вольные переводы ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Как выше уже говорил, on_yearly_pulse работает ежегодно И(!) если что-либо не срабатывает по событию - то продолжает в этом году свои проверки по всем планетам и по всем ячейкам, загружая движок игры.

Т.о. применяя random для ячеек как раз и выходит некая случайная задержка/отсрочка (пока очень маленькая) перед началом застроек, дабы игрок успел среагировать. Да и движок игры менее напрягается.

Помимо излишних планет нужно бы для выбранной планеты в одном цикле по ячейкам проверять все условия для построек/апгрейдов, а не размазывать по куче перебираний всех ячеек по каждому поводу. Цикл получается очень разветвленный, но зато оптимизирован и легко адаптируем под новые доп.условия.

Подскажи, плз, что означает условие is_growing = no ? То, что связано с "поп не растет" - ясно, но зачем ты его применяешь, если уже рядом используешь has_grown_pop = yes (поп уже выросший). Извиняюсь за вольные переводы ;)

1 Мне кажется, что все же это не так работает, вот эвент на рабство срабатывает каждый день, хотя там условие и одной действие.

2 Что-то я не понял, можешь привести пример кода?

3 Я некоторые вещи автозаменой делал, в последней версии этого нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Artos_VV
1 Мне кажется, что все же это не так работает, вот эвент на рабство срабатывает каждый день, хотя там условие и одной действие.

Зачем на кажется полагаться - смотрим в игре и в ванильных кодах эвентов. Сейчас постройки/апгрейды практически мгновенны при соблюдении заданных условий и практически ежедневны. Можно в готовой ячейке удалять здания и автомат их с задержкой секунду-три поставит в очередь постройки (или проапгрейдит). В ванильных эвентах ежегодность по флагам отслеживается... Ну да об этом пока рановато заботиться, т.к. не строить же по одному зданию в год на всех планетах. Тут еще помозговать нужно, чтобы и скорость была и игроку не мешало бы растрачивая ресурсы и ячейки.

2 Что-то я не понял, можешь привести пример кода?

Пример кодаНажмите здесь!
 

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

[Cкрыть]
3 Я некоторые вещи автозаменой делал, в последней версии этого нет.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
...

1 Я вижу, что каждый день эвенты исполняются, если бы on_yearly_pulse работал как ты говоришь, то этого бы не было по крайней мере для эвента на рабство.

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

Вот в вики крусайдеров нашел, потесчу еще попозже.

2 А ты пробовал это в игре? Что-то я нигде в ванильных эвентах не видел циклов или переменных, правда переменные есть в еу4, но все же мне кажется, что это слишком для игры.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Artos_VV
1 Я вижу, что каждый день эвенты исполняются, если бы on_yearly_pulse работал как ты говоришь, то этого бы не было по крайней мере для эвента на рабство.

Ты никак не поймешь, что я говорю о том как дОлжен работать ежегодный эвент (как его разрабы спозиционировали), а не как он в моде без каких-либо флагов весь год пашет.

Вот в вики крусайдеров нашел, потесчу еще попозже.

Спасибо большое, пошел читать...

2 А ты пробовал это в игре? Что-то я нигде в ванильных эвентах не видел циклов или переменных, правда переменные есть в еу4, но все же мне кажется, что это слишком для игры.

Опять ты о "кажется" ... Игра- это движок, который читает внешние скрипты и исполняет их (помимо того, что уже в нео вшито). Скрипты, точнее их конфиги мы и пишем/правим. Как напишем - так и должен исполнять, если конечно ему это по силам. А мои примеры а раз из ванильных скриптов взяты - значит и обязан выполнять. Вот этот файл Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. (аналог твоего) в игре полностью отрабатывается. Тут все три эвента немного поправил. Но заремил апгрейд базовой лаборатории...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Опять ты о "кажется" ... Игра- это движок, который читает внешние скрипты и исполняет их (помимо того, что уже в нео вшито). Скрипты, точнее их конфиги мы и пишем/правим. Как напишем - так и должен исполнять, если конечно ему это по силам. А мои примеры а раз из ванильных скриптов взяты - значит и обязан выполнять. Вот этот файл ]]>Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. ]]> (аналог твоего) в игре полностью отрабатывается. Тут все три эвента немного поправил. Но заремил апгрейд базовой лаборатории...

Кажется, потому что мне лень тестить. Вот и стараюсь компенсировать интуицией.

А с циклами ты наугад взял или где-то читал? Хотя я нашел в файлах, странно, что мне это не попадалось.

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

Но на самом деле это не так важно, если эвент будет стрелять раз в год.

Изменено пользователем had

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Artos_VV
А с циклами ты наугад взял или где-то читал? Хотя я нашел в файлах, странно, что мне это не попадалось.
Я пока только начал изучать коды Стеллариса и все что пишу найдено и взято из ванильных файлов разрабов.
Посмотрел код, думаю, есть смысл начинать с конца. А еще засунуть все здания в одну ветку условий, тогда будет меньше проверок.
Я пока лучше поизучаю доступные операторы и переменные, т.к. очень много нужно бы заложить, чтобы играбельно было. Все же не дело, когда робот тебе игру (и настроение) портит.
Но на самом деле это не так важно, если эвент будет стрелять раз в год.
Важно чтобы не в год стрелял, а в нужное игроку время. Кратко: отслеживая (не)достаточность ресурсов и влияния не мешать игроку своими по(пере)стройками, а помогать ресурсы держать в оптимале и не банкротиться/затариваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
Я пока только начал изучать коды Стеллариса и все что пишу найдено и взято из ванильных файлов разрабов.

Важно чтобы не в год стрелял, а в нужное игроку время. Кратко: отслеживая (не)достаточность ресурсов и влияния не мешать игроку своими по(пере)стройками, а помогать ресурсы держать в оптимале и не банкротиться/затариваться.

1. Я вон выше кинул ссылку, там больше функций, чем в ванильных кодах, хотя про вайл, иф, елсе, там ничего нет.

2. Можно поставить требование по ресурсам, это не проблема, у меня они просто копятся и так.

Можно еще MTH сунуть, но насколько я помню, вычисление MTH тоже нагружает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Artos_VV
1. Я вон выше кинул ссылку, там больше функций, чем в ванильных кодах, хотя про вайл, иф, елсе, там ничего нет.

Там много чего, к сожалению, нет, хотя в scopes.txt уже хотя бы if-else упомянуты.

2. Можно поставить требование по ресурсам, это не проблема, у меня они просто копятся и так.
На начальной стадии игры провалы по ресурсам не редки у каждого игрока (не читера).
Можно еще MTH сунуть, но насколько я помню, вычисление MTH тоже нагружает.

Что такое MTH? (сорри, за моё невежество)

В общем поиграл, почитал, почесал репу - зачесались руки... и модернизировал маленько этот мод.

Вот что получилось: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. (идет для v1.1.0, отдается на растерзание создателю темы и всем другим)

- введен ключевой модуль "Тотальный губернатор" от(в)ключающий все остальные. Это чтобы по кучке ческбоксов не тыкать. Да и далее сюда можно общие условия добавлять, например, наличие на планете губернатора;

- добавлен модуль авто-расчистки заблокированных ячеек планет. Пока расчищает в случайном порядке, но научить приоритетам с учетом ресурсов не так уж невозможно;

- везде добавлено условие на "неведение строительства на планете", дабы не создавать очередей построек на планетах;

- доделан апгрейд базовых научных лабораторий с учетом ресурсов в ячейках (да и прочие апгрейды);

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

- ну и др.правки/добавки/оптимизашки... ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had
...

Не знаю, ну допустим поставить срабатывание эвента при2к минералов.

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

К тому же 2к - это не много, ну десяток корветов, но не факт, что понадобится десяток корветов.

А так будут этим минералы мертвым грузом лежать, хотя могли бы работать.

Я пока в своей тестовой версии поставил условие на 250 влияния, чтобы можно было эдикт ввести, не отключая автопостройку за влияние.

mean_time_to_happen

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

Лучше конечно через is_triggered_only = yes и 00_on_actions, но я не понимаю почему не работает как надо, так что сделаю пока раз в месяц.

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

Через активные эдикты как-то нагляднее.

is_ai = no в триггере не нужен. ИИ не будет включать эдикт и должен выключить его (не проверял).

Блокеры убираются инстантно и без вычета цены? Я правильно понял?

Думал так сделать, но хотелось бы нормально, как с постройкой зданий (очередь, цена, техи). Спрашивал на парадоксплазе у разраба по этому поводу, но он не ответил.

Команду add_building_construction = мне посоветовал тот же разраб, в ванильных эвентах она не встречается.

Зачем у тебя условие is_colony = yes ? Разве random_owned_planet = { не проверяет то же самое?

Не понятно зачем проверка на ресурсы, энергия не требуется для строительства, минералы и так проверяются командой add_building_construction

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

break = yes тоже не нужен, если я правильно понимаю работу if.

is_robot_pop разве синтов не считает? Тогда они не будут становиться рабами.

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

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

Пока пришел к такому правилу для размножения, игра перестала ругаться на синтаксис, но все равно где-то ошибка, ибо работает не как надо

файл 00_rules удалил из архива мода, чтобы было проще тестить.

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

В общем, если есть мысли, я заинтересован.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
had

А еще возникла мысль занести все под 1 эвент.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

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

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

  • Модераторы онлайн

    • Bes
    • alexis
    • Dima-Stranik