- 28 Апр 2016
- 231
- 0
- Проект
- Защитники Изобилия | Defenders of Abundance
Не могу найти проблему:
addon_game_mode.lua
OnCustomGamemodeChanged работает
addon_game_mode.lua
Код:
-- Generated from template
require("timers")
if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end
function Precache( context )
--[[
Precache things we know we will use. Possible file types include (but not limited to):
PrecacheResource( "model", "*.vmdl", context )
PrecacheResource( "soundfile", "*.vsndevts", context )
PrecacheResource( "particle", "*.vpcf", context )
PrecacheResource( "particle_folder", "particles/folder", context )
]]
end
-- Create the game mode when we activate
function Activate()
GameRules.AddonTemplate = CAddonTemplateGameMode()
GameRules.AddonTemplate:InitGameMode()
ListenToGameEvent("game_init", Dynamic_Wrap(CAddonTemplateGameMode, 'ApplyGamemode'), nil)
ListenToGameEvent("dota_player_gained_level", Dynamic_Wrap(CAddonTemplateGameMode, 'Level6Message'), nil)
end
function CAddonTemplateGameMode:InitGameMode()
print( "Template addon is loaded." )
_G.gamemode_done = false
--OnCustomGamemodeChanged(1, 1)
GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
CustomGameEventManager:RegisterListener("custom_gamemode", OnCustomGamemodeChanged )
end
-- Evaluate the state of the game
function CAddonTemplateGameMode:OnThink()
if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
if _G.gamemode_done == false then
CAddonTemplateGameMode:ApplyGamemode()
end
elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
return nil
end
return 1
end
function OnCustomGamemodeChanged(eventSourceIndex, args)
print( "My event: ( ", eventSourceIndex, ", ", args['gamemode'], " )" )
if args['gamemode'] == "1" then
_G.custom_gamemode = 1
elseif args['gamemode'] == "2" then
_G.custom_gamemode = 2
elseif args['gamemode'] == "3" then
_G.custom_gamemode = 3
end
end
function CAddonTemplateGameMode:ApplyGamemode()
if _G.custom_gamemode == 1 then
_G.gamemode_done = true
elseif _G.custom_gamemode == 2 then
_G.gamemode_done = true
elseif _G.custom_gamemode == 3 then
_G.gamemode_done = true
else
print("kek")
end
end
function CAddonTemplateGameMode:Level6Message(eventInfo)
if eventInfo.level == 6 then
Say(nil, "Someone just reached level 6", false)
end
end
Код:
[ W VScript ]: Script Runtime Error: ...e\dota_addons\test1\scripts\vscripts\addon_game_mode.lua:63: attempt to index local 'eventInfo' (a nil value)
[ W VScript ]: stack traceback:
[ W VScript ]: ...e\dota_addons\test1\scripts\vscripts\addon_game_mode.lua:63: in function <...e\dota_addons\test1\scripts\vscripts\addon_game_mode.lua:62>
Последнее редактирование модератором: