В настоящее время я разрабатываю мод DOTA2, используя Lua API. Я обнаружил, что значение null
по умолчанию в lua было nil
.
. После небольшого программирования я получаю эту ошибку:
Script Runtime Error: ...\scripts\vscripts\addon_game_mode.lua:71: Can't call CBaseEntity:GetHealth on an object of type [none]
I попытался проверить, было ли значение равным none
, но none
, кажется, не существует в Lua ...
Я читал в Интернете, что, возможно, было связано с тем, что DOTA запрограммирован в C ++ или что-то, но я не могу найти способ исправить эту ошибку.
У вас есть идея, чтобы исправить мою проблему? Есть ли способ проверить, если класса нет? Вот исходный код:
creature = nil
function CustomGameMode:makeSpawn()
-- Make next ennemy spawn (creature ~=none makes the problem)
if (HeroList:GetHeroCount() == 0 or creature ~= nil or creature ~= none) then
print("Not spawned or not killed yet")
return 5
end
print( "Spawning units..." )
-- If the unit doesn't exists, spawn it
local spawnLocation = Entities:FindByName( nil, "test_spawning" )
creature = CreateUnitByName( "npc_dota_neutral_alpha_wolf" , spawnLocation:GetAbsOrigin(),
true, nil, nil, DOTA_TEAM_NEUTRALS )
-- when the unit dies, creature have a "none" value
return 30 -- This function calls itself every 30 seconds
end
Заранее спасибо!