Автопостройка - Моды форумчан - Strategium.ru Перейти к содержимому

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

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

Закреплённые сообщения
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крыть]

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

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

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

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

Но есть замечание: вроде как все новое строится как задумано в моде, но в логе идет ругань на постройки электростанций и начальных лабораторий. Вроде на условия в 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 миры?

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

Тэг 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
Ссылка на комментарий

Да, в 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
Ссылка на комментарий

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

Не знаю, ну допустим поставить срабатывание эвента при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 удалил из архива мода, чтобы было проще тестить.

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

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

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

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

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

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

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

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

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

  Only 75 emoji are allowed.

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

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

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

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

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

  • had

    158

  • Artos_VV

    26

  • plm1234

    14

  • HolodGLD

    11

  • Kelnimiir

    11

  • Alex Kit

    8

  • mahmud

    8

  • hind

    8

  • Resso

    7

  • Pasha223

    7

  • Naugrim12

    7

  • HugoBo-SS

    6

  • sanas

    5

  • VitaliiCN

    5

  • frezer123

    5

  • Дейтерий

    4

  • Iviom

    3

  • Cozdatel

    3

  • flexus

    3

  • fenix293

    3

  • AngryRussian

    3

  • He3Hak0MeLL

    3

  • Koshachii

    3

  • nekitosh

    3

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

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

had

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

had

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

had

@LeGuS Вчера была ошибка, она исправлена. Не будет.

had

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

had

Не включай остальные настройки мода в меню и будет только этот эдикт.

had

Обновил до 1.3

had

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

had

Обновлено до v2.6 Улучшена локализация. Изменена логика специализированных планет. Переименование автоматических строительных кораблей. Уникальные постройки теперь будут учит

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

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


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

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