! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - clear sky\gamedata\sounds\actor\gas_mask_idle.ogg
! Missing ogg-comment, file: d:\s.t.a.l.k.e.r. - clear sky\gamedata\sounds\actor\cop_heal.ogg
! Missing ogg-comment, file: d:\s.t.a.l.k.e.r. - clear sky\gamedata\sounds\actor\cop_bandage.ogg
function init (obj)
xr_motivator.AddToMotivator(obj)
end
function actor_init (npc)
npc:bind_object(actor_binder(npc))
end
delayed_alife_release_objects = {}
to_delayed_alife_release_objects = {}
local game_difficulty_by_num = {
[0] = "gd_novice",
[1] = "gd_stalker",
[2] = "gd_veteran",
[3] = "gd_master"
}
lasthealth = 0
lasttime = 0
post_process = 0
local weapon_hide = {}
----------------------------------------------------------------------------------------------------------------------
class "actor_binder" (object_binder)
----------------------------------------------------------------------------------------------------------------------
function actor_binder:__init (obj) super(obj)
self.bCheckStart = false
self.weather_manager = level_weathers.get_weather_manager()
--self.actor_detector = xr_detector.actor_detector()
self.last_level_name = nil
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:net_spawn(data)
printf("actor net spawn")
level.show_indicators()
self.bCheckStart = true
self.weapon_hide = false -- ńďđ˙ňŕíî čëč íĺň îđóćčĺ ďđč đŕçăîâîđĺ.
weapon_hide = false -- óńňŕíŕâëčâŕĺě ăëîáŕëüíűé äĺôîëňîâűé ôëŕă.
if object_binder.net_spawn(self,data) == false then
return false
end
level.show_indicators()
self.bCheckStart = true
self.weapon_hide = false -- ńďđ˙ňŕíî čëč íĺň îđóćčĺ ďđč đŕçăîâîđĺ.
self.weapon_hide_in_dialog = false
weapon_hide = {} -- óńňŕíŕâëčâŕĺě ăëîáŕëüíűé äĺôîëňîâűé ôëŕă.
if object_binder.net_spawn(self,data) == false then
return false
end
db.add_actor(self.object)
if self.st.disable_input_time == nil then
level.enable_input()
end
-- IMM --------------------------
amk.on_game_load()
-- IMM --------------------------
xr_s.on_game_load() --' Distemper 03.2008 --
atmmain.on_game_load()
self.weather_manager:reset()
-- game_stats.initialize ()
-- if(actor_stats.add_to_ranking~=nil)then
-- actor_stats.add_to_ranking(self.object:id())
-- end
--' Çŕăđóćŕĺě íŕńňđîéęč äđîďŕ
death_manager.init_drop_settings()
--'Óńňŕíŕâëčâŕĺě ńńűëęó íŕ ňŕńęěĺíĺäćĺđ
self.task_manager = task_manager.get_task_manager()
-- Ŕíđĺěňĺ ýňî, ÷ňîáű ďđîďóńňčňü číňđî íŕ ěŕđřĺ.
--self.object:give_info_portion("mar_lvl_sim")
if level.name() ~= "marsh" then
sim_board.get_sim_board():start_sim()
end
--spawn_items.main()
self.spawn_frame = device().frame
self.already_jumped = false
benchmark.main() --' Distemper 06.2008 --
if rx_ai then rx_ai.actor_net_spawn() end
-------- ďŕóçŕ ďđč çŕăđóçęĺ ---------------
ui_main_menu.start()
-------------------------------------------
return true
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:net_destroy()
-- IMM --------------------------
amk.on_game_save()
-- IMM --------------------------
xr_sound.stop_sounds_by_id(self.object:id())
local board_factions = sim_board.get_sim_board().players
for k,v in pairs (board_factions) do
xr_sound.stop_sounds_by_id(v.id)
end
if(actor_stats.remove_from_ranking~=nil)then
actor_stats.remove_from_ranking(self.object:id())
end
xr_effects.stc_stop_particle_sounds()
level.show_indicators()
level.show_weapon(true)
-- get_console():execute("hud_crosshair 1")
-- get_console():execute("hud_weapon 1")
-- get_console():execute("r2_dof -0.250000,1.400000,200.000000")
-- game_stats.shutdown ()
db.del_actor(self.object)
self.object:set_callback(callback.inventory_info, nil)
self.object:set_callback(callback.article_info, nil)
self.object:set_callback(callback.on_item_take, nil)
self.object:set_callback(callback.on_item_drop, nil)
--self.object:set_callback(callback.actor_sleep, nil)
self.object:set_callback(callback.task_state, nil)
self.object:set_callback(callback.level_border_enter, nil)
self.object:set_callback(callback.level_border_exit, nil)
self.object:set_callback(callback.take_item_from_box, nil)
if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:destroy()
sr_psy_antenna.psy_antenna = false
end
xrs_dyn_music.stop_sound()
object_binder.net_destroy(self)
-- xr_sound.stop_all_sounds()
xr_s.on_actor_destroy() --' Distemper 03.2008 --
atmmain.on_actor_destroy()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:reinit()
object_binder.reinit(self)
local npc_id = self.object:id()
db.storage[npc_id] = { }
self.st = db.storage[npc_id]
self.st.pstor = nil
self.next_restrictors_update_time = -10000
self.object:set_callback(callback.inventory_info, self.info_callback, self)
self.object:set_callback(callback.article_info, self.article_callback, self)
self.object:set_callback(callback.on_item_take, self.on_item_take, self)
self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)
self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats
--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)
self.object:set_callback(callback.task_state, self.task_callback, self)
--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)
self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)
self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)
self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)
self.object:set_callback(callback.use_object, self.on_use_item, self)
end
-- new method, will be called every time you use item in inventory
function actor_binder:on_use_item(obj)
item_usage.on_use_item(obj)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:take_item_from_box(box, item)
local box_name = box:name()
treasure_manager.take_item_from_box(box, box_name, item)
--local smart_name = string.sub(box_name, 1, string.len(box_name)-4)
--if(sim_board.get_sim_board().smarts_by_names[smart_name]~=nil) then
-- game_relations.set_gulag_relation_actor(smart_name, "enemy")
--end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:level_border_enter(npc, info_id)
--self.actor_detector:actor_enter()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:level_border_exit(npc, info_id)
--self.actor_detector:actor_exit()
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:info_callback(npc, info_id)
printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
--' Ńţćĺň
level_tasks.proceed(self.object)
-- Îňěĺňęč íŕ ęŕđňĺ
level_tasks.process_info_portion(info_id)
-- IMM --------------------------
amk.on_info(npc,info_id)
-- IMM --------------------------
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_trade (item, sell_bye, money)
if sell_bye == true then
game_stats.money_trade_update (money)
xr_statistic.inc_recieved_money_counter(money)
else
game_stats.money_trade_update (-money)
xr_statistic.inc_spent_money_counter(money)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:inventory_pda (item, sell_bye, money)
if sell_bye == true then
game_stats.money_trade_update (money)
xr_statistic.inc_recieved_money_counter(money)
else
game_stats.money_trade_update (-money)
xr_statistic.inc_spent_money_counter(money)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:article_callback(npc, group, name)
--printf("article_callback [%s][%s]", group, name)
if device().precache_frame >1 then return end
if group == "Diary" then
news_manager.send_encyclopedy("diary", group)
else
news_manager.send_encyclopedy("encyclopedy", group)
end
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_take (obj)
level_tasks.proceed(self.object)
printf("on_item_take [%s]", obj:name())
if isArtefact(obj) then
bind_anomaly_zone.artefact_ways_by_id[obj:id()] = nil
local artefact = obj:get_artefact()
artefact:FollowByPath("NULL",0,vector():set(500,500,500))
if bind_anomaly_zone.parent_zones_by_artefact_id[obj:id()] ~= nil then
bind_anomaly_zone.parent_zones_by_artefact_id[obj:id()]:on_artefact_take()
end
end
for k,v in pairs(task_manager:get_task_manager().task_info) do
if(v.type=="bring_item" and v.state~="finished") then
v:on_item_take(obj)
end
end
atmmain.on_item_take(obj)
--game_stats.update_take_item (obj, self.object)
if rx_ai then rx_ai.actor_item_take(obj) end
-- IMM --------------------------
amk.on_item_take(obj)
-- IMM --------------------------
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:on_item_drop (obj)
level_tasks.proceed(self.object)
for k,v in pairs(task_manager:get_task_manager().task_info) do
if(v.type=="bring_item" and v.state~="finished") then
v:on_item_drop(obj)
end
end
--game_stats.update_drop_item (obj, self.object)
atmmain.on_item_drop(obj)
-- IMM --------------------------
amk.on_item_drop(obj)
-- IMM --------------------------
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:task_callback(_task, _state)
if _state ~= task.fail then
if _state == task.completed then
news_manager.send_task(db.actor, "complete", _task)
else
news_manager.send_task(db.actor, "new", _task)
end
end
task_manager.task_callback(_task, _state)
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:map_location_added_callback(spot_type_str, object_id)
if (false==app_ready()) or (device().precache_frame>1) then return end
--'news_manager.send_task(db.actor, "new")
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:update(delta)
object_binder.update(self, delta)
snd_breath_gasmask.sound_update() -- sound of breathing
-- ATM Sleeping Bag start
local act = db.actor
if not has_alife_info("has_sleeping_bag") then
db.actor:give_info_portion("has_sleeping_bag")
alife():create("sleepingbag", act:position(), act:level_vertex_id(), act:game_vertex_id(), act:id())
end
-- ATM Sleeping Bag start
if self.already_jumped==false and jump_level.need_jump==true and (device().frame > self.spawn_frame+2000) then
jump_level.try_to_jump()
self.already_jumped = true
return
end
atmmain.update()
-- DEBUG slowdown
-- slowdown.update()
local time = time_global()
game_stats.update (delta, self.object)
--get_console():execute("load tg = " .. time)
-- ŕďäĺéň ďîăîäű
self.weather_manager:update()
-- ŕďäĺéň ńőĺěű äĺňĺęňîđŕ
--self.actor_detector:update()
--' Ŕďäĺéň ńŕóíäěĺíĺäćĺđŕ
xr_sound.update(self.object:id())
--' Ďđîâĺđęŕ ďîňĺđč ćčçíč
--[[
if self.object.health - lasthealth > 0.001 or
self.object.health - lasthealth < -0.001 then
printf("%f | %f", self.object.health, self.object.health - lasthealth, game.time() - lasttime)
lasthealth = self.object.health
lasttime = game.time()
end
]]
-- Îáíîâëĺíčĺ îňęëţ÷ĺíč˙ ââîäŕ ń ęëŕâčŕňóđű.
if self.st.disable_input_time ~= nil and
game.get_game_time():diffSec(self.st.disable_input_time) >= self.st.disable_input_idle
then
level.enable_input()
self.st.disable_input_time = nil
end
-- Îáíîâëĺíčĺ ńíŕ ń ďĺđĺíîńîě ÷óâŕęŕ â óęŕçŕííóţ ďîçčöčţ
if self.st.sleep_relocate_time ~= nil and
game.get_game_time():diffSec(self.st.sleep_relocate_time) >= self.st.sleep_relocate_idle
then
self.object:set_actor_position(self.st.sleep_relocate_point)
local dir = self.st.sleep_relocate_point:sub(self.st.sleep_relocate_look)
self.object:set_actor_direction(dir:getH())
self.st.sleep_relocate_time = nil
end
-- Ŕďäĺéň ďđ˙ňŕíčĺ îđóćč˙ čăđîęŕ âî âđĺě˙ äčŕëîăŕ
if self.object:is_talking() then
if self.weapon_hide_in_dialog == false then
--printf("PL:HIDE_D1 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
self.object:hide_weapon()
self.weapon_hide_in_dialog = true
--printf("PL:HIDE_D2 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
end
else
if self.weapon_hide_in_dialog == true then
--printf("PL:RESTORE_D1 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
self.object:restore_weapon()
self.weapon_hide_in_dialog = false
--printf("PL:RESTORE_D2 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
end
end
-- Ŕďäĺéň ďđ˙ňŕíčĺ îđóćč˙ čăđîęŕ â çîíĺ sr_no_weapon
if check_for_weapon_hide_by_zones() == true then
--printf("weapon_hide1 = [%s]", tostring(weapon_hide))
if self.weapon_hide == false then
--printf("PL:HIDE_W1 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
self.object:hide_weapon()
self.weapon_hide = true
--printf("PL:HIDE_W2 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
end
else
--printf("weapon_hide3 = [%s]", tostring(weapon_hide))
if self.weapon_hide == true then
--printf("PL:RESTORE_W1 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
self.object:restore_weapon()
self.weapon_hide = false
--printf("PL:RESTORE_W2 ---> self.weapon_hide = [%s] weapon_hide = [%s]", tostring(self.weapon_hide), tostring(weapon_hide))
end
end
-- îáíîâëĺíčĺ đĺńňđčęňîđîâ, ęîňîđűĺ ďîä ëîăčęîé, ńđŕáŕňűâŕĺň ÷ĺđĺç číňĺđâŕëű âđĺěĺíč
if self.next_restrictors_update_time < time then
self.next_restrictors_update_time = time + 200
self.task_manager:update()
end
-- îáíîâëĺíčĺ ďîńňďđîöĺńńîâ
if post_process ~= 0 then
if post_process:update () == true then
post_process = 0
end
end
-- îáíîâëĺíčĺ ďńč-ŕíňĺííű
if sr_psy_antenna.psy_antenna then
sr_psy_antenna.psy_antenna:update(delta)
end
--[[local hud_demo = get_hud()
local custom_static_demo = hud_demo:GetCustomStatic("cs_demo_play")
if custom_static_demo == nil then
hud_demo:AddCustomStatic("cs_demo_play", true)
if level.name() == "agroprom_underground" then
hud_demo:GetCustomStatic("cs_demo_play"):wnd():SetTextST("st_demo_agr")
elseif level.name() == "military_nvidia" then
hud_demo:GetCustomStatic("cs_demo_play"):wnd():SetTextST("st_demo_mil")
else
hud_demo:GetCustomStatic("cs_demo_play"):wnd():SetTextST("st_demo_play")
end
end
if jump_level.need_jump==true then
hud_demo:GetCustomStatic("cs_demo_play"):wnd():SetTextST("L: " .. level.name() .. " frame [" ..
tostring(device().frame) ..
"] delta[" ..
tostring(device().frame - self.spawn_frame) ..
"]")
end]]--
--' Âűâîä ńîîáůĺíč˙ î áîëüřîé đŕäčŕöčč
if self.object.radiation >= 0.7 then
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_radiation_danger")
if custom_static == nil then
hud:AddCustomStatic("cs_radiation_danger", true)
hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger")
end
else
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_radiation_danger")
if custom_static ~= nil then
hud:RemoveCustomStatic("cs_radiation_danger")
end
end
if self.bCheckStart then
printf("SET DEFAULT INFOS")
if not has_alife_info("global_dialogs") then
self.object:give_info_portion("global_dialogs")
end
if not has_alife_info("level_changer_icons") then
self.object:give_info_portion("level_changer_icons")
end
level_tasks.add_lchanger_location()
self.bCheckStart = false
end
if rx_ai then rx_ai.actor_update() end
--' Distemper 03.2008 --
if xrs_dyn_music.play_combat == 0 then
xrs_dyn_music.interactive_music(0)
elseif xrs_dyn_music.play_combat == 1 then
xrs_dyn_music.interactive_music(20)
elseif xrs_dyn_music.play_combat == 2 then
xrs_dyn_music.interactive_music(10)
end
-- IMM --------------------------
amk.on_actor_update(delta)
-- IMM --------------------------
xr_s.on_actor_update(delta)
--' end --
if xr_surge_hide.start_surge then
if not xr_surge_hide.weather_surge then
xr_surge_hide.weather_surge = true
level.set_weather("default_cloudy", true)
end
local diff_sec = math.ceil(game.get_game_time():diffSec(xr_surge_hide.initialization_time)/level.get_time_factor())
local time_before_lag_noosphere = 0
local time_before_give_task = 0
if level.name() == "marsh" then
time_before_lag_noosphere = 12
time_before_give_task = 15
else
time_before_lag_noosphere = 17
time_before_give_task = 27
end
if diff_sec>=time_before_lag_noosphere and xr_surge_hide.phase == 1 then
xr_surge_hide.activate_surge()
elseif diff_sec>=time_before_give_task and xr_surge_hide.phase == 2 then
xr_surge_hide.activate_surge(xr_surge_hide.time_before_surge)
end
end
local al = alife()
if al ~= nil then
local name = al:level_name(al:level_id())
if(self.last_level_name==nil) then
self.last_level_name = name
else
if(name~=self.last_level_name) then
self.last_level_name = name
local time = xr_surge_hide.surge_can_be_started(name)
if time then
xr_surge_hide.activate_surge(time)
end
end
end
end
if guiders.teleported_to_another_level and not guiders.level_changed then
guiders.action_teleport_to_point()
end
-->> Simple CS Freeplay Mod 1.0
if db.actor:dont_has_info("set_changers") then
ogsm_freeplay.set_lc()
db.actor:give_info_portion("set_changers")
end
--<<
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:save(packet)
if rx_ai then rx_ai.actor_save(packet) end
set_save_marker(packet, "save", false, "actor_binder")
object_binder.save(self, packet)
--' Ńîőđŕí˙ĺě óđîâĺíü ńëîćíîńňč
packet:w_u8(level.get_game_difficulty())
--' Ńîőđŕí˙ĺě äŕííűĺ îá îňęëţ÷ĺííîě ââîäĺ
if self.st.disable_input_time == nil then
packet:w_bool(false)
else
packet:w_bool(true)
utils.w_CTime(packet, self.st.disable_input_time)
end
xr_logic.pstor_save_all(self.object, packet)
self.weather_manager:save(packet)
release_body_manager.get_release_body_manager():save(packet) --' Distemper 12.02.2008
xr_surge_hide.save(packet)
sr_psy_antenna.save( packet )
--self.actor_detector:save(packet)
packet:w_bool(sim_board.get_sim_board().simulation_started)
-- Ńîőđŕíĺíčĺ ńďčńęŕ îćčäŕíč˙ íŕ ęîěŕíäó ŕňŕęč îň čăđîęŕ
local n = 0
for k,v in pairs(sim_combat.wait_for_combat) do
n = n + 1
end
packet:w_u8(n)
for k,v in pairs(sim_combat.wait_for_combat) do
packet:w_u16(k)
packet:w_stringZ(v)
end
xr_sound.actor_save(packet)
packet:w_stringZ(tostring(self.last_level_name))
xr_statistic.save(packet)
guiders.save(packet)
treasure_manager.save(packet)
n = 0
for k,v in pairs(delayed_alife_release_objects) do
n = n + 1
end
packet:w_u8(n)
for k,v in pairs (delayed_alife_release_objects) do
printf("TO_RELEASING OBJ:[%s]", tostring(k))
packet:w_u16(k)
end
n = 0
for k,v in pairs(db.script_ids) do
n = n + 1
end
packet:w_u8(n)
for k,v in pairs (db.script_ids) do
packet:w_u16(k)
packet:w_stringZ(v)
end
-- minigames_manager.get_minigames_manager():save(packet)
set_save_marker(packet, "save", true, "actor_binder")
end
----------------------------------------------------------------------------------------------------------------------
function actor_binder:load(reader)
set_save_marker(reader, "load", false, "actor_binder")
object_binder.load(self, reader)
--' Çŕăđóćŕĺě óđîâĺíü ńëîćíîńňč
local game_difficulty = reader:r_u8()
printf("load game_difficulty %s", tostring(game_difficulty))
get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty])
local stored_input_time = reader:r_u8()
if stored_input_time == true then
self.st.disable_input_time = utils.r_CTime(reader)
end
xr_logic.pstor_load_all(self.object, reader)
self.weather_manager:load(reader)
release_body_manager.get_release_body_manager():load(reader) --' Distemper 12.02.2008
xr_surge_hide.load(reader)
sr_psy_antenna.load(reader)
--self.actor_detector:load(reader)
sim_board.get_sim_board().simulation_started = reader:r_bool()
-- Çŕăđóçęŕ ńďčńęŕ îćčäŕíč˙ íŕ ęîěŕíäó ŕňŕęč îň čăđîęŕ
local n = reader:r_u8()
sim_combat.wait_for_combat = {}
for i = 1,n do
sim_combat.wait_for_combat[reader:r_u16()] = reader:r_stringZ()
end
xr_sound.actor_load(reader)
local n = reader:r_stringZ()
if(n~="nil") then
self.last_level_name = n
end
xr_statistic.load(reader)
guiders.load(reader)
treasure_manager.load(reader)
n = reader:r_u8()
for i = 1,n do
to_delayed_alife_release_objects[reader:r_u16()] = true
end
printf("delayed_alife_release_objects")
print_table(delayed_alife_release_objects)
n = reader:r_u8()
for i = 1,n do
db.script_ids[reader:r_u16()] = reader:r_stringZ()
end
-- minigames_manager.get_minigames_manager():load(reader)
set_save_marker(reader, "load", true, "actor_binder")
end
----------------------------------------------------------------------------------------------------------------------
--ńňŕđň ďđĺôĺň÷ŕ çâóęîâ
--if string.find(command_line(), "-noprefetch") == nil then
-- sound_prefetch.prefetch_sounds()
--end
function check_for_weapon_hide_by_zones()
for k,v in pairs(weapon_hide) do
if v == true then
return true
end
end
return false
end
-- Weapon functions
function hide_weapon(zone_id)
weapon_hide[zone_id] = true
end
function restore_weapon(zone_id)
weapon_hide[zone_id] = false
end
function add_to_delayed_release(obj_id)
printf("TO_RELEASING_add OBJ:[%s]", tostring(obj_id))
delayed_alife_release_objects[obj_id] = true
end
function del_to_delayed_release(obj_id)
printf("TO_RELEASING_del OBJ:[%s]", tostring(obj_id))
delayed_alife_release_objects[obj_id] = nil
end
! Missing ogg-comment, file: d:\s.t.a.l.k.e.r. - clear sky\gamedata\sounds\actor\cop_vodka1.ogg
! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - clear sky\gamedata\sounds\actor\cop_drink.ogg
! Invalid ogg-comment version, file: d:\s.t.a.l.k.e.r. - clear sky\gamedata\sounds\actor\cop_eat.ogg
jeśli nie zadziała to podejrzewam, że masz jeszcze zainstalowaną jakąś modyfikację która wpływa w jakiś sposób na itemy, np. mod na wolniej działające apteczki
Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość