логика такова
цикл от 1 до всех предметов в карте призван Установить для Каждого Item_Init[Cnt_Item_Init]
Значение взятое из SetItemUserData
для удобства занес эти Значения в Переменную типа Массив чтобы Оперировать с ними там где мне это нужно
и когда в инвентаре окажется Индекс этого предмета я буду знать что этот предмет мне нужен для Удаления
для этого есть функция
function F_H_Section_ReturnItem takes unit u, integer id returns nothing
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = UnitItemInSlot(u, Cnt_Inv)
if LoadBoolean(H, StringHash("H"), StringHash("RemoveItems")) then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
call RemoveItem(ItemsInSlots[Cnt_Inv])
else
if GetItemTypeId(ItemsInSlots[Cnt_Inv]) == id then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItem"), true)
call RemoveItem(ItemsInSlots[Cnt_Inv])
endif
endif
set Cnt_Inv = Cnt_Inv + 1
endloop
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = null
set Cnt_Inv = Cnt_Inv + 1
endloop
endfunction
достаточно одно SaveBoolean и готово
а дальше Создание предмета ПО Индексу расположенный в Item_Init
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
призван удалить Все предметы из инвентаря Без проверки GetItemTypeId
либо использовать вариант который написал nazarpunk:
тут уже мне решать
function F_Pick_Item takes nothing returns nothing
set Cnt_Item_Init = 1
loop
exitwhen Cnt_Item_Init > Item_Init_Number_End
call SaveBoolean(H, StringHash("H"), StringHash("ItemUserDataSave"), true)
call SaveItemHandle(H, StringHash("H"), StringHash("ItemUserData"), GetManipulatedItem())
if GetItemTypeId(GetManipulatedItem()) == Item_Init[Cnt_Item_Init] then
set ItemUserDataMas[ItemUserDataAmount] = Cnt_Item_Init
endif
set Cnt_Item_Init = Cnt_Item_Init + 1
endloop
call F_H_Section_ItemUserData()
А тебе не это надо? Что б по типу предметы получать номер массива
Тип предмета 'I03D', это 1227895620, если отнять 1227895619 тотполцчаешь 1
Вот у тебя I03D=1
А переменная с индектом 1 = 'I03D'
А тебе не это надо? Что б по типу предметы получать номер массива
Тип предмета 'I03D', это 1227895620, если отнять 1227895619 тотполцчаешь 1
Вот у тебя I03D=1
А переменная с индектом 1 = 'I03D'
хороший пример...но надо продумать в каком месте его поставить чтобы функция работала
логика такова
цикл от 1 до всех предметов в карте призван Установить для Каждого Item_Init[Cnt_Item_Init]
Значение взятое из SetItemUserData
для удобства занес эти Значения в Переменную типа Массив чтобы Оперировать с ними там где мне это нужно
и когда в инвентаре окажется Индекс этого предмета я буду знать что этот предмет мне нужен для Удаления
для этого есть функция
function F_H_Section_ReturnItem takes unit u, integer id returns nothing
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = UnitItemInSlot(u, Cnt_Inv)
if LoadBoolean(H, StringHash("H"), StringHash("RemoveItems")) then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
call RemoveItem(ItemsInSlots[Cnt_Inv])
else
if GetItemTypeId(ItemsInSlots[Cnt_Inv]) == id then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItem"), true)
call RemoveItem(ItemsInSlots[Cnt_Inv])
endif
endif
set Cnt_Inv = Cnt_Inv + 1
endloop
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = null
set Cnt_Inv = Cnt_Inv + 1
endloop
endfunction
достаточно одно SaveBoolean и готово
а дальше Создание предмета ПО Индексу расположенный в Item_Init
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
призван удалить Все предметы из инвентаря Без проверки GetItemTypeId
либо использовать вариант который написал nazarpunk:
тут уже мне решать
function F_Pick_Item takes nothing returns nothing
set Cnt_Item_Init = 1
loop
exitwhen Cnt_Item_Init > Item_Init_Number_End
call SaveBoolean(H, StringHash("H"), StringHash("ItemUserDataSave"), true)
call SaveItemHandle(H, StringHash("H"), StringHash("ItemUserData"), GetManipulatedItem())
if GetItemTypeId(GetManipulatedItem()) == Item_Init[Cnt_Item_Init] then
set ItemUserDataMas[ItemUserDataAmount] = Cnt_Item_Init
endif
set Cnt_Item_Init = Cnt_Item_Init + 1
endloop
call F_H_Section_ItemUserData()
Тип предмета 'I03D', это 1227895620, если отнять 1227895619 тотполцчаешь 1
Вот у тебя I03D=1
А переменная с индектом 1 = 'I03D'
а то и так есть Тяжелые функции которые хочу Имплементировать в карту сохраняя и подгружая Значения из разных Массивов
Отредактирован Emafusail
цикл от 1 до всех предметов в карте призван Установить для Каждого Item_Init[Cnt_Item_Init]
Значение взятое из SetItemUserData
для удобства занес эти Значения в Переменную типа Массив чтобы Оперировать с ними там где мне это нужно
и когда в инвентаре окажется Индекс этого предмета я буду знать что этот предмет мне нужен для Удаления
для этого есть функция
а дальше Создание предмета ПО Индексу расположенный в Item_Init
даже мне стало интересно на что он способен :)