Здравствуйте, друзья!
Давненько искал систему объединения предметов в инвентаре, например, когда два зелья лечения становятся одним с количеством зарядов два. Нашёл несколько, но никак в огромной массе действий не разберусь, что там и зачем. Потому, если вас не затруднит, не могли бы мне на гуишных триггерах объяснить:
  • Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
  • Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
  • Как это можно сделать покороче для множества разных типов предметов?
  • Как правильно реализовать в инвентаре 7 слот?
  • А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
Прошу объяснить именно на гуишных триггерах, так как надо для кампании, а кампании с JASS не очень дружат.

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

ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется 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
Загруженные файлы

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
7 лет назад
0
Это довольно примитивно, при получении предмета ищи в инвентаре предмет того же типа и с зарядами, если есть таковой, добавь к этому предмету кол-во зарядов предмета который поднял юнит и удали его.
7 слот это просто руны, при подборе руны герою вручается предмет оригинал, пры выбрасывании сменяется снова на руну, система такой сборки была на сайте, ей уже 100500 лет но там все нормально сделано и можно юзать для себя с минимумом изменений или вовсе без них.
0
23
7 лет назад
0
Если коротко и логично о разделении предметов по типу из двенадцати зелий в один слот 7 во второй 5 то это сделаем так: сделаем маленькую функия для нее можно даже кнопку или проще команду для чата а потом проверяем наличування предмета с определенным количеством зарядов и с помощь диалогового окна выводим возможные варианты разделить столькото на столькото столькото можно сделать команду для например определенного слота.
Не думаю что мое предложение будет полезным поскольку в системах мало что смыслю это больше к джазеров.
0
26
7 лет назад
0
Это как раз тот случай, когда в теории примерно представляю, что мне надо сделать, а на практике не соображу как)
0
23
7 лет назад
0
8gabriel8, Ну например подкинь систему соединения предметов которую ты рассматривал и я тебе комментарии к каждому действию припишу.
0
26
7 лет назад
0
FrigatPlay, я уж удалил их, может у тебя есть под рукой что-то, а то ту, которую хотел бы подкинуть, долго искать, да и разделения предметов там нет.
Хотя зачем мне комменты, покажи просто на примере одного зелья.
0
23
7 лет назад
0
8gabriel8, На вот тебе система но без разделения
Загруженные файлы
0
26
7 лет назад
Отредактирован 8gabriel8
0
Давай теперь разбирать. Событие-юнит получил предмет. Условие-зарядов в предмете больше 0. Действия-непонятно)
Точнее, понятно, что зачем-то герой выбрасывает предмет, но если это будет юнит с инвентарём, то чего ожидать, что предмет у него в инвентаре не соберётся?
P. S. Предмет собрался, но просто зачем это действие?
Загруженные файлы
0
23
7 лет назад
0
8gabriel8, Без этого действия система может глючить тем больее создавать новый предмет с зарядом новый+старый больее ефективно чем добавльять заряды вручную.
Про заряд это для того чтобы система действовала только на предметы с зарядом - зелья, камни призыва, свитки.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.