Можно ли удалить предметы определенного типа, в указанной области. К примеру мне надо удалить руны с определенной зоны, можно это устроить?

Raised, а зачем ты сначала добавляешь в массив с помощью EnumItemsInRect, а потом идёшь по нему циклом?
library RegionRemoveItemType

    globals
        private integer CurrentType
    endglobals

    function RemoveItemOfType takes nothing returns nothing
        if GetItemTypeId(GetFilterItem()) == CurrentType then
            call RemoveItem(GetFilterItem())
        endif
    endfunction


    function RemoveItemOfTypeInRect takes rect r, integer iT returns nothing
        set CurrentType = iT
        call EnumItemsInRect(r, function RemoveItemOfType, null) // да, в filter можно передавать функции, которые ничего не возвращают.
    endfunction
    
endlibrary

Да и вариант 8gabriel8 нормальный, как раз для человека, который не разбирается в Jass.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
Absolute, поддерживаю UrsaBoss, вроде бы ты за серьёзную вещь взялся, но вопросы такие, что просто подумать, порыться в редакторе или вбить вопрос в поисковик. Сюда обращаются, когда уже все эти варианты испробованы.

Вот скрин из карты, где делал перемещение предметов из изолированной локации вслед за героем. Чтобы отсеять лишь нужные предметы, ставь действие If/Then/Else.
Загруженные файлы
17
8gabriel8:
Absolute, поддерживаю UrsaBoss, вроде бы ты за серьёзную вещь взялся, но вопросы такие, что просто подумать, порыться в редакторе или вбить вопрос в поисковик. Сюда обращаются, когда уже все эти варианты испробованы.

Вот скрин из карты, где делал перемещение предметов из изолированной локации вслед за героем. Чтобы отсеять лишь нужные предметы, ставь действие If/Then/Else.
Но я не смогу сделать этого с предметом определенного типа, удалятся все предметы?
21
Предметы могут быть следующих типов:

ITEM_TYPE_ANY
ITEM_TYPE_ARTIFACT
ITEM_TYPE_CAMPAIGN
ITEM_TYPE_CHARGED
ITEM_TYPE_MISCELLANEOUS
ITEM_TYPE_PERMANENT
ITEM_TYPE_POWERUP
ITEM_TYPE_PURCHASABLE
ITEM_TYPE_TOME
ITEM_TYPE_UNKNOWN

При конвертации регионов в рект, к названию региона добавляется префикс gg_rct_Название_Региона (пустые места между словами заменяются "_" (нижним подчеркиванием)).

Избегай кириллических символов в названиях регионов. Потому что они конвертируются в это. Как именно - думай сам, если оно вообще тебе нужно.
То что тебе нужно делается с помощью следующей команды/функции:
    call rRemoveItemType(название твоего региона,тип предмета из списка выше)
Пример: prntscr.com/kc5cot
Алсо стоит сказать что технически регион - это группа ректов.
code
library RegionRemoveItemType

    globals
        private item array ITEMS
        private integer i = 0
    endglobals


    function rRemoveItemTypeAction takes nothing returns nothing
        set ITEMS[i] = GetEnumItem()
        set i = i+1
    endfunction


    function rRemoveItemType takes rect r, itemtype iT returns nothing
        call EnumItemsInRect(r,null,function rRemoveItemTypeAction)
        
        loop
            if GetItemType(ITEMS[i]) == iT then
                call RemoveItem(ITEMS[i])
                set ITEMS[i] = null
            else
                set ITEMS[i] = null
            endif
        exitwhen i == 0
            set i = i-1
        endloop
    endfunction
    
endlibrary
26
Ну вот опять
Но я не смогу сделать этого с предметом определенного типа, удалятся все предметы?
Чтобы отсеять лишь нужные предметы, ставь действие If/Then/Else.
Загруженные файлы
21
Absolute, и да, что ты подразумеваешь под типом предметов? itemtype или itemtypeid (равкод)?
17
Raised:
Absolute, и да, что ты подразумеваешь под типом предметов? itemtype или itemtypeid (равкод)?
Конкретный предмет, например -руна исцеления- , удалить тип предметов -руна исцеления- значит удалить все руны исцеления с выбранной зоны
8gabriel8:
Ну вот опять
Но я не смогу сделать этого с предметом определенного типа, удалятся все предметы?
Чтобы отсеять лишь нужные предметы, ставь действие If/Then/Else.
Не могу разобраться, у меня руссификатор стоит, но как бы я не вертел функцию с предметом, там никак не выходило выбрать конкретный тип предметов, если они не у героя
21
Понял. Тогда тебе нужно это:
 call rRemoveItemType(название твоего региона,равкод предмета)
code
library RegionRemoveItemType

    globals
        private item array ITEMS
        private integer i = 0
    endglobals


    function rRemoveItemTypeAction takes nothing returns nothing
        set ITEMS[i] = GetEnumItem()
        set i = i+1
    endfunction


    function rRemoveItemType takes rect r, integer iT returns nothing
        call EnumItemsInRect(r,null,function rRemoveItemTypeAction)
        
        loop
            if GetItemTypeId(ITEMS[i]) == iT then
                call RemoveItem(ITEMS[i])
                set ITEMS[i] = null
            else
                set ITEMS[i] = null
            endif
        exitwhen i == 0
            set i = i-1
        endloop
    endfunction
    
endlibrary

В топку руссификатор.
28
Raised, а зачем ты сначала добавляешь в массив с помощью EnumItemsInRect, а потом идёшь по нему циклом?
library RegionRemoveItemType

    globals
        private integer CurrentType
    endglobals

    function RemoveItemOfType takes nothing returns nothing
        if GetItemTypeId(GetFilterItem()) == CurrentType then
            call RemoveItem(GetFilterItem())
        endif
    endfunction


    function RemoveItemOfTypeInRect takes rect r, integer iT returns nothing
        set CurrentType = iT
        call EnumItemsInRect(r, function RemoveItemOfType, null) // да, в filter можно передавать функции, которые ничего не возвращают.
    endfunction
    
endlibrary

Да и вариант 8gabriel8 нормальный, как раз для человека, который не разбирается в Jass.
Принятый ответ
21
PT153, теперь я сам бы хотел знать. Думаю - потому что забыл как enum работает.
26
Absolute:
Не могу разобраться, у меня руссификатор стоит
Тогда понятно почему такие вопросы, в русификаторе перевод не несёт должного понимания сути. Вот карта с примером триггера xgm.guru/files/100/211841/comments/390977/1.w3x, чтобы посмотрел с русификатором.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.