HasRoomForItem

  • Автор темы Автор темы Slavko
  • Дата начала Дата начала
  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.

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
 
Последнее редактирование модератором:
Реклама: