Вот смотри далее... Ты задаешь переменную для тела цикла, и считаешь её пока она не упрётся в лимит от инита = 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 для подобранного предмета
я отсюда его убрал чтобы он не установил данные а поставил в блок установки значений для всех предметов!
Вот смотри далее... Ты задаешь переменную для тела цикла, и считаешь её пока она не упрётся в лимит от инита = 105
Т.е. цикл отработает 105 раз и сделает следующее:
Записывает дату подобранного предмета как тело = это числа от 1 до 105, т.е. тут происходит перезапись сто раз.
Пишет в другую переменную с индексам тела цикла само значение тела цикла.
...всё
Что тут должно произойти? Кроме как дата предмета будет равно 105 после последней перезаписи, а переменная ItemUserDataMas[1...105] = 1...105
ДА! Но оно записывает Только Последний Индекс для всех предметов
SetItemUserData
не различает индекс 1 2 3 4 5 6 а записывает только Последний индекс т.е 105 Для всех предметов!
ItemUserDataMas[Cnt_Item_Init] это Целочисленная
Item_Init[Cnt_Item_Init] целочисленная
Предмет в инвентаре служит Только для Проверки
SetItemUserData()
а ItemUserDataMas[Cnt_Item_Init] это Значение которое проверяет SetItemUserData()
здесь проверяю
set Cnt_Item_Init=1
loop
exitwhen Cnt_Item_Init>Item_Init_Number_End
set ItemUserDataMas[Cnt_Item_Init] = Cnt_Item_Init
if ItemUserDataMas[Cnt_Item_Init] == Item_Init[Cnt_Item_Init] then
call SetItemUserData(GetManipulatedItem(), Cnt_Item_Init)
endif
//call Text(" == " + I2S( ItemUserDataMas[Cnt_Item_Init] ))
set Cnt_Item_Init = Cnt_Item_Init + 1
endloop
и здесь
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = UnitItemInSlot(GetManipulatingUnit(), Cnt_Inv)
set Cnt_Inv = Cnt_Inv + 1
call Text(" == " + I2S( GetItemUserData(ItemsInSlots[Cnt_Inv]) ))
endloop
устанавливает для всех предметов значение Item_Init_Number_End
а когда проверяю Значения в инвентаре у них у всех значение 105
а не 1 2 3 4 5 6 7 8 9 исходя из GetItemTypeId
Ты там делаешь x[a]=a, т.е. что бы ссослаться на индекс массива тебе нужно получить его номер, а его номер - это его же индекс... Зачем?
А после этого SetData(i,x[a]+1)
Хотя по сути это равно SetData(i,a+1)
без разницы какой индекс он вернет мне нужно Привязать
Item_Init[Cnt_Item_Init]
к
ItemUserDataMas[Cnt_Item_Init]
при этом не меняя значение Item_Init[Cnt_Item_Init]
чтобы ItemUserDataMas[Cnt_Item_Init] я мог использовать для других целей
Индекс тут не причем
set Cnt_Item_Init=1
loop
exitwhen Cnt_Item_Init>Item_Init_Number_End
set ItemUserDataMas[Cnt_Item_Init] = Cnt_Item_Init
if ItemUserDataMas[Cnt_Item_Init] == Item_Init[Cnt_Item_Init] then
call SetItemUserData(GetManipulatedItem(), Cnt_Item_Init)
endif
//call Text(" == " + I2S( ItemUserDataMas[Cnt_Item_Init] ))
set Cnt_Item_Init = Cnt_Item_Init + 1
endloop
вернет 0
знаю что проверить можно по GetItemTypeId(ItemsInSlots[Cnt_Inv])
но блок отвечающий за инвентарь не в цикле Cnt_Item_Init
но если поставить
call SetItemUserData(GetManipulatedItem(), Cnt_Item_Init)
внутри блока отвечающий за инвентарь он установит значение для только что полученного предмета
это тоже не вариант
нужно GetManipulatedItem() поставить в блоке Cnt_Item_Init чтобы он установил значение для всех предметов от 1 до 105 а когда герой подбирает этот предмет чтобы значение проверялось через ItemUserDataMas[Cnt_Item_Init]
но конвертировать Предмет к Целочисленной нельзя
call SetItemUserData(ItemsInSlots[Cnt_Inv], Cnt_Item_Init)
//это не вариант
if ItemUserDataMas[Cnt_Item_Init] == Item_Init[Cnt_Item_Init] then
//вообще не сработает та как Item_Init возвращает GetItemTypeId предмета а ItemUserDataMas[Cnt_Item_Init] это значение 1 2 3 и так до 105
как привязать SetItemUserData к предмету который вернет GetItemTypeId?
Я сделал следующим образом
Занес в переменную типа Массив Id юнита
занес в переменную Область в котором он должен создаваться
занес в переменную Время появления моба
и стартанул таймер, теперь я меняю значение переменной исходя из моих соображений
» WarCraft 3 / Создание предмета через itemUserData
» WarCraft 3 / Создание предмета через itemUserData
SetItemUserData
не различает индекс 1 2 3 4 5 6 а записывает только Последний индекс т.е 105 Для всех предметов!
Ред. Emafusail
» WarCraft 3 / Создание предмета через itemUserData
Item_Init[Cnt_Item_Init] целочисленная
Предмет в инвентаре служит Только для Проверки
SetItemUserData()
а ItemUserDataMas[Cnt_Item_Init] это Значение которое проверяет SetItemUserData()
а когда проверяю Значения в инвентаре у них у всех значение 105
а не 1 2 3 4 5 6 7 8 9 исходя из GetItemTypeId
» WarCraft 3 / Создание предмета через itemUserData
Item_Init[Cnt_Item_Init]
к
ItemUserDataMas[Cnt_Item_Init]
при этом не меняя значение Item_Init[Cnt_Item_Init]
чтобы ItemUserDataMas[Cnt_Item_Init] я мог использовать для других целей
Индекс тут не причем
Ред. Emafusail
» WarCraft 3 / Создание предмета через itemUserData
Ред. Emafusail
» WarCraft 3 / Создание предмета через itemUserData
но блок отвечающий за инвентарь не в цикле Cnt_Item_Init
call SetItemUserData(GetManipulatedItem(), Cnt_Item_Init)
внутри блока отвечающий за инвентарь он установит значение для только что полученного предмета
это тоже не вариант
но конвертировать Предмет к Целочисленной нельзя
» WarCraft 3 / TriggersЫ - Spawn Мобов
Занес в переменную типа Массив Id юнита
занес в переменную Область в котором он должен создаваться
занес в переменную Время появления моба
и стартанул таймер, теперь я меняю значение переменной исходя из моих соображений