Создал свою систему инвентаря, все работает нормально... Кроме самого легкого. Когда предмет выбрасывается из слота оружия, то должен создаваться предмет пустышка (пустой слот).
Но триггер совершенно не запускается, т.к там стоит условие: пользовательское значение манипулируемого предмета = 2. Я проверял, значение расставлено правильно, и когда я вылаживаю из слота у него действительно значение = 2. Но триггер не запускается.
Скрин:
Выкладывать скрины триггера инвентаря не вижу смысла, т.к он большой, и посмотреть можно скачав карту.
Карта:
Что не так, помогите -_-
Заранее спасибо.

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

Открыл твою карту. Ну да, у тебя там остальные действия пропускаются и триггер этот выключен, лол)
0
26
7 лет назад
Отредактирован Hate
0
событие теряет предмет не работает так как вы думаете. оно работает когда юнит умирает и роняет предметы которые падают при смерти.
0
22
7 лет назад
0
Т.е. текст не показывается, который у тебя через действие "123"?
0
26
7 лет назад
0
вот я так делал, периодически проверял все предметы на карте, и заменял соответствующими
library ItemReplacement initializer Init requires InjuredUnits

// globlas
    private timer MyTimer = CT
    
    
private void ItemAct(){
    item i = GetEnumItem()
    int id = GetItemTypeId(i), charges = GetItemCharges(i)
    real x = GetItemX(i), y = GetItemY(i)
        RemoveItem(i)
        if id == 'I004' {
            SetItemCharges(CreateItem('I00D', x, y), charges)
        }
        elseif id == 'I003' {
            SetItemCharges(CreateItem('I00M', x, y), charges)
        }
        elseif id == 'I005' {
            SetItemCharges(CreateItem('I00C', x, y), charges)
        }
        elseif id == 'I001' {
            SetItemCharges(CreateItem('I00B', x, y), charges)
        }
        elseif id == 'I00R' {
            AddVictim(1, x, y, GetRandomReal(0., 360.))
        }
        elseif id == 'I00S' {
            AddVictim(2, x, y, GetRandomReal(0., 360.))
        }
        elseif id == 'I00T' {
            AddVictim(3, x, y, GetRandomReal(0., 360.))
        }
    i = null
}    
    
private bool ItemFilter(){
int id = GetItemTypeId(GetFilterItem())
return (id == 'I004' or id == 'I003' or id == 'I005' or id == 'I001' or id == 'I00R' or id == 'I00S' or id == 'I00T')
}
    
private void ItemEnum(){
    EnumItemsInRect(bj_mapInitialPlayableArea, Filter(function ItemFilter), function ItemAct)
}

private void Init(){
    TimerStart(MyTimer, 0.1, true, function ItemEnum)
}

endlibrary
2
19
7 лет назад
Отредактирован KaneThaumaturge
2
Hate:
Если я просто ставлю событие "Теряет предмет", то работает когда предмет вылаживается. Может попробовать убрать условие, записывать предмет в переменную, а потом уже проверять его значение. И также я могу ссылаться на этот предмет, т.к проверял его значение, при событии теряет предмет.
KaneThaumaturge:
Hate:
Если я просто ставлю событие "Теряет предмет", то работает когда предмет вылаживается. Может попробовать убрать условие, записывать предмет в переменную, а потом уже проверять его значение. И также я могу ссылаться на этот предмет, т.к проверял его значение, при событии теряет предмет.
Эмм, я спутал триггер, черт, я был не прав.
2
22
7 лет назад
2
Hate:
событие теряет предмет не работает так как вы думаете. оно работает когда юнит умирает и роняет предметы которые падают при смерти.
Ничего подобного. Только что проверил.
2
19
7 лет назад
2
Proshel_Doty:
Сможешь помочь?
Proshel_Doty:
То робит, то не робит, я не понимаю
Все я понял...
0
22
7 лет назад
0
KaneThaumaturge:
Proshel_Doty:
Сможешь помочь?
Смогу)
Proshel_Doty:
То робит, то не робит, я не понимаю
Все я понял...
Так что было то?
По любому ошибка в условии)
2
19
7 лет назад
2
Т.к там событие теряет предмет, он конфликтовал с триггером инвенторя, я отключал триггер и выключал, но там была функция пропустить остальные действия, я забыл про это.
1
22
7 лет назад
1
Открыл твою карту. Ну да, у тебя там остальные действия пропускаются и триггер этот выключен, лол)
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.