Есть бовые когти, нужно сделать крафт из 2х таких предметов, боевые когти + боевые когти = n
я сделал 2 условия одинаковых но получаеться так, что при получениее 1х боевых когтей у игрока появляеться придмет n. Как сделать так что, при наличии только 2х когтей и рецепта герой получал предмет ?
я сделал 2 условия одинаковых но получаеться так, что при получениее 1х боевых когтей у игрока появляеться придмет n. Как сделать так что, при наличии только 2х когтей и рецепта герой получал предмет ?
Принятый ответ
В чем проблема написать функцию подсчета итемов по их Id (циклом делается), а уже там делать условие. Не знаю уровень автора, поэтому напишу псевдокодом
Если КоличествоПредметов(u,'I000') >= 2 Тогда
УдалитьИтем(u,'I000')
УдалитьИтем(u,'I000')
ДатьИтемЮниту(u,'I001')
КонецЕсли
u - юнит, с которым работаешь
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован DopaMine
Создаёшь сначала(не в триггерах) новую пременную, тип - Хэш-Таблица, название - hash(к примеру) - она понадобится для муи триггера.(Я пока только так придумал)
события: юнит получает предмет
инициализировать хэш-таблицу: set udg_hash = InitHashtable()
условие: полученныи предмет = боевые когти.
деиствия:
Если: У юнита есть боевые когти И У юнита есть боевые когти, то дать предмет.
Надо обязательно именно на количество условие ввести, а не на наличие.
Надо так:
Проверяем есть ли данный тип для сборки одинаковых предметов! Чтобы не нагружать циклом. (Для быстроты вы не заметите разницу)
После чего у данной героя имеет локальный хендл предмета равен 0
и проходим цикл игнорируя который подобрал то есть игнорировать хендл номера. Если тип данного предмета встретил прекрашаем работу цикла и ставляет истинна true и сохраняе локально данного предмета хендла. То есть на выходе у вас появится 2 разные хендла для удаление.
События:
Герой поднял предмет
Условие
Тип-Предмет есть в базе для сборки
Действие
Глобально создаем переменную handleID = 0 или локально как удобно
Сохраняем тип предмет в локально или глобально как хотите typeID
Делаем цикл от 0 до 5
если встретил такого типа предмета и не являет тот подобраный предмет
typeID == GetItemTypeID(item) and handleID != GetHandleID(item)
если условие соблюдено сохраняем переменную хендла и завершаем работу цикла
Проверяем handleID != 0 то выполняем удаление двух предметов, создание 1 предмета и вручаем героя
если глобально то handleID = 0 (Так если не локально)
ну и всякое
Возможно ли триггерно понять, что предмет попал во второй инвентарь? а после выложить его..
Нужны функции:
Определение перегруза, есть ли 7 предмет
Подсчет количества предметов при перегрузе
Функция дропа из фантомного рюкзака
Система будет хороша, для карт, где используются рецепты или предметы стакаются в заряда
Не нужно делать рунный дубликат
Не нужно париться в совобождении при выкладывании
Можно сделать рюкзак, для статных пассивных предметов , свойства из которого будут без триггеров влиять на самого героя
Отредактирован MpW
Отредактирован DracoL1ch
Отредактирован PornoMishka
| Принимает : юнита, id предмета который надо посчитать, требуемое кол-во этого предмета, id сборного предмета
function CheckItemCount takes unit u,integer id,integer count,integer add returns nothing
local integer i = 0
local integer s = 0
local item it
loop
exitwhen (i > 5 or s >= count)
if (GetItemTypeId(UnitItemInSlot(u,i)) == id) then
set s = s + 1
endif
set i = i + 1
endloop
if (s >= count) then
set i = 0
loop
set it = UnitItemInSlot(u,i)
if (GetItemTypeId(it) == id) then
call RemoveItem(it)
set s = s - 1
exitwhen (s <= 0)
endif
set i = i + 1
endloop
call UnitAddItem(u,CreateItem(add,GetUnitX(u),GetUnitY(u)))
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",u,"origin"))
endif
set it = null
endfunction
ну и так проверяешь
Отредактирован MpW
Я братл основу сумка человек и подсунул в героя что у него итог 2 абилка 1 слотовый и 6 слотовый и главное порядок 1 слот а потом 6 слот чтобы в игре отобразил 6 слота. И можете брать 7 вешей. Но есть какой то система проверка 6 слотовый даже не берет!