Мне нужно сделать эту проверку в шапке редактора триггеров, чтобы в дальнейшем в триггере со спеллом можно было писать так:
if (SlotItem(caster,'Item') then
KillUnit(caster)
endif
Что нужно написать в шапке, чтоб мой способ работал?

Принятый ответ

native UnitHasItem takes unit whichUnit, item whichItem returns boolean
function UnitHasItemOfTypeBJ takes unit whichUnit, integer itemId returns boolean
    return GetInventoryIndexOfItemTypeBJ(whichUnit, itemId) > 0
endfunction

// Данная функция утечна, так как indexItem не обнуляется
function GetInventoryIndexOfItemTypeBJ takes unit whichUnit, integer itemId returns integer
    local integer index
    local item    indexItem

    set index = 0
    loop
        set indexItem = UnitItemInSlot(whichUnit, index)
        if (indexItem != null) and (GetItemTypeId(indexItem) == itemId) then
            return index + 1
        endif

        set index = index + 1
        exitwhen index >= bj_MAX_INVENTORY
    endloop
    return 0
endfunction
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
    local integer index = 0
    loop
        if GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId then
            return true
        endif
        set index = index + 1
        exitwhen index == bj_MAX_INVENTORY
    endloop
    return false
endfunction

// Можно ещё так написать
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
    local integer index = 0
    loop
        exitwhen GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId
        set index = index + 1
        exitwhen index == bj_MAX_INVENTORY
    endloop
    return index < bj_MAX_INVENTORY
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
28
6 лет назад
Отредактирован PT153
0
native UnitHasItem takes unit whichUnit, item whichItem returns boolean
function UnitHasItemOfTypeBJ takes unit whichUnit, integer itemId returns boolean
    return GetInventoryIndexOfItemTypeBJ(whichUnit, itemId) > 0
endfunction

// Данная функция утечна, так как indexItem не обнуляется
function GetInventoryIndexOfItemTypeBJ takes unit whichUnit, integer itemId returns integer
    local integer index
    local item    indexItem

    set index = 0
    loop
        set indexItem = UnitItemInSlot(whichUnit, index)
        if (indexItem != null) and (GetItemTypeId(indexItem) == itemId) then
            return index + 1
        endif

        set index = index + 1
        exitwhen index >= bj_MAX_INVENTORY
    endloop
    return 0
endfunction
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
    local integer index = 0
    loop
        if GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId then
            return true
        endif
        set index = index + 1
        exitwhen index == bj_MAX_INVENTORY
    endloop
    return false
endfunction

// Можно ещё так написать
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
    local integer index = 0
    loop
        exitwhen GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId
        set index = index + 1
        exitwhen index == bj_MAX_INVENTORY
    endloop
    return index < bj_MAX_INVENTORY
endfunction
Принятый ответ
0
10
6 лет назад
Отредактирован Skolz
0
function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
local integer index = 0
loop
if GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId then
return true
endif
set index = index + 1
exitwhen index == bj_MAX_INVENTORY
endloop
return false
endfunction
PT153, вот это нужно просто в шапку кинуть, указать кастера и всё?
0
28
6 лет назад
0
Кидаешь одну из версий UnitHasItemOfType в шапку, когда нужно будет использовать пишешь
if UnitHasItemOfType(caster,'Item') then
    // Нужные действия.
endif
0
10
6 лет назад
0
PT153, ладно, спасиб
Чтобы оставить комментарий, пожалуйста, войдите на сайт.