Сделал триггерный предмет, который перерождает героя после смерти с 1 хп и неуязвимостью на несколько секунд, но предмет не работает. Предмет я сделал на основе ульты минотавра. Как правильно сделать?
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Андреич:
Все карты кампании с нестандартными обьектами надо запускать в игре через "Доп. Кампании".Хоть в JNGP, хоть в просто WE.
ответ
GearOfRage, в данном случае надо тестировать кампанию, а не саму карту. Открываешь через игру доп кампанию и играешь нужную миссию (для этого надо сделать все миссии временно доступными)
ответ
Виджитайзер норм, если правильно все делать. Ultimate Slk Opt быстрый, но надо держать ухо в остро, то будет карта с иероглифами.
AntiMage:
quq_CCCP, виджитайзер слишком медленный, Ultimate opt непонятный, +они оба ведь защишают карту, мне этого ненужно тоесть я хочу чтоб мои обьектные данные о войсках и.т.д обратно восстановились когда угодно, чтоб world editor мог открывать
А нах юному IceFrog'у понадобилась слк оптимизация? Тем более виджитайзер ничего не защищает, но чтобы работать с данными карты в редакторе достаточно распаковать их из карты в папку с варом и все, странно что у вас нет других проблем о которых бы следовало спросить на форуме.
ответ
логика такова
цикл от 1 до всех предметов в карте призван Установить для Каждого Item_Init[Cnt_Item_Init]
Значение взятое из SetItemUserData
для удобства занес эти Значения в Переменную типа Массив чтобы Оперировать с ними там где мне это нужно
и когда в инвентаре окажется Индекс этого предмета я буду знать что этот предмет мне нужен для Удаления
для этого есть функция
function F_H_Section_ReturnItem takes unit u, integer id returns nothing
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = UnitItemInSlot(u, Cnt_Inv)
if LoadBoolean(H, StringHash("H"), StringHash("RemoveItems")) then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
call RemoveItem(ItemsInSlots[Cnt_Inv])
else
if GetItemTypeId(ItemsInSlots[Cnt_Inv]) == id then
call SaveBoolean(H, StringHash("H"), StringHash("RemoveItem"), true)
call RemoveItem(ItemsInSlots[Cnt_Inv])
endif
endif
set Cnt_Inv = Cnt_Inv + 1
endloop
set Cnt_Inv = 0
loop
exitwhen Cnt_Inv > Min_Inv
set ItemsInSlots[Cnt_Inv] = null
set Cnt_Inv = Cnt_Inv + 1
endloop
endfunction
достаточно одно SaveBoolean и готово
а дальше Создание предмета ПО Индексу расположенный в Item_Init

call SaveBoolean(H, StringHash("H"), StringHash("RemoveItems"), false)
призван удалить Все предметы из инвентаря Без проверки GetItemTypeId

либо использовать вариант который написал nazarpunk:

тут уже мне решать

function F_Pick_Item takes nothing returns nothing

set Cnt_Item_Init = 1
loop
exitwhen Cnt_Item_Init > Item_Init_Number_End
call SaveBoolean(H, StringHash("H"), StringHash("ItemUserDataSave"), true)
call SaveItemHandle(H, StringHash("H"), StringHash("ItemUserData"), GetManipulatedItem())

if GetItemTypeId(GetManipulatedItem()) == Item_Init[Cnt_Item_Init] then
set ItemUserDataMas[ItemUserDataAmount] = Cnt_Item_Init
endif

set Cnt_Item_Init = Cnt_Item_Init + 1
endloop

call F_H_Section_ItemUserData()

Я походу нашёл где ChatGPT обучается кодить...
я похож на ИИ?
даже мне стало интересно на что он способен :)

function F_H_Section_ItemUserData takes nothing returns integer
local item ItemUserData = LoadItemHandle(H, StringHash("H"), StringHash("ItemUserData"))
local integer I
set I = GetItemUserData(ItemUserData)
if LoadBoolean(H, StringHash("H"), StringHash("ItemUserDataSave")) then
call SaveInteger(H, StringHash("H"), StringHash("GetItemUserData"), I)
call SaveItemHandle(H, StringHash("H"), StringHash("ItemUserDataHandle"), ItemUserData)
call SaveInteger(H, StringHash("H"), StringHash("UserDataPlayerId"), GetPlayerId(GetItemPlayer(ItemUserData)))
call SaveInteger(H, StringHash("H"), StringHash("UserDataItemId"), GetItemTypeId(ItemUserData))
call SaveInteger(H, StringHash("H"), StringHash("ItemLevel"), GetItemLevel(ItemUserData))
call SaveBoolean(H, StringHash("H"), StringHash("ItemUserDataSave"), false)
endif
if ItemUserDataAmount < Size then
call SetItemUserData(ItemUserData, ItemUserDataMas[ItemUserDataAmount])
call SaveInteger(H, StringHash("H"), StringHash("ItemUserDataAmount")+ItemUserDataAmount, ItemUserDataMas[ItemUserDataAmount])
if LoadBoolean(H, StringHash("H"), StringHash("ItemUserDataIndicator")) then
set HRed[2] = GetRandomReal(0, 255)
set HGreen[2] = GetRandomReal(0, 255)
set HBlue[2] = GetRandomReal(0, 255)
call ItemAddIndicatorBJ(ItemUserData, HRed[2], HGreen[2], HBlue[2], 0)
endif
return I
else
call Text("|cFFFF0000ERROR: F_H_Section_ItemUserData - clear bad key|r")
set ItemUserDataAmount = Size - 1
return ItemUserDataAmount
endif
endfunction
constant integer Size = JASS_MAX_ARRAY_SIZE

спасибо за ответы, останусь на этом примере пожалуй

28
Предмет не работает в смысле не перерождает или не устанавливает здоровье и неуязвимость? Если второе, значит попробуй убрать условия, если не сработает, значит ищи другое событие, если сработает, то поменяй условия
23
Скорее всего, активация абилки у ульты минотавра или анха реинкарнации не отслеживается событием использования предмета, потому что абилка пассивная
Попробуй через событие смерти юнита и действия воскресить мгновенно героя, а если событие смерти тоже не ловится, поставь периодический триггер, который будет каждые 0,5 сек чекать здоровье героя
25
Уууу тут много ошибок в понимании, какие события будут вызваны и что будет работать дальше и с каким условием. Не все способности, что ты наложишь на предметы, будут работать корректно как ты хочешь. Как и отлавливать их не всегда сможешь так как предполагаешь. Поэтому проверяй, что событие в целом работает (выводи в чат результат).
Лучше сделай перерождение свое триггерное.
Событие: юнит умирает
Условие: Триггерный юнит имеет предмет Талисман
Действия: Возродить героя, установить хп 1, сделать неуязвимым.
Ответы (2)
10
konvan5, так работает, но тогда враг будет получать опыт за убийство героя.
25
human1, тоже аргумент, потестил другие события, что может словить воскрешение предметом?
Типа использует абилку к примеру тестануть
Чтобы оставить комментарий, пожалуйста, войдите на сайт.