Опять какая-то непонятка...

Vaness

Пользователь
12 Ноя 2018
11
0
В общем, использую я barebones и решил я использовать OnPlayerLevelUp (для способности), но консоль жалуется, что получает нулевое значение. Как решить?
scripts\vscripts\gamemode.lua:112: in function <scripts\vscripts\gamemode.lua:111>
Script Runtime Error: scripts\vscripts\gamemode.lua:112: attempt to call method 'GetUnitName' (a nil value)

function GameMode:OnPlayerLevelUp(hero)

local HeroName = hero:GetUnitName()
if HeroName == "npc_dota_hero_antimage" then
return DecreaseManaInTime( hero )
end

end
Там сверху require со всеми слушателями есть, так что проблема не в этом.
 

muRLoc

Активный
25 Ноя 2018
83
23
не знаю что у тебя за barebones но в стандартном, эта функция выглядит так:
Код:
-- A player leveled up
function GameMode:OnPlayerLevelUp(keys)
  DebugPrint('[BAREBONES] OnPlayerLevelUp')
  DebugPrintTable(keys)

  local player = EntIndexToHScript(keys.player)
  local level = keys.level
  -- А вот строчка ниже , уже узнает нужного героя.
  local hero = PlayerResource:GetSelectedHeroEntity(player:GetPlayerID())

end
 

Vaness

Пользователь
12 Ноя 2018
11
0
не знаю что у тебя за barebones но в стандартном, эта функция выглядит так:
Код:
-- A player leveled up
function GameMode:OnPlayerLevelUp(keys)
  DebugPrint('[BAREBONES] OnPlayerLevelUp')
  DebugPrintTable(keys)

  local player = EntIndexToHScript(keys.player)
  local level = keys.level
  -- А вот строчка ниже , уже узнает нужного героя.
  local hero = PlayerResource:GetSelectedHeroEntity(player:GetPlayerID())

end
Воу, странно, у меня в gamemode вообще не было такой функции, вот и сам написал, но всё таки спасибо
 

muRLoc

Активный
25 Ноя 2018
83
23
Воу, странно, у меня в gamemode вообще не было такой функции, вот и сам написал, но всё таки спасибо
Потому что она находится в файлике events.lua , там все обработчики событий, в том числе и левел-апов у игроков.
 
Реклама: