Есть бовые когти, нужно сделать крафт из 2х таких предметов, боевые когти + боевые когти = n
я сделал 2 условия одинаковых но получаеться так, что при получениее 1х боевых когтей у игрока появляеться придмет n. Как сделать так что, при наличии только 2х когтей и рецепта герой получал предмет ?

В чем проблема написать функцию подсчета итемов по их Id (циклом делается), а уже там делать условие. Не знаю уровень автора, поэтому напишу псевдокодом
Если КоличествоПредметов(u,'I000') >= 2 Тогда
	УдалитьИтем(u,'I000')
	УдалитьИтем(u,'I000')
	ДатьИтемЮниту(u,'I001')
КонецЕсли
u - юнит, с которым работаешь
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
11
Можно ввести переменную, отвечающую за количество таких предметов у юнита.
Создаёшь сначала(не в триггерах) новую пременную, тип - Хэш-Таблица, название - hash(к примеру) - она понадобится для муи триггера.(Я пока только так придумал)
события: юнит получает предмет
инициализировать хэш-таблицу: set udg_hash = InitHashtable()
условие: полученныи предмет = боевые когти.
деиствия:
local unit u = GetTriggerUnit()
local integer h = GetHandleId(u)
local integer KollichestvoKogtei =LoadInteger(udg_hash,h,StringHash("Kogti")) // Изначально здесь будет 0
call SaveInteger(udg_hash,h,StringHash(Kogti),KollichestvoKogtei+1) // Когда юнит подобрал когти, у него стала переменная равна 1. Когда подобрал вторые - стало 2
if KollichestvoKogtei == 2 then //Если двое когтеи имется, то:
	Удалить когти и рецепт(если надо) - UnitRemoveItem()
	Дать юниту новыи предмет - UnitAddItemByIdSwapped()
	call SaveInteger(udg_hash,h,StringHash("Kogti"), 0)
endif
У тебя получается так:
Если: У юнита есть боевые когти И У юнита есть боевые когти, то дать предмет.
Надо обязательно именно на количество условие ввести, а не на наличие.
24
DopaMine, хештаблица для решения этой задачи это лишнее, достаточно перебрать слоты и посмотреть что в них лежит.
11
if KollichestvoKogtei == 2 then Если двое когтеи имется, то:
Здесь кстати ошибка у меня, так как я после сохранения нового значения сравниваю со старым, которое загружено(
Надо так:
If LoadInteger(udg_hash,h,StringHash("Kogti")) == 2 then
prog:
DopaMine, хештаблица для решения этой задачи это лишнее, достаточно перебрать слоты и посмотреть что в них лежит.
Да, ты прав. А если у юнита 24 слота? Сработает?(Если добавить к примеру ещё 3 способности "Предметы" герою)
33
DopaMine, что ещё за нововведения в 24 слота, я что-то пропустил?
22
простой это! Узнаем тип предмета который герой поднял с пола.
Проверяем есть ли данный тип для сборки одинаковых предметов! Чтобы не нагружать циклом. (Для быстроты вы не заметите разницу)
После чего у данной героя имеет локальный хендл предмета равен 0
и проходим цикл игнорируя который подобрал то есть игнорировать хендл номера. Если тип данного предмета встретил прекрашаем работу цикла и ставляет истинна true и сохраняе локально данного предмета хендла. То есть на выходе у вас появится 2 разные хендла для удаление.
после чего если переменная не равна 0 то удаляем 2 предмета и очичаеш переменные а тип берет с базы и создает нужный предмет.
События:
Герой поднял предмет
Условие
Тип-Предмет есть в базе для сборки
Действие
Глобально создаем переменную handleID = 0 или локально как удобно
Сохраняем тип предмет в локально или глобально как хотите typeID
Делаем цикл от 0 до 5
если встретил такого типа предмета и не являет тот подобраный предмет
typeID == GetItemTypeID(item) and handleID != GetHandleID(item)
если условие соблюдено сохраняем переменную хендла и завершаем работу цикла
Проверяем handleID != 0 то выполняем удаление двух предметов, создание 1 предмета и вручаем героя
если глобально то handleID = 0 (Так если не локально)
ну и всякое
11
что ещё за нововведения в 24 слота, я что-то пропустил?
Если герою или юниту дать несколько способностеи "Предметы", у него фактически будет количество слотов = 6*Количество способности "Предметы". Отображаться всё равно будет 6 слотов, но когда герои будет подбирать предметы, они в итоге начнут падать в "невидимые" дополнительные слоты. И эти предметы соответственно нельзя будет выложить.
33
DopaMine, а это интересно.. а триггерно их можно будет дропнуть? если это действительно так, то это вполне интересная находка, таки образом можно решить струю проблему "подбор при полном инвентаре", когда надо подобрать 7 предмет и мы получали сообщение противной.. Это решалось через руны или проверка радиуса при клике предмета.. Не ужели я только 1 не знал об этом способе?
Возможно ли триггерно понять, что предмет попал во второй инвентарь? а после выложить его..
24
Я вот помню древний баг, когда при определенных манипуляциях "лишние" предметы проваливались в никуда при подборе, но "никуда" там получалось бесконечное, а не в виде фантомного инвентаря на сколько-то слотов...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.