add game&rawdata
This commit is contained in:
parent
0133cd976c
commit
49b34b5546
45731 changed files with 709831 additions and 0 deletions
76
gamedata/scripts/ph_appforce.script
Normal file
76
gamedata/scripts/ph_appforce.script
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
-- Ïðèëîæåíèå ñèëû ê ôèçè÷åñêîìó îáúåêòó
|
||||
-- Created by Tunduk Vladimir aka Sidorovich
|
||||
|
||||
----------------
|
||||
class "ph_force"
|
||||
----------------
|
||||
function ph_force:__init (obj, storage)
|
||||
self.object = obj
|
||||
self.st = storage
|
||||
self.time = 0
|
||||
self.process = false
|
||||
end
|
||||
----------------
|
||||
function ph_force:reset_scheme ()
|
||||
if self.st.delay ~= 0 then
|
||||
self.time = time_global () + self.st.delay
|
||||
end
|
||||
self.process = false
|
||||
end
|
||||
----------------
|
||||
function ph_force:update (delta)
|
||||
if xr_logic.try_switch_to_another_section (self.object, self.st, db.actor) then
|
||||
return
|
||||
end
|
||||
|
||||
if self.process == true then
|
||||
return
|
||||
end
|
||||
|
||||
if self.st.delay ~= nil then
|
||||
if time_global () - self.time < 0 then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local dir = self.st.point:sub (self.object:position ())
|
||||
dir:normalize ()
|
||||
self.object:set_const_force (dir, self.st.force, self.st.time)
|
||||
self.process = true
|
||||
end
|
||||
----------------
|
||||
function add_to_binder (npc, ini, scheme, section, storage)
|
||||
local new_action = ph_force (npc, storage)
|
||||
xr_logic.subscribe_action_for_events (npc, storage, new_action)
|
||||
end
|
||||
----------------
|
||||
function set_scheme (npc, ini, scheme, section, gulag_name)
|
||||
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
|
||||
st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)
|
||||
|
||||
st.force = utils.cfg_get_number (ini, section, "force", npc, true, 0)
|
||||
st.time = utils.cfg_get_number (ini, section, "time", npc, true, 0)
|
||||
st.delay = utils.cfg_get_number (ini, section, "delay", npc, false, 0)
|
||||
|
||||
local path_name = utils.cfg_get_string(ini, section, "point", npc, true, "")
|
||||
local index = utils.cfg_get_number (ini, section, "point_index", npc, false, 0)
|
||||
|
||||
if st.force == nil or st.force <= 0 then
|
||||
abort ("PH_FORCE : invalid force !")
|
||||
end
|
||||
|
||||
if st.time == nil or st.time <= 0 then
|
||||
abort ("PH_FORCE : invalid time !")
|
||||
end
|
||||
|
||||
if path_name == nil or path_name == "" then
|
||||
abort ("PH_FORCE : invalid waypoint name !")
|
||||
end
|
||||
|
||||
local path = patrol (path_name)
|
||||
|
||||
if index >= path:count () then
|
||||
abort ("PH_FORCE : invalid waypoint index !")
|
||||
end
|
||||
st.point = path:point (index)
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue