Приветствую. Я с очередным вопросом. Герои могут использовать предметы, при этом уменьшая количество зарядов предметов. Существует событие, которое отлавливает применение предмета.
Вопрос: Как отследить момент, при котором предмет "испаряется" из инвентаря героя полностью, теряя при этом свой последний заряд (отслеживание предмета по его типу "Имеющие заряды" не помогает, так как не только они ими обладают)?

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

Сейчас не за компом. Но попробуй проверять при событий - юнит использует предмет. Проверяй сколько зарядов было. Вообще-то почти все события говорят нам не то, что случилось (произошло), а то что случится позже (обычно через 0 сек). Например, имеешь манипулирующий итем, который пропадет при нуле зарядов или станет зарядов меньше. Яркий пример, при событий юнит получает урон, там нам оповещают о уроне, который нанесут.
Проверяй кол-во зарядов у манипулирующего.
Если бы это было бы наоборот, то есть позже, нам бы тогда надо было бы проверять есть ли манипулирующий итем в инвентаре героя
0
19
7 лет назад
0
Похожие вопросы:

ответ
Zeuz, руна пустышка является предметом а значит хэндлом
надо просто не забывать обнулять переменные
можно ещё удалить её перед обнулением если так хочешь
утечки возникают только при криворукой работе с хэндлами
если так хотите избавится от утечек то лучше почитайте статьи вместо того чтобы строить костыльную меху
ответ
Заряды могут повышатся только триггерно, сами предметы не "складываются в стопочку", вот где ты их складываешь там и ставь им хп, есть функция SetWidgetLife.
Если для вас слишком сложно при получении предмета юнитом проверить что это за предмет, а так же наличие такого же предмета в инвентаре, а затем повысить кол-во зарядов и здоровья, то учите статьи...
ответ
datar1231, вот держи карту.
Когда будешь добавлять предмет, не забудь запретить его применение (в редакторе объектов: Нужно задействовать = Нет) и вообще удалить ему способность.
ответ
Steal nerves:
ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется item being manipulated. А юнит, который получает итем - Triggering Unit. Вы можете с помощью этой переменной итема узнать тип, сравнить. Потом циклом пробегаете по слотам (от 1 до 6), тут вся суть в одной команде триггерной (item in slot X, итем в слоте Х) и проверяете есть ли такой же итем (не забываем делать проверки, на то что этот предмет не равен item being manipulated и сравниваете не одинаковые ли типы). Если есть такой же (находите тот же тип что и item being manipulated), то от item being manipulated берете заряды и прибавляете к зарядам существующего, а потом item being manipulated удаляете. Недостаток: при заполненном инвентаре такая штука не будет работать.Не хватает свободного места.
код
цикл А от 1 до 6
if тип итема (item being manipulated) РАВНО тип итема (item in slot А) and item being manipulated НЕ РАВНО item in slot А then проверяете
set k = Charges remaining in ( item being manipulated) + Charges remaining in ( item in slot А) складываете заряды
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
ответ
Если колчество исполнений триггера (в котором складываются предметы) = 1, то вывести сообщение.

0
27
7 лет назад
Отредактирован MpW
0
Сейчас не за компом. Но попробуй проверять при событий - юнит использует предмет. Проверяй сколько зарядов было. Вообще-то почти все события говорят нам не то, что случилось (произошло), а то что случится позже (обычно через 0 сек). Например, имеешь манипулирующий итем, который пропадет при нуле зарядов или станет зарядов меньше. Яркий пример, при событий юнит получает урон, там нам оповещают о уроне, который нанесут.
Проверяй кол-во зарядов у манипулирующего.
Если бы это было бы наоборот, то есть позже, нам бы тогда надо было бы проверять есть ли манипулирующий итем в инвентаре героя
Принятый ответ
0
32
7 лет назад
0
Пушистый, есть событие - юнит использует предмет, так же есть проверка на кол-во зарядов.
2
29
7 лет назад
Отредактирован 16GB
2
Есть параметр. Может закончится. Если поставить Нет предмет не будет исчезать при 0 зарядах. А там уже сам проверяй и делай что надо.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.