e4s-sdk/gamedata/scripts/actor_proxy.script
2026-06-17 23:06:51 +03:00

73 lines
1.9 KiB
Text

--[[------------------------------------------------------------------------------------------------------------------
Êëàññ "actor_proxy". Îáåñïå÷èâàåò ïîääåðæêó àêò¸ðà, äàæå åñëè îí â îôëàéíå.
×óãàé Àëåêñàäð
--------------------------------------------------------------------------------------------------------------------]]
class "actor_proxy"
-- êîíñòðóêòîð
function actor_proxy:__init()
self.initialized = false
end
-- èíèöèàëèçàöèÿ.
-- ïðîèñõîäèò òîëüêî â ìîìåíò ïåðâîãî ïîñëå ñòàðòà ñèìóëÿòîðà îáðàùåíèÿ.
function actor_proxy:init()
if not self.initialized then
-- printf( "actor_proxy: init" )
self.online = false
self.alife = alife()
if self.alife then
self.actor_id = self.alife:actor().id
end
self.actor = nil
self.initialized = true
end
end
-- äåèíèöèàëèçàöèÿ.
-- ïðîèñõîäèò â ìîìåíò äåðåãèñòðàöèè ñåðâåðíûõ îáúåêòîâ.
-- âûçûâàåòñÿ èç se_smart_terrain:on_unregister() TODO remove this hack
function actor_proxy:deinit()
if self.initialized then
-- printf( "actor_proxy: deinit" )
self.alife = nil
self.actor = nil
self.initialized = false
end
end
-- Ïîëó÷åíèå ID èãðîêà
function actor_proxy:id()
self:init()
return self.actor_id
end
function actor_proxy:has_info( name )
self:init()
has_alife_info(name)
end
function actor_proxy:dont_has_info( name )
self:init()
if self.online then
-- printf( "actor_proxy: dont_has_info online: info=%s", name )
return not has_alife_info( name )
else
-- printf( "actor_proxy: dont_has_info offline: info=%s", name )
return not has_alife_info( self.actor_id, name )
end
end
-- ðîæäåíèå àêò¸ðà â îíëàéí
function actor_proxy:net_spawn( obj )
self:init()
self.online = true
self.actor = obj
end
-- óõîä àêò¸ðà èç îíëàéíà
function actor_proxy:net_destroy()
self:init()
self.online = false
self.actor = nil
end