Герой с активным спеллом.
Если он добивает юнита этим спеллом, то весь урон, наносимый героем, становится сильнее.
Усиление урона я триггерно сделаю, это не проблема.
Вопрос в другом, как посоветуете реализовать то, от чего отсчитывать?
Можно дать юниту маркерную абилу-пустышку на 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++
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. avuremybe
переменная типа integer к которой добавляется 1 когда герой убивает этой способностью это слишком просто для тебя?
Ред. avuremybe
я не предлагаю локальную. я предлагаю массив
Тьфу, игроков, конечно, ограниченное число, но смысл понятен...
способов масса. можешь каждого героя вносить в переменную с индексом i и в переменную с тем же индексом i писать свои данные
можешь просто вязать переменную к герою через хэш
можешь как угодно делать
Для самого героя custom value менять не вариант, т. к., во-первых, у героев custom value уже используется, а, во-вторых, даже если бы не, то одну бы способность так можно было бы сделать, а другую уже не получилось. А вот прикрепить к герою после изучения способности неуязвимого неумирающего невидимого даммика и смотреть его custom value - в принципе неплохой вариант. Чуть геморройно, но лучше изначального нагружающего способа.
а кастом валуе ты можешь и самому герою задавать. я этот вариант не предлагал, т.к. полагал что оно у тебя чем-то более полезным занято...
avuremybe, ДА, ДА, кастом валуе занято, про него же вон написано!!! И как раз написано, что даже если бы не было занятно - все равно не вариант!!! Т. к. одну абилу так сделаешь, а другую уже нельзя!! У меня могут абилы одних героев к другим перекочевывать!!!
дада, неограниченное. создать еще один массив при i>8092 не есть проблема.
Я не понимаю сейчас до конца, как это сделать (только примерно), придется раскуривать.
А по производительности-то он, понятное дело, будет отличный.
Мне нужно понять:
когда герой получает эту твою добивающую способность - создаешь для него переменную с соотв. индексом. А также добавляешь +1 к целочисленной переменной, которая дает тебе понимание сколько у тебя сейчас таких способностей на карте
а потом каждый раз, когда он добивает кого-то твоей способностью ты заносишь в эту переменную +1
соответственно урон герою добавляешь отталкиваясь от значения этой переменной.
тобишь, у тебя есть
integer array i
integer n
unit array u
герой получил способность - делаешь
set n = n+1
set i[n]=0
set u[n]=GetTriggerUnit()
нет, стоп. мы через юнита не получим индекс.
хэш-таблицой пользоваться умеешь?
Умею немного.
Не торопись, потом написать можно максимально подробно и понятно. Это не горит.
ночь уже прост, а я после работы. тупонул :C
Ред. ClotPh
Вообще все-таки резервный вариант с даммиком с custom value относительно не ресурсозатратный и простой. Вопрос только, как через героя отлавливать именно его неуязвимого даммика и с него считывать value и ему записывать, но можно каждую секунду его по X и Y за героем двигать, например (в таймере, созданном после изучения скилла), и там уже 99.9%, что у героя отловится именно его даммик, особенно если еще и соответствие игрока проверять.
////////
у меня, бтв, есть же аналог хотсовского Чо'Галла, Галл своего Чо примерно так и ищет
Только там Галл скорее сам "даммик" )))
Хотя двигается-то именно Галл за Чо, но ловить для своих спеллов втч нужно и Галлу своего Чо
Ну ладно, это уже полный оффтоп
проще некуда
чтобы получить нужный индекс просто перечисляем весь массив и ищем нужного юнита типо так
globals
int Count
int array SpellUP
unit array UN
endglobals
int i = 0
while(i <= Count){
if UN[i] == Нужный юнит {
SpellUP[i]++
наши действие
}
i++
}
//////////
Только последнее уточнение: использовать много глобалок в карте не грех? Просто стремлюсь не создавать их без особой нужды, но для нескольких спеллов офк можно.
Ред. avuremybe
Будут вопросы - не стесняйся.
Ред. ClotPh
Вопрос, что лучше - тратить на спелл 3 глобалки или 3 абилы в РО, думаю, значительной разницы нет.
Недостаток варианта с тремя маркерами - есть лимит, преимущество - чуть легче для понимания (во всяком случае, лично моего, уж с обсчётом итогового усилка из единиц, десятков и сотен справиться нетрудно).
Ладно, все, уже не так важно, сделаю или так, или так, как захочется.
Можно закрывать.
Но если у тебя карта не нагружена разными системами и триггерами - то на глаз ты, конечно же, разницы не заметишь...
Ред. ClotPh
Ну а дальнейшее понижение производительности РО уж переживу, там уже никуда не деться, только если прямо slk редактировать.
Переменная типа integer занимает 4 байта. А способность, с кучей параметров да еще и несколькими уровнями, занимает больше, чем все твои интегеры за пол часа игры.