Super cool, я тебе так обрисую в чем тут проблема. Сделать кастомный снаряд, который будет пролетать вперед задевая врагов и потом возвращаться - не сложно. Вся фишка в том как именно ты будешь это применять. Если это делается для конкретного скилла - не проблема, делаем всё как сказано и всё работает. Но ты же хочешь привязать это к авто-атаке здания, и при этом таких зданий у тебя может быть много, и они будут постоянно совершать атаки... Это неминуемо грозит довольно высокой нагрузкой (но что есть "высокая" в сравнении параметров железа).
Т.е. я предлагаю тебе отказаться от именно такой концепции реализации.
МрачныйВорон, это Шива. При активации создаёт эффект разлетающихся в разные стороны атак Коатля, и каждого задетого должно разить фростновой единожды. Почему эффект, а не дамми-юнит - там что-то с производительностью было связанно, ибо их там 24+ сразу двигается. По механике аналогично ульте Веномансера. Там что-то типа периодической переборки всех юнитов вокруг кастера, с увеличивающимся радиусом, поэтому можно абузить а покрывать просто огромные расстояния этим уроном...
А тебе не это надо? Что б по типу предметы получать номер массива
Тип предмета 'I03D', это 1227895620, если отнять 1227895619 тотполцчаешь 1
Вот у тебя I03D=1
А переменная с индектом 1 = 'I03D'
Запись всех типов предметов в массив от 1 до 105
При подборе предмета проверка его на принадлежность к этим 105 предметам.
Нахождение совпадения, и, соответственно, его номера в массиве.
Работа с найденным номером.
Всё.
Emafusail, еще раз пытаюсь тебе донести - это делать надо НЕ ТАК.
Ты, со стороны лог;ки движка, пишешь непонятно что непонятно и хочешь получать на выходе в непонятном месте весьма конкретный результат. Это так не работает. Тут нужно совсем по другому всё оформить.
Для этого нужно взять ТИП предмета (число в виде 'I03D'), и сравнить его сотвсеми из списка (а он у тебя длинной в 105), и при первомже совпадении вернуть его номер. Например это будет 37.
И уже с этими 37 делать всё что хочешь, т.к. номер имея ты и данные другие можно подтянуть.
Ну там еще можно лупить базу типа set t['I03D'] = 'I03D'
Хотя тут надо чуть по другому на индекс напирать, но смысмыс в общем такой.
Но одно другого не отменяет вообще
ДА! Но оно записывает Только Последний Индекс для всех предметов
SetItemUserData
не различает индекс 1 2 3 4 5 6 а записывает только Последний индекс т.е 105 Для всех предметов!
Не "только последний", а "все 105 поочереди с перезаписью".
Сначало предмет имеет значение 0 (видимо), цикл ему тут же делает 1...тут же делает 2...тут же 3...4...5...6...и так до 105, и только тогда отваливает от него.
Вот смотри далее... Ты задаешь переменную для тела цикла, и считаешь её пока она не упрётся в лимит от инита = 105
Т.е. цикл отработает 105 раз и сделает следующее:
Записывает дату подобранного предмета как тело = это числа от 1 до 105, т.е. тут происходит перезапись сто раз.
Пишет в другую переменную с индексам тела цикла само значение тела цикла.
...всё
Что тут должно произойти? Кроме как дата предмета будет равно 105 после последней перезаписи, а переменная ItemUserDataMas[1...105] = 1...105
меня интересует почему
call SetItemUserData(GetManipulatedItem(), Cnt_Item_Init)
устанавливает для всех предметов значение Item_Init_Number_End
а когда проверяю Значения в инвентаре у них у всех значение 105
а не 1 2 3 4 5 6 7 8 9 исходя из GetItemTypeId
Из-за того что ты перезаписываешь это UserData для подобранного предмета
Ты там делаешь x[a]=a, т.е. что бы ссослаться на индекс массива тебе нужно получить его номер, а его номер - это его же индекс... Зачем?
А после этого SetData(i,x[a]+1)
Хотя по сути это равно SetData(i,a+1)
Ааа...я понял, ты как раз этого и НЕ делаешь.
Ты пишешь set x[1]=1, и тут же после этого пишешь SetData(i,x[1+1]), т.е. ссылаешься на x[2], а оно у тебя будет записано только во время следующего такта цикла.
А еще ты обращаешься к переменоой, а значение ей задаёшь сразу после этого, т.е. при каждом новом ударе у тебя идёт "отхил" (через отрицательный урон) от того значения, которое было записано в момент предыдущей атаки...
Не понятно зачем тебе локейшн (точка).
На замахе далеко не уедешь. Надо отлавливать факт получения целью урона от авто-атаки героя, и работать уже с этим значением.
OVOgenez, это "Змеиная ловкость", самый НЕ скучный скилл из дефолтных, и на много интереснее того что предлагаешь ты:
Мультишот на 6 атак, как 3й Гирокоптера - пресная фигня;
Стандартные промахи - нон-стоп тема! хД
» WarCraft 3 / Как делать бумеранг?
» WarCraft 3 / Как делать заклинание Arctic Blast из доты
» WarCraft 3 / Золотая башня
» WarCraft 3 / Золотая башня
Берёшл башню, чекаешь кого она атакует, детектишь урон, даёшь золото.
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
Тип предмета 'I03D', это 1227895620, если отнять 1227895619 тотполцчаешь 1
Вот у тебя I03D=1
А переменная с индектом 1 = 'I03D'
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
И будут у тебя типы предметов от 1227895620 до 1227895724
При подборе предмета проверка его на принадлежность к этим 105 предметам.
Нахождение совпадения, и, соответственно, его номера в массиве.
Работа с найденным номером.
Всё.
» WarCraft 3 / Создание предмета через itemUserData
Ред. Extremator
» WarCraft 3 / Создание предмета через itemUserData
И уже с этими 37 делать всё что хочешь, т.к. номер имея ты и данные другие можно подтянуть.
Хотя тут надо чуть по другому на индекс напирать, но смысмыс в общем такой.
Но одно другого не отменяет вообще
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
Сначало предмет имеет значение 0 (видимо), цикл ему тут же делает 1...тут же делает 2...тут же 3...4...5...6...и так до 105, и только тогда отваливает от него.
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
Т.е. цикл отработает 105 раз и сделает следующее:
Записывает дату подобранного предмета как тело = это числа от 1 до 105, т.е. тут происходит перезапись сто раз.
Пишет в другую переменную с индексам тела цикла само значение тела цикла.
...всё
Разве не это значит "предмет у которого нет значения" ?
» WarCraft 3 / Создание предмета через itemUserData
Ред. Extremator
» WarCraft 3 / Создание предмета через itemUserData
А после этого SetData(i,x[a]+1)
Хотя по сути это равно SetData(i,a+1)
Ты пишешь set x[1]=1, и тут же после этого пишешь SetData(i,x[1+1]), т.е. ссылаешься на x[2], а оно у тебя будет записано только во время следующего такта цикла.
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / TriggersЫ - Выбор спеллов
» WarCraft 3 / Пак способностей - Skeleton Archer
» WarCraft 3 / Система атаки не рабоатет
» WarCraft 3 / Система атаки не рабоатет
Ред. Extremator
» WarCraft 3 / Пак способностей - Skeleton Archer
Мультишот на 6 атак, как 3й Гирокоптера - пресная фигня;
Стандартные промахи - нон-стоп тема! хД