Здравствуйте, друзья!
Давненько искал систему объединения предметов в инвентаре, например, когда два зелья лечения становятся одним с количеством зарядов два. Нашёл несколько, но никак в огромной массе действий не разберусь, что там и зачем. Потому, если вас не затруднит, не могли бы мне на гуишных триггерах объяснить:
  • Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
  • Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
  • Как это можно сделать покороче для множества разных типов предметов?
  • Как правильно реализовать в инвентаре 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
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, Без этого действия система может глючить тем больее создавать новый предмет с зарядом новый+старый больее ефективно чем добавльять заряды вручную.
Про заряд это для того чтобы система действовала только на предметы с зарядом - зелья, камни призыва, свитки.
0
26
7 лет назад
0
Всё равно как-то загадочно, но даже пусть так будет, а как предметы разделять?
0
23
7 лет назад
0
8gabriel8, Пробовал зделать по этой же системе но чтото не вяжетса друг с другом.
0
18
7 лет назад
Отредактирован Maniac_91
0
Можно дать юниту способность, у которой в целях есть предмет. Когда срабатывает способность, создать новый предмет, установить ему количество зарядов = количество зарядов цели способности (то есть старого предмета) минус (количество зарядов старого предмета /2), а потом делить количество зарядов цели способности на два и установить старому предмету это число зарядов.
0
23
7 лет назад
0
Maniac_91, Можеш зделать я и сам не против уже мозги кипят.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.