Как проверить значение None в Lua? - PullRequest
0 голосов
/ 28 марта 2020

В настоящее время я разрабатываю мод 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

Заранее спасибо!

...