Это будет двойной вопрос, потому что темы связаны между собой.
На карте массово используется Change ownership(смена владельца юнита) на всех юнитах на карте, из-за этого возникает ряд проблем.
- При смене владельца, каким-то фигом отменяются все приказы юнита, что приводит и к отмене производств у зданий, и к отмене вообще всего движения на карте (что делает эту карту совершенно неиграбельной)
- Рабочие бунтуют, иначе это не назовёшь. ВСЕ вообще юниты нормально заменяются и не происходит проблем с определением владельца, исключение только рабочие, с каким-то непонятным шансом они решают что не хотят менять свою сторону, от чего все рабочие "меняют цвет" а один уникум этого не хочет делать.
Юниты выбираются путём Pick every unit in the map, я пробовал и отслеживать приказы рабочего, думая что дело только в том таинственном исчезновении юнита из пространства-и-времени когда он попадает в шахту, однако это же происходит и со светлячками что добывают дерево (но не с теми, что находятся внутри шахты, с ними проблем никогда нет, как и с послушниками).
Чаще всего в этот момент рабочий носил золото на себе, но это же происходит и когда у рабочего "нет золота".
Чаще всего в этот момент рабочий носил золото на себе, но это же происходит и когда у рабочего "нет золота".
По части отлова приказов, я даже находил тут сделанную кем-то функцию для этого, но на моей версии она просто не работает.
Если кто знает какая функция сможет поменять владельца без отмены приказа, буду очень благодарен
Принятый ответ
Рабочие останавливаются, потому что сначала меняет владельца рабочий, а уже потом ратуша. Сначала менять владельца у строений, потом у всех остальных.
Сделал карту-пример. пара заметок:
- При смене владельца приказы тренировки и исследования будут сбрасываться. Это никак не починить. Они также могут не выполнится вовсе, если недостаточно ресурсов и пищи.
- В хеш можно сразу структуру сохранять, однако нужно помнить, что у структур лимит 8190 объектов на тип струтуры.
Стоит добавить, что приказы, поставленные в очередь, тоже теряются.
Дополнил карту-пример, добавил авто очистку хеша при смерти юнита. Также нужно вызывать ClearLatestOrder перед удалением юнита.
Дополнил карту-пример, добавил авто очистку хеша при смерти юнита. Также нужно вызывать ClearLatestOrder перед удалением юнита.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. PT153
Для каждого юнита отслеживаем получение приказов через события и сохраняем последний в хеш.
Выбираем всех юнитов ИГРОКА, для каждого юнита берём последний запомненный приказ. Меняем игрока. Отдаём приказ снова.
Впрочем, тут могут быть некоторые нюансы с уже выполненными приказами.
Ред. A.W.K.
А у меня через выбор юнитов игрока начисляется custom value юнита, и все юниты игрока добавляются в массив юнитов для каждого игрока.
А уже после всем юнитам в зависимости от числа меняется команда.
Сделал карту пример. пара заметок:
Ред. A.W.K.
Ред. PT153
Ред. PT153
Дополнил карту-пример, добавил авто очистку хеша при смерти юнита. Также нужно вызывать ClearLatestOrder перед удалением юнита.
Ред. A.W.K.
Спасиб, надеюсь получится в этот раз