Например, есть у меня "когти - 1", вторые "когти - 1" взять не могу, но если улучшу "когти - 1" до "когтей - 2", первые все равно не смогу взять
`function Trig_ItemsDropen_Actions2 takes nothing returns nothing
unit n = GetManipulatingUnit()
integer index = 0
loop
if (UnitItemInSlot(n, index) != null)
if UnitInventoryCount(n) >= 2
UnitRemoveItem(n, GetItemOfTypeFromUnitBJ(GetManipulatingUnit(), 'ratf'))
endif
endif

set index = index + 1
exitwhen index >= 6
endloop
n = null
endfunction
function InitTrig_ItemsDropen2 takes nothing returns nothing
set gg_trg_ItemsDropen2 = CreateTrigger( )
integer index
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_ItemsDropen2, Player(index),EVENT_PLAYER_UNIT_PICKUP_ITEM, null)
set index = index + 1
exitwhen index == 12
endloop
call TriggerAddAction( gg_trg_ItemsDropen2, function Trig_ItemsDropen_Actions2 )
endfunction`
Вот что смог и то нифига не понял как-это работает. Может кто наработку поправить?

Для того что бы реализовать это в каком-либо виде, тебе нужно полностью проверять весь инвентарь юнита и по результатам проверки делать нужные действия.
Если речь идёт про конкретный предмет из РО, то здесь можно просто брать его тип в момент подбора и проверять все слоты на наличие совпадений (игнорируя слот в котором лежит только что подобранный предмет). При совпадении - выбрасывать то что подобрал.
Такая же проверка, но уже для ряда аналогов будет выглядеть немного иначе - нужно проверять не тип предмета, а что-то ещё... Как вариант, можно выставить им некоторый одинаковый уровень в РО, и проверять если он больше 200, то... а здесь уже твои аналоги с совпадающими уровнями - все Когти это 201, все щиты это 202, все шлемы/маски/каски - это 203, и т.д.
Как вариант без и использования уровней - написать небольшую БД, либо юзать часть рав-кода для фильрации, например все предметы рав-код которых начинается с 'IX__' и имеющие третью одинаковую цифру будут условно аналогами друг друга:
'IX01' = 'IX02' = 'IX03' - это всё когти
'IX14' = 'IX15' = 'IX16' - это всё сапоги
'IX77' = 'IX78' = 'IX79' - это всё щиты
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
В blizzard.j есть нативка, можно там её код подсмотреть для своей реализации, или её саму и использовать
function UnitHasItemOfTypeBJ takes unit whichUnit, integer itemId returns boolean
26
Для того что бы реализовать это в каком-либо виде, тебе нужно полностью проверять весь инвентарь юнита и по результатам проверки делать нужные действия.
Если речь идёт про конкретный предмет из РО, то здесь можно просто брать его тип в момент подбора и проверять все слоты на наличие совпадений (игнорируя слот в котором лежит только что подобранный предмет). При совпадении - выбрасывать то что подобрал.
Такая же проверка, но уже для ряда аналогов будет выглядеть немного иначе - нужно проверять не тип предмета, а что-то ещё... Как вариант, можно выставить им некоторый одинаковый уровень в РО, и проверять если он больше 200, то... а здесь уже твои аналоги с совпадающими уровнями - все Когти это 201, все щиты это 202, все шлемы/маски/каски - это 203, и т.д.
Как вариант без и использования уровней - написать небольшую БД, либо юзать часть рав-кода для фильрации, например все предметы рав-код которых начинается с 'IX__' и имеющие третью одинаковую цифру будут условно аналогами друг друга:
'IX01' = 'IX02' = 'IX03' - это всё когти
'IX14' = 'IX15' = 'IX16' - это всё сапоги
'IX77' = 'IX78' = 'IX79' - это всё щиты
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.