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

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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
11
5 лет назад
0
Проверять хэндлы айтемов? Они же разные будут
0
32
5 лет назад
0
respect_gg, нет, там вешается на хендл юнита количество предметов определённого типа в ячейку StringHash("Kogti"), которая равна числу, но этот способ не рекомендуется использовать
0
11
5 лет назад
0
Bergi_Bear, а че нет? Я всегда так делал, проверял по Хэндлу Айтема и все работало
0
7
5 лет назад
Отредактирован PornoMishka
0
В чем проблема написать функцию подсчета итемов по их Id (циклом делается), а уже там делать условие. Не знаю уровень автора, поэтому напишу псевдокодом
Если КоличествоПредметов(u,'I000') >= 2 Тогда
	УдалитьИтем(u,'I000')
	УдалитьИтем(u,'I000')
	ДатьИтемЮниту(u,'I001')
КонецЕсли
u - юнит, с которым работаешь
Принятый ответ
0
4
5 лет назад
0
| Добавляешь функцию в шапку
| Принимает : юнита, 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
ну и так проверяешь
Загруженные файлы
1
26
5 лет назад
1
Загруженные файлы
0
23
5 лет назад
0
создаем абилку с 1 слот и вручаем герою. А потом уже 2 порядок предметы итог 7 слотов но не нашел как чтобы при фулл 6 слот не ругал. Учитивая если с пола может брать 7 итем и дропать всех. Но когда вручную 6 слот без начального слота то 1 слот останет и ругает что не хватает место! Баг древный но не нашли как обходить вроде уже было (нашли где то)
0
27
5 лет назад
Отредактирован MpW
0
это тема живет очень долго, автору похоже по барабану. ему все пишут и пишут....

мне вот интересно, в инвентаре действительно ли больше 6 слотов будет, как сказал DopaMine ? то есть можно больше 6 проверять слоты/? проверка то может обнаружить лежит ли там в 7 слоте например? то есть можна пробегать циклом по 7-12 слотам еще?
0
23
5 лет назад
0
Steal nerves, ни как!
Я братл основу сумка человек и подсунул в героя что у него итог 2 абилка 1 слотовый и 6 слотовый и главное порядок 1 слот а потом 6 слот чтобы в игре отобразил 6 слота. И можете брать 7 вешей. Но есть какой то система проверка 6 слотовый даже не берет!
0
26
5 лет назад
0
Пример не для мультиплеера + не учтен момент, когда невозможно собрать предмет, если инвентарь перегружен.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.