Добавлен eriel222
Как сделать проверку кем нанесён урон и в каких кол-вах, например, Ратуше? Если допустим синий нанёс 100 урона, то здание переходит ему.
Принятый ответ
(всю папку триггеров себе вставляй)
инструкция по переносу в самой наработке
//////////// ВОТ ЧТО ТЕБЕ НАДО ДОПИСАТЬ/////////
if LoadInteger(udg_hash,GetHandleId(c),100+p)>=100 then где 100 - твоё число
call SetUnitOwner(c,GetOwningPlayer(u))
endif
if LoadInteger(udg_hash,GetHandleId(c),100+p)>=100 then где 100 - твоё число
call SetUnitOwner(c,GetOwningPlayer(u))
endif
и я показал куда, настраивать всё всё не надо ибо тебе не нужен опыт
и это не 100% решение и не гуи, требуется переработка, я дал максимальную подсказку с образцом
и это не 100% решение и не гуи, требуется переработка, я дал максимальную подсказку с образцом
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Naadir
Честно говоря, ночью напечатал алгоритм, не отправил, а лёг спать, а утром не скопировал напечатанный текст, а просто обновил страницу)
Если кратко для одного здания, либо фиксированного количества, то нужно создать массив реальных переменных для подсчёта урона, где индексом будет номер игрока, чей юнит нанёс урон. При получении урона его количество прибавляется к соответствующей переменной, а потом идёт проверка, не больше ли количество урона текущего здоровья+0.04, когда юнит должен умереть. Если да, то восстановить здоровье и найти циклом максимальное значение реальных переменных, для этого понадобится для максимальной целочисленная переменная, куда будет записываться индекс массива реальных. Сравниваешь по очереди переменные с той, что фигурирует, как максимальная, если больше, значит она теперь максимальная, этот номер игрока и становится владельцем.
Если же такие Ратуши игроки могут строить, как в обычном развитии, то нужно сохранять количество урона по каждой в хеш-таблицу.
Об этом писал еще Diod на форуме, баг яйца феникса, когда из за морфа бонус хп становился отрецательным и макс хп < 0.405, что делало юнита мертвым.
if LoadInteger(udg_hash,GetHandleId(c),100+p)>=100 then где 100 - твоё число
call SetUnitOwner(c,GetOwningPlayer(u))
endif
и это не 100% решение и не гуи, требуется переработка, я дал максимальную подсказку с образцом