Герой с активным спеллом.
Если он добивает юнита этим спеллом, то весь урон, наносимый героем, становится сильнее.
Усиление урона я триггерно сделаю, это не проблема.
Вопрос в другом, как посоветуете реализовать то, от чего отсчитывать?
Можно дать юниту маркерную абилу-пустышку на 1000 уровней (прелоадить маркер где-нибудь на карте) и при убиении этим юнитом тем самым спеллом врага повышать ему лвл этого маркера. Это изи, но тупо, т. к. долго грузится в РО и будет понижать скорость загрузки карты. Ну и плюс лимит 999 повышений, хотя его и хватит в 95% случаев.
Есть другие идеи?
Принятый ответ
avuremybe, это каким ты боком не получишь индекс от юнита
проще некуда
чтобы получить нужный индекс просто перечисляем весь массив и ищем нужного юнита типо так
globals
int Count
int array SpellUP
unit array UN
endglobals
int i = 0
while(i <= Count){
if UN[i] == Нужный юнит {
SpellUP[i]++
наши действие
}
i++
}
проще некуда
чтобы получить нужный индекс просто перечисляем весь массив и ищем нужного юнита типо так
globals
int Count
int array SpellUP
unit array UN
endglobals
int i = 0
while(i <= Count){
if UN[i] == Нужный юнит {
SpellUP[i]++
наши действие
}
i++
}
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Но если у тебя карта не нагружена разными системами и триггерами - то на глаз ты, конечно же, разницы не заметишь...
Отредактирован ClotPh
Ну а дальнейшее понижение производительности РО уж переживу, там уже никуда не деться, только если прямо slk редактировать.
Переменная типа integer занимает 4 байта. А способность, с кучей параметров да еще и несколькими уровнями, занимает больше, чем все твои интегеры за пол часа игры.
просто много глобалок мне редактировать тоже не оч удобно + их нужно будет из тестовой карты героя переносить в основную, да, абилы из РО тоже, но там это уже все "автоматически" делается... ну ладно, короче, это все не настолько неприятно, буду с глобалками делать
Отредактирован ClotPh
Я вот так, например, понимаю: ну, допустим, юнит изучит спелл 1 уровня, я запускаю периодический таймер, записываю в хэш соответствующую юниту локалку с начальным значением в 0, таймер обновляется, локалка перезаписывается.
Хорошо, допустим, как-то записать ее увеличение я могу: например, при добивании юнита спеллом создавать какое-то условие для добившего (да хоть тот же маркер ОДНОуровневый ему дать или убрать, лол), таймер это условие проверяет и, если ок, увеличивает, сохраняет, удаляет/добавляет маркер обратно и дальше уже увеличенную считывает.
А как это значение потом доставать при нанесении урона в другой функции?
Отредактирован 16GB
В смысле локалка
Сохраняешь значение на хэндл юнита, а не таймера.
set dmg = LoadReal(udg_Hash,GetHandleId(c),StringHash("LBMDR"))
call SaveReal(udg_Hash,GetHandleId(c),StringHash("LBMDR"),dmg+20.)
"Сохраняешь значение на хэндл юнита, а не таймера"
я так не умею
что курить?
хотя мб разберусь, информация в сообщении уже старт
То что я дал это весь код лол, что не ясно то?