HasRoomForItem

  • Автор темы Автор темы Slavko
  • Дата начала Дата начала

Slavko

Продвинутый
22 Июн 2015
224
4
Не могу понять, что делает "HasRoomForItem". Кусок кода взят с вики и в нем заменено лишь событие, вызывающее функцию. В итоге при убийстве персонажа дота ругается: attempt to called method HasRoomForItem.
function GiveBlinkDagger (hero)
if hero:HasRoomForItem("item_blink", true, true) then
local dagger = CreateItem("item_blink", hero, hero)
dagger:SetPurchaseTime(0)
hero:AddItem(dagger)
end
end

function zet (xet)
local hero = EntIndexToHScript(xet.HeroKill)
GiveBlinkDagger(hero)
end

function Activate ()
ListenToGameEvent("dota_player_killed", zet, nil)
end
 
Последнее редактирование модератором:
Не работало, т.к. нужен индекс персонажа, а я брал ID. Решение:
function GiveBlinkDagger (hero)
if hero:HasRoomForItem("item_blink", true, true) then
local dagger = CreateItem("item_blink", hero, hero)
dagger:SetPurchaseTime(0)
hero:AddItem(dagger)
end
end

function zet (xet)
if not PlayerResource:HasSelectedHero( xet.PlayerID ) then
return
end
local hero = PlayerResource:GetSelectedHeroEntity( xet.PlayerID )
if hero == nil then
return
end
GiveBlinkDagger (hero)
end

function Activate ()
ListenToGameEvent("dota_player_used_ability", zet, nil)
end
 
Последнее редактирование модератором:
Реклама: