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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
27
prog:
Я вот помню древний баг, когда при определенных манипуляциях "лишние" предметы проваливались в никуда при подборе, но "никуда" там получалось бесконечное, а не в виде фантомного инвентаря на сколько-то слотов...
только я вот тоже помню такое делал. на бесконечный инвентарь это была идея. только не помню какое это действие, наверн на приказ поместить в другой слот

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

мне вот интересно, в инвентаре действительно ли больше 6 слотов будет, как сказал DopaMine ? то есть можно больше 6 проверять слоты/? проверка то может обнаружить лежит ли там в 7 слоте например? то есть можна пробегать циклом по 7-12 слотам еще?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.