Помимо возможности складывания предметов, я хотел бы сделать ограниченную вместимость предмета. А также я хочу сделать чтобы заряды увеличивались от другого предмета (типа в сферу осколки собираешься или ещё что)
Есть по этому варианту наработки?

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

Вы так не понятно разъясняете свои мысли. Сделать можно по-разному.
ограничить складывание зарядов от двух итемов в один слот. Пример максимум зарядов до 5.
зелье 1 заряд + зелье 1 заряд = зелье 2 заряда
если у зелья больше 5 зарядов, не складывать. Будет складываться в новый слот инвентаря. Есть и этот слот забьет, то складывать в новый.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Item-type of (Item being manipulated))) == "Предмет1")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
хочу сделать чтобы заряды увеличивались от другого предмета
Два предмета складываются в один. Например "шар 1" и "шар 2" = "шар 1" с 2 зарядами.
Вам достаточно добавить блок-схему условие-1 ИЛИ условие-2
можешь подобрать гриб-1, так можно подобрать гриб-2, главное чтобы один из них сработал.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Multiple Conditions Or - Any (Conditions) are true //позволяет вставить проверку нескольких условии. Или первый тип или второй тип. 
> --(Item-type of (Item being manipulated))) == "Предмет1")
> --(Item-type of (Item being manipulated))) == "Предмет2")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Multiple Conditions Or - Any (Conditions) are true
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет2")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
19
6 лет назад
1
Похожие вопросы:

ответ
В наработках есть такие системы.
ответ
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
ответ
Steal nerves:
ответы
1.(см. картинку) Это я так понял ячейки инвентаря, но integer означает целое число, я много раз пользовался целочисленными переменными. Как игра понимает что это относится к ячейкам инвентаря если в описании вовсе нет слов про предметы или заряды.
во-первых, есть у нас событие "юнит получает предмет". Есть переменные: Герой манипулирующим итемом, и манипулирующий итем. Не знаю откуда ты взял эту систему, но она очень сложная, я сразу не врубился. Можно в разы проще сделать. И увидел недостатки: типа складывает все итемы к юниту, а не подобранный прибавляется к имеющему. Это так задумывалось? во-вторых, циклы-то понимаешь? Там есть функция "Итем в слоте таком-то", которая вернет итем. То есть когда ты циклом (А) пробегаешь первый шаг, ты сравниваешь итем в первом слоте с итемами, находящих в других ячейках (А+В). Во втором шаге итем во-втором, в третьем в третьем слоте и так далее. Итак 5 шагов
  1. (см. картинку) То же самое непонятное условие с нулём, ведь система как раз складывает предметы с зарядами, а судя по условию не должна этого делать.
В Custom Value - хранит целое число, можно записать через триггеры любое дополнительное целое значение. Это есть у юнитов, и у предметов. Также можно с помощью триггеров узнать значение, сравнить и др. С этим можно делать разные хитрости (например 0 - нет, 1 - да. Пример, как узнать, что предмет кому-то принадлежит.: 0 - никому, 1 - красному, 2 - синему и др. Это как пример. Что означает в твоем примере CV = 0 я не знаю. Это системное что-то. Но Maniac_91 прав изначально равно нулю
Но тут нет ответа на вопрос куда что вставить чтоб ограничить заряды, или типы стакающихся предметов.
сравнением. Вставь внутрь второго цикла. Например, Если (заряды итема 1 + заряды итема 2) < 5, то делать действия, иначе ничего не делать. Но если у тебя много итемов, и у них разные ограничения, то нужна база данных
И почему от 1-до 5 значения если ячеек 6 там на одной из развилок в условиях указывается меньше 6-же и герои имеют 6 слотов.
потому что нумерация идет от 0 до 5. 0 - первый слот, 1 - второй слот, и др Если не ошибаюсь. Если честно ты кажись прав, просто не помню как в гуи должно. надо раскрыть гуи-щные функции и посмотреть. Как я вижу это задумка автора, во втором цикле номера ячеек складываются (А+В)

6
27
6 лет назад
Отредактирован MpW
6
Вы так не понятно разъясняете свои мысли. Сделать можно по-разному.
ограничить складывание зарядов от двух итемов в один слот. Пример максимум зарядов до 5.
зелье 1 заряд + зелье 1 заряд = зелье 2 заряда
если у зелья больше 5 зарядов, не складывать. Будет складываться в новый слот инвентаря. Есть и этот слот забьет, то складывать в новый.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Item-type of (Item being manipulated))) == "Предмет1")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
хочу сделать чтобы заряды увеличивались от другого предмета
Два предмета складываются в один. Например "шар 1" и "шар 2" = "шар 1" с 2 зарядами.
Вам достаточно добавить блок-схему условие-1 ИЛИ условие-2
можешь подобрать гриб-1, так можно подобрать гриб-2, главное чтобы один из них сработал.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Multiple Conditions Or - Any (Conditions) are true //позволяет вставить проверку нескольких условии. Или первый тип или второй тип. 
> --(Item-type of (Item being manipulated))) == "Предмет1")
> --(Item-type of (Item being manipulated))) == "Предмет2")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Multiple Conditions Or - Any (Conditions) are true
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет2")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
Принятый ответ
0
6
6 лет назад
0
Steal nerves:
Вы так не понятно разъясняете свои мысли. Сделать можно по-разному.
ограничить складывание зарядов от двух итемов в один слот. Пример максимум зарядов до 5.
зелье 1 заряд + зелье 1 заряд = зелье 2 заряда
если у зелья больше 5 зарядов, не складывать. Будет складываться в новый слот инвентаря. Есть и этот слот забьет, то складывать в новый.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Item-type of (Item being manipulated))) == "Предмет1")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
хочу сделать чтобы заряды увеличивались от другого предмета
Два предмета складываются в один. Например "шар 1" и "шар 2" = "шар 1" с 2 зарядами.
Вам достаточно добавить блок-схему условие-1 ИЛИ условие-2
можешь подобрать гриб-1, так можно подобрать гриб-2, главное чтобы один из них сработал.
> ??Событие:??
> -Боевая единица - A unit Получает предмет 
> ??Условие:??
> -(Multiple Conditions Or - Any (Conditions) are true //позволяет вставить проверку нескольких условии. Или первый тип или второй тип. 
> --(Item-type of (Item being manipulated))) == "Предмет1")
> --(Item-type of (Item being manipulated))) == "Предмет2")
> ??Действие:??
> -Set "переменная Целочисленная 1" = 0 //кол-во итемов одного типа в инвентаре
> -Set "переменная Целочисленная 2" = 0 //кол-во общих зарядов
> -Set "переменная Целочисленная 3" = 0 //номер массива
> -For each (Integer A) from 1 to 6, fo (Actions)
> --Цикл - действия:
> ---If\Then\Else, multiple function
> ----Если - условие:
> -----(Multiple Conditions Or - Any (Conditions) are true
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет1")
> ------(Item type of (Item carried by(Hero manipulating item) in slot (Integer A))) равно "Предмет2")
> -----(Charges remaining in (Item carried by(Hero manipulating item) in slot (Integer A))) меньше 5)
> ----То - Действие:
> -----Set "переменная Целочисленная 1" = (Set "переменная Целочисленная 1" + 1)
> -----Set "переменная Целочисленная 2" = (Set "переменная Целочисленная 2" + Charges remaining in(Item carried by(Hero manipulating item) in slot (Integer A)))
> -----Set "переменная Целочисленная 3" = Integer A
> - If\Then\Else, multiple function
> -- Если - условие:
> --- ("переменная Целочисленная 1" больше 1)
> --То - Действие:
> --- If\Then\Else, multiple function
> ---- Если - условие:
> ----- ("переменная Целочисленная 2" больше 5)
> ----То - Действие:
> ------ Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to (5) //первому перекидываем 5 зарядов
> ------ Предмет - Set Charges remaining in (Item being manipulated) to ("переменная Целочисленная 2"- 5) //оставшиеся заряды перебрасываем второму "подобранному" итему
> ---- Иначе - Действие:
> -----Предмет - Set Charges remaining in (Item carried by(Hero manipulating item) in slot ("переменная Целочисленная 3") to ("переменная Целочисленная 2") //все заряды отдаем первому
> -----Предмет - Remove (Item being manipulated) //а подобранный итем удаляем, словно его и не было
Я понял примерно суть триггера, но во время теста всё пошло по кхм...
Функция с ограничением зарядов просто удаляет предметы, которые похожи на предмет в инвентаре.
Функция с зарядами от другого предмета вообще творит вакханалию.
Или же функции нужно вставлять в готовый триггер из ссылке, что я указал?
0
27
6 лет назад
Отредактирован MpW
0
примеры тебе скинул.
мне второй вариант не понятен. смотри у тебя есть два типа разных. осколок 1 и осколок 2. просто не понятно какому типу зачислять чарды, если будут несколько. И поэтому зачисляю первому имеющему итему (и не важно, будь это тип 1 или тип 2).
Загруженные файлы
0
6
6 лет назад
0
Steal nerves:
примеры тебе скинул.
мне второй вариант не понятен. смотри у тебя есть два типа разных. осколок 1 и осколок 2. просто не понятно какому типу зачислять чарды, если будут несколько. И поэтому зачисляю первому имеющему итему (и не важно, будь это тип 1 или тип 2).
Ну смотри. Эту схему я видел в Undead assault 2
В инвентаре можно носить до 3 магазинов для автомата, но если взять собой кейс, в него может вместиться 10. Получается в Кейс складывается 10 зарядов, а магазины могут только до 3 зарядов складываться.
А, всё, разобрался.Эта механика делается ещё проще. Спасибо!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.