Здравствуйте, друзья!
Давненько искал систему объединения предметов в инвентаре, например, когда два зелья лечения становятся одним с количеством зарядов два. Нашёл несколько, но никак в огромной массе действий не разберусь, что там и зачем. Потому, если вас не затруднит, не могли бы мне на гуишных триггерах объяснить:
Давненько искал систему объединения предметов в инвентаре, например, когда два зелья лечения становятся одним с количеством зарядов два. Нашёл несколько, но никак в огромной массе действий не разберусь, что там и зачем. Потому, если вас не затруднит, не могли бы мне на гуишных триггерах объяснить:
- Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
- Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
- Как это можно сделать покороче для множества разных типов предметов?
- Как правильно реализовать в инвентаре 7 слот?
- А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
Принятый ответ
ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется 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) удаляете
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
вот еще одна система hh
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
7 слот это просто руны, при подборе руны герою вручается предмет оригинал, пры выбрасывании сменяется снова на руну, система такой сборки была на сайте, ей уже 100500 лет но там все нормально сделано и можно юзать для себя с минимумом изменений или вовсе без них.
Не думаю что мое предложение будет полезным поскольку в системах мало что смыслю это больше к джазеров.
Хотя зачем мне комменты, покажи просто на примере одного зелья.
Ред. 8gabriel8
P. S. Предмет собрался, но просто зачем это действие?
Про заряд это для того чтобы система действовала только на предметы с зарядом - зелья, камни призыва, свитки.
Ред. Maniac_91
Ред. MpW
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
вот еще одна система hh
Steal nerves, а что за системы CCS?
Hate: Я в JASS почти не разбираюсь, потому конкретно тыкнуть в проблему не готов. Но на гуи самый очевидный пример с custom script, если в главе кампании просто прописать в триггере custom script, то вместо загрузки главы появится чёрный экран и всё.
Ред. MpW