А тебе не это надо? Что б по типу предметы получать номер массива
Тип предмета '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 / Создание предмета через 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й Гирокоптера - пресная фигня;
Стандартные промахи - нон-стоп тема! хД
» WarCraft 3 / Стаки орб эффектов
» WarCraft 3 / Как триггерно увеличить скорость атаки юниту
» WarCraft 3 / Стаки орб эффектов
Делаешь полностью триггерные аналоги этих механик (по возможности).
Переносишь все абилки юнитов (орбы) и предметов (тоже орбы) на основу ЯДа.
При попытке атаковать с одной из абилок или одним из предметов - отлавливаешь урон по жертве.
Когда жертва получает урон от ЯДа - проверяешь обидчика на все абилки и предметы, и тут же вызываешь реакцию на них: т.е. если есть башер - считаешь как там башить (шанс,урон); если есть сфера замедления - считаешь шанс, накладываешь дебафф; если есть вампиризм - считаешь сколько отхилить надо.
» WarCraft 3 / Как сделать repick
» WarCraft 3 / Рандомные герои для команд