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