Darkreigh, сорри за сумбур... давай по-порядку... Читаем головной пост темы:
Aquilo писал(а):Источник цитаты Как можно поменять стартовые бонусы рас, их цену начальный выбор и количество очков развития.
Т.е. изначально вопрос именно про очки(цена!) для каждого из стартовых бонусов и о очках развития - как понимаю, "Очки развития науки" - т.е. чит на скорость исследований.
Конечная цель: игроку начать игру с иными бонусами чем положено.
- ну и далее. Речь идет о начальном экране, где игрок выбирает для себя те или иные стартовые бонусы (с их ценами). И далее обсуждение идет по файлу bonus.a из ModKit'а.
1. "
Как можно поменять стартовые бонусы рас" - в файле соответствующей выбираемой игроком расы (например, r_lum.a) находим
phrase ResetBonuses() и, манипулируя аргументами rbvWeakest...rbvBest, можем задать новые дефолтные стартовые бонусы для каждой новой игры за эту расу. Однако(!) пока старт игры возможен, если очков на бонусы тратится в сумме не более 10.
2. "
их цену начальный выбор" - тут пропущена запятая, и "
начальный выбор" частично дублирует "
поменять стартовые бонусы". А вот "их цену" - смотрим
phrase RegisterBonuses() в bonus.a и можем переопределить кол-во очков для каждого бонуса и его степени (худший...лучший).
Можно и проще - добавить кол-во очков для выбора бонусов в
UFSetTotalBonusPoints(XX), о чем ранее уже написано.
Т.о. пункты 1 и 2 затрагивают ТОЛЬКО расу игрока и никак не влияют на ботов. Боты как имели свои дефолтные стартовые бонусы, так и остаются с ними.
А вот далее... Действительно, сейчас пройдя по всем цепочкам, признаю: был НЕ ПРАВ(!), говоря о "
SetRacialBonusesForRace (см. bonus.a) именно для игрока". Боты, если им прописан тот или иной бонус (например, "HIDDEN_SCIENCE_BOOSTER"), значение которого изменяется игроком, тоже получают и используют это изменённое значение.
Т.о. чтобы, например, изменить "скорость исследований" ("количество очков развития") и НЕ затрагивать ботов - следует ввести дополнительную степень/уровень бонуса, что-то типа: "HIDDEN_SCIENCE_CHEATER" и в соотв. ini-файлы добавить строки с этим бонусом и новым коэф-том. А игроку выдать эту "технологию" при старте игры (через
SetPlayerRacialBonuses() в player.a).
P.S. Можно пойти кардинальным путем, добавив в
SetRacialBonusesForRace(WRace) (см.bonus.a) условия для проверки, типа:
if (WRace==Player.raceID)... и по доп.условию выдавать "для игрока" или бота. В этом случае можно любому бонусу, имеющему численные значения в этой функции, прописать желаемые игроком.