26

» WarCraft 3 / Как делать бумеранг?

Принятый ответ
Super cool, я тебе так обрисую в чем тут проблема. Сделать кастомный снаряд, который будет пролетать вперед задевая врагов и потом возвращаться - не сложно. Вся фишка в том как именно ты будешь это применять. Если это делается для конкретного скилла - не проблема, делаем всё как сказано и всё работает. Но ты же хочешь привязать это к авто-атаке здания, и при этом таких зданий у тебя может быть много, и они будут постоянно совершать атаки... Это неминуемо грозит довольно высокой нагрузкой (но что есть "высокая" в сравнении параметров железа).
Т.е. я предлагаю тебе отказаться от именно такой концепции реализации.
26

» WarCraft 3 / Как делать заклинание Arctic Blast из доты

МрачныйВорон, это Шива. При активации создаёт эффект разлетающихся в разные стороны атак Коатля, и каждого задетого должно разить фростновой единожды. Почему эффект, а не дамми-юнит - там что-то с производительностью было связанно, ибо их там 24+ сразу двигается. По механике аналогично ульте Веномансера. Там что-то типа периодической переборки всех юнитов вокруг кастера, с увеличивающимся радиусом, поэтому можно абузить а покрывать просто огромные расстояния этим уроном...
26

» WarCraft 3 / Золотая башня

Aifrediil:
Надо отлавливать весь урон, от нужного игрока.
А зачем именно весь и именно от игрока ?
26

» WarCraft 3 / Золотая башня

Так а что здесь сложного?
Берёшл башню, чекаешь кого она атакует, детектишь урон, даёшь золото.
26

» WarCraft 3 / Создание предмета через itemUserData

много чем, это Разные Предметы из Разных категорий из других Разрядов из Кампании и у них у всех отдельные значения
Ну так сгруппируй их
26

» WarCraft 3 / Создание предмета через itemUserData

привязывая данные к Предмету
А тебе не это надо? Что б по типу предметы получать номер массива
Тип предмета 'I03D', это 1227895620, если отнять 1227895619 тотполцчаешь 1
Вот у тебя I03D=1
А переменная с индектом 1 = 'I03D'
26

» WarCraft 3 / Создание предмета через itemUserData

Emafusail:
это всё числа, и 'I03D' тоже число.
да но оно возвращает 1227895620
а не значение 1
Ну так вычти из него 1227895619, и используй остаток как ИНДЕКС массива.
И будут у тебя типы предметов от 1227895620 до 1227895724
Emafusail:
ну хорошо, как ты это видишь?
Запись всех типов предметов в массив от 1 до 105
При подборе предмета проверка его на принадлежность к этим 105 предметам.
Нахождение совпадения, и, соответственно, его номера в массиве.
Работа с найденным номером.
Всё.
26

» WarCraft 3 / Создание предмета через itemUserData

Emafusail, еще раз пытаюсь тебе донести - это делать надо НЕ ТАК.
Ты, со стороны лог;ки движка, пишешь непонятно что непонятно и хочешь получать на выходе в непонятном месте весьма конкретный результат. Это так не работает. Тут нужно совсем по другому всё оформить.
26

» WarCraft 3 / Создание предмета через itemUserData

Emafusail:
при совпадении Типа конечно
Для этого нужно взять ТИП предмета (число в виде 'I03D'), и сравнить его сотвсеми из списка (а он у тебя длинной в 105), и при первомже совпадении вернуть его номер. Например это будет 37.
И уже с этими 37 делать всё что хочешь, т.к. номер имея ты и данные другие можно подтянуть.
Ну там еще можно лупить базу типа set t['I03D'] = 'I03D'
Хотя тут надо чуть по другому на индекс напирать, но смысмыс в общем такой.
Но одно другого не отменяет вообще

Emafusail, это всё числа, и 'I03D' тоже число.
26

» WarCraft 3 / Создание предмета через itemUserData

ДА! Но оно записывает Только Последний Индекс для всех предметов
SetItemUserData
не различает индекс 1 2 3 4 5 6 а записывает только Последний индекс т.е 105 Для всех предметов!
Не "только последний", а "все 105 поочереди с перезаписью".
Сначало предмет имеет значение 0 (видимо), цикл ему тут же делает 1...тут же делает 2...тут же 3...4...5...6...и так до 105, и только тогда отваливает от него.
26

» WarCraft 3 / Создание предмета через itemUserData

Вот смотри далее... Ты задаешь переменную для тела цикла, и считаешь её пока она не упрётся в лимит от инита = 105
Т.е. цикл отработает 105 раз и сделает следующее:
Записывает дату подобранного предмета как тело = это числа от 1 до 105, т.е. тут происходит перезапись сто раз.
Пишет в другую переменную с индексам тела цикла само значение тела цикла.
...всё
Что тут должно произойти? Кроме как дата предмета будет равно 105 после последней перезаписи, а переменная ItemUserDataMas[1...105] = 1...105

Emafusail:
здесь проверяю
Но здесь нигде нет проверки что UserData подобранного предмета равно 0.
Разве не это значит "предмет у которого нет значения" ?

меня интересует почему
call SetItemUserData(GetManipulatedItem(), Cnt_Item_Init)
устанавливает для всех предметов значение Item_Init_Number_End
а когда проверяю Значения в инвентаре у них у всех значение 105
а не 1 2 3 4 5 6 7 8 9 исходя из GetItemTypeId
Из-за того что ты перезаписываешь это UserData для подобранного предмета
26

» WarCraft 3 / Создание предмета через itemUserData

А где ты проверяешь чтоту предмета нет значений? Тут нет этого куска.
26

» WarCraft 3 / Создание предмета через itemUserData

Да, поэтому ставить его надо НЕ в конце.
Ты там делаешь x[a]=a, т.е. что бы ссослаться на индекс массива тебе нужно получить его номер, а его номер - это его же индекс... Зачем?
А после этого SetData(i,x[a]+1)
Хотя по сути это равно SetData(i,a+1)

Ааа...я понял, ты как раз этого и НЕ делаешь.
Ты пишешь set x[1]=1, и тут же после этого пишешь SetData(i,x[1+1]), т.е. ссылаешься на x[2], а оно у тебя будет записано только во время следующего такта цикла.
26

» WarCraft 3 / Создание предмета через itemUserData

А чего ты отладку вызываешь после цикла, а не внутри него? Раз ссылаешься на ту переменную, которая у тебя толкает сам цикл.
26

» WarCraft 3 / Пак способностей - Skeleton Archer

OVOgenez:
Варик мертв, анлаки, сейчас уже не 2007 год чтобы на серьезных щщах в редакторе залипать.
Переезжай в пираточек)
26

» WarCraft 3 / Система атаки не рабоатет

Хил делается через SetUnitState , а не через UnitDamageTarget
call SetUnitState( u , UNIT_STATE_LIFE, GetUnitState( u, UNIT_STATE_LIFE ) + heal)
Ну ты же видишь что он хочет сделать именно такой хил, который будет так же резиститься бронёй как и урон.
26

» WarCraft 3 / Система атаки не рабоатет

Принятый ответ
Тут важнее понять откуда берётся DamageFull
А еще ты обращаешься к переменоой, а значение ей задаёшь сразу после этого, т.е. при каждом новом ударе у тебя идёт "отхил" (через отрицательный урон) от того значения, которое было записано в момент предыдущей атаки...
Не понятно зачем тебе локейшн (точка).
На замахе далеко не уедешь. Надо отлавливать факт получения целью урона от авто-атаки героя, и работать уже с этим значением.
26

» WarCraft 3 / Пак способностей - Skeleton Archer

OVOgenez, это "Змеиная ловкость", самый НЕ скучный скилл из дефолтных, и на много интереснее того что предлагаешь ты:
Мультишот на 6 атак, как 3й Гирокоптера - пресная фигня;
Стандартные промахи - нон-стоп тема! хД