Alex Rodriguez
Гигабайты памяти не при чём.У меня вообще 1280мб,и работает вроде.На Генераторах такого,как у тебя,не было.Я,правда,не с ООП играю пока что.Как говорит Пивкабы хD ,дымовушка помогает.Мне помогло.
З.Ы.
Может это не ново,но...
Интересно устроены турели в Лиманске,однако.Задницу в дверь высунул-стреляет&P,да.И забегать не надо,так гренами закидал.Перед тем,как войти,выложил пластид около двери,забежал за колонны,подальше от неё,активировал.Помогает,однако.
Alex Rodriguez
Аут оф мемори у меня всегда при переходе откуда угодно на локи-Лабиринт,Неразведанная земля.А так-часа три играешь,бывает такое.В Лиманске ещё,но там были все мыслимые вылеты,какие есть,похоже:ye)невзлюбил я эту дыру ещё с оригинала ЧН,мерзкое место.
Alex Rodriguez
В первое прохождение столкнулся с подобным твоему. Удалил Соль и лицуху, Дефрагментировал диск, проверил обновление видеокарты, установил всё по новой - и как кролик из шляпы фокусника - все заработало нормально. Да, ещё почистил систему от разной шелухи. Всем привет!!!
"Ну не нравится мне - ни ваша розовая кофточка, ни ваши сиськи..." (п-к Ржевский)
Как говорили классики - слушай внимательно, понимай правильно, запоминай надолго...
"Если народ не хочет кормить собственную Армию-то он будет кормить чужую" (Макиавелли)
DanHi
Вообще-то я ещё когда оригинал лицухи проходил, с одним ПМом этой дорОгой доки с блок поста брал.:sarcastic:
А ты всегда такой юморной?:lol)
дрыка
Андрей, привет!
"Ну не нравится мне - ни ваша розовая кофточка, ни ваши сиськи..." (п-к Ржевский)
Как говорили классики - слушай внимательно, понимай правильно, запоминай надолго...
"Если народ не хочет кормить собственную Армию-то он будет кормить чужую" (Макиавелли)
Ага,avast почти,шас способ раздобыть халявные 5 пузырей напишу
добавлено спустя 10 минут
Cначала запрыгиваем на дом Волка,с чердаком который
[img]
Теперь запрыгиваем на следующий дом
[img]
Теперь обходим крышу,и заходим в полном присяде в эту дырку
[img]
И находим там ящик, в итоге 5 бутылок не палёной наши
отредактировал(а) DanHi: 29-11-2011 09:56 GMT3 час. Мы Бандиты,Народ творческий!
Снорки тоже люди!
Самое рифмующееся слово-Слон!
Chastener ,спасибо за аватар
привет всем, кто на месте! подскажите кто-нибудь: Крест клянчит 6 аномальных бизонов. найти их не проблема. косяк состоит в состоянии бизонов. а вот и собственно вопрос: их надо чинить или косячные подойдут:-G? спасибо.
grafabashev
Засчитываются даже полностью убитые "Бизоны". Т.е. в хлам.
"Ну не нравится мне - ни ваша розовая кофточка, ни ваши сиськи..." (п-к Ржевский)
Как говорили классики - слушай внимательно, понимай правильно, запоминай надолго...
"Если народ не хочет кормить собственную Армию-то он будет кормить чужую" (Макиавелли)
не знаю заметели вы или нет но на ЧАЭС-2 есть место,где с потолка(каменного) всегда сыпятся листья ;-) вот ссылка
_http://upwap.ru/1860585
а вопрос такой, такой баг ток в сольке или других модах???
корн
Наверное там осень наступила...:-G
А что неписи просовываются через лист железа и валят тебя - это тебя не удивляет?&P
"Ну не нравится мне - ни ваша розовая кофточка, ни ваши сиськи..." (п-к Ржевский)
Как говорили классики - слушай внимательно, понимай правильно, запоминай надолго...
"Если народ не хочет кормить собственную Армию-то он будет кормить чужую" (Макиавелли)
avast
Приветствую.
Насчёт почистить систему от шелухи-это да,дело.Я скачал давно,но воспользовался только вчера Auslogics BoostSpeed,весьма полезная программка.Всё барахло удаляет,чистка,оптимизация и т.д.В ней есть такой профиль,называется игровой с экстремальным ускорением.Блин,не ожидал,всё аж бегом полетело.Подтормаживать в игре перестало,загрузки сейвов в два раза быстрее.
Yobudatsa Где ты увидел :называется игровой с экстремальным ускорением?
Я в своей программе Auslogics BoostSpeed такой опции не нашел.Выложи скрин. Николай,да что там неписи в листах железа?Я вот встретил на Кордоне Димака, который сидел задом в горящем костре и пел голосом Розенбаума.&P
отредактировал(а) wiktor20: 29-11-2011 18:35 GMT3 час. В смысле осмысления бессмысленности смысл тоже имеет определенную осмысленность.
BMW-530i Forever!
#DanHi :
Ага,avast почти,шас способ раздобыть халявные 5 пузырей напишу
добавлено спустя 10 минут
Cначала запрыгиваем на дом Волка,с чердаком который
[img]
Теперь запрыгиваем на следующий дом
[img]
Теперь обходим крышу,и заходим в полном присяде в эту дырку
[img]
И находим там ящик, в итоге 5 бутылок не палёной наши
А еще там в некоторых модах комбез наймов лежит... Опять решил всех расхохмить?:lol) Всем доброй ночи!
wiktor20
Здрасьте.Находится это в настройках системы,тыцкаешь оптимизацию служб,там есть строка-выберите,как вы используете компьютер-и далее,выбираешь.
Кстати,скрины-это хорошо,только не могу найти,в какую папку они у меня падают.
Не надо скрин, просто напиши какая версия Auslogics BoostSpeed. И желательно под спойлером.
Ты не поверишь, но у меня за всё прохождение (а проходил Соль я дважды) не было ни одного вылета в Лиманске и на АТП с Генераторами. Только когда память кончалась (аут оф мэмори), но это не считается за вылет- просто пора покурить.
Yobudatsa
Кстати,скрины-это хорошо,только не могу найти,в какую папку они у меня падают.
А чтобы скрины игры падали в директорию игры, а не в диск С:\ как по умолчанию ТЧ суёт, открываешь блокнотом файлик fsgame.ltx и правишь самую верхнюю строку. Например у меня она выглядит так: $app_data_root$=true|false|E:\S.T.A.L.K.E.R\STALKER-SHOC\. Но предварительно эту папку STALKER-SHOC найди на С:\ и перемести в указанную директорию.
отредактировал(а) TANGO: 29-11-2011 22:07 GMT3 час. «Никто, кроме нас!»
свободовец-1994 Это все равно что пососать не согнувшись.&P.Ты чего прешься в Припять не отключив выжигатель? YobudatsaСергий,спаибо!Но как теперь отменить изменения?:lok5).У меня интерфейс немного изменился.
Усё, вопрос по восстановлению снимается,разобрался.
В смысле осмысления бессмысленности смысл тоже имеет определенную осмысленность.
BMW-530i Forever!
Всем привет!
Скрин по настройке проги AusLogics_BoostSpeed_5.0.6.250. Для максимального разгона компа. Только есть один нюанс, перед использованием этой функции, надо сделать точку восстановления системы. Что бы можно назад откатиться, если визуальный стиль не понравится.
Ну и конечно эта функция: .
Кому эта прога нужна, кликнуть здесь.
По заданию Воронина нашел на локе Бар 19 документов, осталось 1(здание с 4-мя трубами). Кто нашел их поделитесь скринами или описанием где искать. Если кому надо остальные 19 скринов, пишите поделюсь.
Всем спасибо!!! В Баре всё сам нашел (20 шт.), скрины есть. Правда награда мизер.
отредактировал(а) konstantin-69: 02-12-2011 13:11 GMT3 час.
Всем привет!
Что то не могу найти тайник Кости на Агропроме в "болоте стоит поискать", один рюкзачёк нашёл в трубе, но там только автомат "АК-9" пару аптечек и всё а ПДА-шки нету(перерыл уже вроде всё болото), играю с обновлённым ООП+...+..., там же и тайник коллекционера этого никак не найду.
KALTER
На болоте Агро один тайник в трубе, других там нет. Попробуй откатись назад и возьми снова наводку на этот тайник. Он должен поменять место расположение, с этой трубой постоянно проблемы. А так Костя даст наводку на тайник в другом месте на Агро.
Тайник коллекционера ещё не искал.
Всем привет.Вот такая беда: из Лиманска по квесту Молнии иду на генераторы как появляюсь там через минуту изображение стопорится.пробовал телепорт.в другие локации тоже самое.Вот ошибка:
FATAL ERROR
[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description :
[error]Arguments : LUA error: ...r - Народная Солянка\gamedata\scripts\amk_mod.script:2786: attempt to index local 'respawner' (a function value)
stack trace:
добавлено спустя 4 минут
пробовал все.Игра:амк 1.4.1 Народная солянка от 19.04.10 доп 14.08.10 патч DMX 1.3.3
отредактировал(а) АргонКриптонНеонГелий58: 01-12-2011 17:11 GMT3 час.
АргонКриптонНеонГелий58
Открой se_respawn script и удали там всё,после вставь вот это
--[[------------------------------------------------------------------------------------------------------------------
Respawner. Схема обновления популяции всего всего всего в симуляции.
by Stohe (Диденко Руслан)
--------------------------------------------------------------------------------------------------------------------]]
--function printf()
--end
local section_name = "respawn"
local i,k,v = 0,0,0
local idle_spawn_preset = {
seldom = 60*60*96,
medium = 60*60*48,
often = 60*60*24,
--seldom = 60*60*6,
--medium = 60*60*3,
--often = 60*60,
once = -100000
}
-- Список респавнеров, для сбора статистики
local respawners = {}
local respawners_by_parent = {}
----------------------------------------------------------------------------------------------------------------------
-- Разные полезные функции
----------------------------------------------------------------------------------------------------------------------
function r_bool( spawn_ini, section, line, default )
if spawn_ini:line_exist( section, line ) then
return spawn_ini:r_bool( section, line )
else
return default
end
end
function r_str( spawn_ini, section, line, default )
if spawn_ini:line_exist( section, line ) then
return spawn_ini:r_string( section, line )
else
return default
end
end
function r_num( spawn_ini, section, line, default )
if spawn_ini:line_exist( section, line ) then
return spawn_ini:r_float( section, line )
else
return default
end
end
function r_2nums( spawn_ini, section, line, def1, def2 )
if spawn_ini:line_exist( section, line ) then
-- если default-ов больше, чем значений в ini, то забить недостающие последним значением из ini
local t = parse_names( spawn_ini:r_string( section, line ) )
local n = #t
if n == 0 then
return def1, def2
elseif n == 1 then
return t[1], def2
else
return t[1], t[2]
end
else
return def1, def2
end
end
function parse_names( s )
local t = {}
for name in string.gfind( s, "([%w_%-.\\]+)%p*" ) do
table.insert( t, name )
end
return t
end
function r_spawns( spawn_ini, section, line, sectSpawnProps)
if spawn_ini:line_exist( section, line ) then
--' если default-ов больше, чем значений в ini, то забить недостающие последним значением из ini
local t = parse_names( spawn_ini:r_string( section, line ) )
local n = #t
local ret_table = {}
local k = 1
while k <= n do
local spawn = {}
spawn.section = t[k]
-- Проверяем что это не последняя запись
if t[k+1] ~= nil then
local p = tonumber(t[k+1])
-- проверяем что вторым числом задана вероятность, а не другая секция спавну
if p then
-- забиваем число
spawn.prob = p
k = k + 2
else
-- забиваем дефолт 1
spawn.prob = 1
k = k + 1
end
else
spawn.prob = 1
k = k + 1
end
table.insert(ret_table, spawn)
-- Вычитываем настройки секций респавна и кешируем их.
if sectSpawnProps[spawn.section] == nil then
local respawn_ini = system_ini()
local community = r_str(respawn_ini, spawn.section, "community", "nil")
local rank = r_str(respawn_ini, spawn.section, "spec_rank", "nil")
local check = true
local custom_data = r_str(respawn_ini, spawn.section, "custom_data")
if custom_data ~= nil then
local custom_data_ltx = ini_file(custom_data)
if custom_data_ltx:section_exist("smart_terrains") then
if custom_data_ltx:line_exist("smart_terrains", "none") then
if r_str(custom_data_ltx, "smart_terrains", "none") == "true" then
check = false
end
end
if custom_data_ltx:line_exist("smart_terrains", "respawn_check") then
if r_str(custom_data_ltx, "smart_terrains", "respawn_check") == "false" then
check = false
end
end
end
end
end
return ret_table
end
return nil
end
----------------------------------------------------------------------------------------------------------------------
-- Серверный объект спавнера
----------------------------------------------------------------------------------------------------------------------
class "se_respawn" ( cse_alife_smart_zone )
function se_respawn:__init( section ) super( section )
self.spawned_obj = {}
-- Таблица для кеширования свойств секций респавна.
self.sectSpawnProps = {}
self.rt_read = false
self.proxy_initialized = false
end
-- сохранение
function se_respawn:STATE_Write( packet )
cse_alife_smart_zone.STATE_Write( self, packet )
local table_size = #self.spawned_obj
-- printf("SPAWNER SAVE table_size[%d]", table_size)
-- print_table(self.spawned_obj)
packet:w_u8(table_size)
for i=1,table_size do
packet:w_u16(self.spawned_obj)
end
utils.w_CTime(packet, self.respawn_time)
if self.respawn_time == nil then
self.respawn_time = game.CTime()
end
--sak.dbglog("%s write respawn_time %s %s", tostring(self:name()), self.respawn_time:dateToString(0), self.respawn_time:timeToString(1))
end
-- восстановление
function se_respawn:STATE_Read( packet, size )
cse_alife_smart_zone.STATE_Read( self, packet, size )
if editor() then
return
end
local table_size = packet:r_u8()
for i=1,table_size do
table.insert(self.spawned_obj, packet:r_u16())
end
if not packet:r_eof() then
self.respawn_time = utils.r_CTime(packet)
self.rt_read = true
--sak.dbglog("%s read respawn_time %s %s", tostring(self:name()), self.respawn_time:dateToString(0), self.respawn_time:timeToString(1))
end
end
-- инициализация объекта.
-- вызывается симулятором.
function se_respawn:on_register()
cse_alife_smart_zone.on_register( self )
--printf("RESPAWN: [%s] se_respawn on_register", tostring(self:name()))
init_respawn_params(self)
end
-- Создаем объект
function se_respawn:create(prob)
if tostring(prob)=="true" then
prob=80
elseif tostring(prob)=="false" then
prob=0
end
if tonumber(prob) == nil then
print_table(self.conditions)
abort("RESPAWN[%s]spawn probability doesn't set", tostring(self:name()))
prob = 0
return false
end
if math.random(100) <= tonumber(prob) then
local spawn_section = ""
local sum = 0
-- Производим рандомную взвешенную выборку
-- с учетом уже заспавленного количества человек.
for k,v in pairs(self.respawn_section) do
--' local tt = self.sectSpawnProps[v.section]
--' local community_rank = tt.community.."_"..tt.rank
--' local s_count = simMaxCount[community_rank]
--' if s_count == nil then
--' s_count = 0
--' end
--' if tt.check == false or
--' self.item_spawn == true or
--' sim_statistic.simNpcCount(tt.community, tt.rank) < s_count
--' then
sum = sum + v.prob
--' end
end
sum = math.random(0, sum)
for k,v in pairs(self.respawn_section) do
--' local tt = self.sectSpawnProps[v.section]
--' local community_rank = tt.community.."_"..tt.rank
--' local s_count = simMaxCount[community_rank]
--' if s_count == nil then
--' s_count = 0
--' end
--' if tt.check == false or
--' self.item_spawn == true or
--' sim_statistic.simNpcCount(tt.community, tt.rank) < s_count
--' then
sum = sum - v.prob
if sum <= 0 then
spawn_section = v.section
break
end
--' end
end
if spawn_section == "" then
-- printf("SPAWNING [%s], CANT SPAWN, SIMULATION POPULATION EXCEED", tostring(self:name()))
--sak.dbglog("SPAWNING [%s], CANT SPAWN, SIMULATION POPULATION EXCEED", tostring(self:name()))
return false
end
local parent_id = nil
if self.parent ~= nil then
local s_obj = alife():story_object(self.parent)
if s_obj == nil then
abort("SPAWNING [%s], cant find parent with SID [%s]", self:name(), self.parent)
return
end
parent_id = s_obj.id
end
local obj
if parent_id == nil then
obj = alife():create(spawn_section,
self.position,
self.m_level_vertex_id,
self.m_game_vertex_id)
else
obj = alife():create(spawn_section,
self.position,
self.m_level_vertex_id,
self.m_game_vertex_id,
parent_id)
end
get_console():execute("load ~ Spawn now ["..tostring(self:name()).."] -> ["..obj:name().."]")
amk.on_REspawn(obj,self)
local tt = self.sectSpawnProps[spawn_section]
--sak.dbglog("SPAWNING [%s] -> [%s], CANT SPAWN. NO SMART_TERRAIN AVAILABLE!!!", tostring(self:name()), spawn_section)
-- printf("SPAWNING [%s] -> [%s], CANT SPAWN. NO SMART_TERRAIN AVAILABLE!!!", tostring(self:name()), spawn_section)
return false
end
end
end
table.insert(self.spawned_obj ,obj.id)
return true
end
end
-- Попытка спаунить объекты. Анализируется сколько уже заспавнено и выбирается один из механизмов - либо
-- мы доспавниваем до минимального количества, либо спавним с заданной вероятностью
function se_respawn:spawn()
-- printf("RESPAWN: [%s] spawn execute", tostring(self:name()))
--sak.dbglog("RESPAWN: [%s] spawn execute", tostring(self:name()))
if not self.spawn_once then
-- Пробегаемся по списку уже заспавненных объектов и удаляем из них мертвые либо уничтоженные.
for k,v in pairs(self.spawned_obj) do
local obj = level.object_by_id(v)
if obj == nil then
obj = alife():object(v)
end
if obj ~= nil then
if (IAmAStalker[obj:clsid()] or IAmAMonster[obj:clsid()]) and obj:alive() ~= true then
table.remove(self.spawned_obj, k)
end
else
table.remove(self.spawned_obj, k)
end
end
end
if xr_logic.pick_section_from_condlist(db.actor_proxy, self, self.conditions) == "0" then
-- printf("SPAWNING [%s], CANT SPAWN. PROBABILITY ZERO!!!", tostring(self:name()))
--sak.dbglog("SPAWNING [%s], CANT SPAWN. PROBABILITY ZERO!!!", tostring(self:name()))
sim_statistic.respawn_enabled(self, false)
return
end
sim_statistic.respawn_enabled(self, true)
if self.spawn_once and not self.already_once_spawned then
self.already_once_spawned = true
end
-- экстренный спаун минимального количества объектов
if #self.spawned_obj < self.min_count then
while #self.spawned_obj < self.min_count do
--sak.dbglog("RESPAWN: [%s] very small object", tostring(self:name()))
if self:create(100) == false then
return
end
end
return
end
-- делаем несколько попыток заспаунить объект.
for i=1,self.max_spawn do
if self.max_count ~= -1 and #self.spawned_obj >= self.max_count then
--sak.dbglog("RESPAWN: [%s] max count reached", tostring(self:name()))
-- printf("SPAWNING [%s], CANT SPAWN. MAX COUNT REACHED!!!", tostring(self:name()))
return
end
if self:create(xr_logic.pick_section_from_condlist(db.actor_proxy, self, self.conditions)) == false then
return
end
end
end
--' Удаляем уже заспавненный объект из списка заспавненных
--' Используется только для ящиком со шмотками в смарттеррейнах
function se_respawn:remove_spawned(id)
for k,v in pairs(self.spawned_obj) do
if id == v then
table.remove(self.spawned_obj, k)
end
end
end
-- Обновление респавнера. В зависимости от настроек обновляется либо только в офлайне, либо и там и там.
function se_respawn:execute()
-- printf("RESPAWN: [%s] se_respawn execute", tostring(self:name()))
if self.already_once_spawned==true then return end
--' Выходим, если у нас установлен событийный спавн.
if self.idle_spawn_min == -1 then
return
end
if self.respawn_time < game.get_game_time() then
-- if not self.proxy_initialized then
-- db.actor_proxy:init()
-- self.proxy_initialized = true
-- end
local idle_time = game.CTime()
local now = game.get_game_time()
-- printf("spawn_count = %s", table.getn(self.spawned_obj))
end
end
-- Обновление в офлайне
function se_respawn:update()
cse_alife_smart_zone.update( self )
--'printf("RESPAWN: [%s] se_respawn update_offline", tostring(self:name()))
self:execute()
end
-- Обновление в онлайне
function se_respawn:update_online()
--'cse_alife_smart_zone.update( self )
--'printf("RESPAWN: [%s] se_respawn update_online", tostring(self:name()))
if self.respawn_radius == -1 then
sim_statistic.respawn_enabled(self, false)
return
end
if db.actor:position():distance_to (self.position) >= self.respawn_radius then
self:execute()
else
sim_statistic.respawn_enabled(self, false)
end
end
function spawn(name)
local spawner = respawners[name]
if spawner == nil then
return
end
for i=1,spawner.max_spawn do
if spawner.max_count ~= -1 and #spawner.spawned_obj >= spawner.max_count then
-- printf("SPAWNING [%s], CANT SPAWN. MAX COUNT REACHED!!!", tostring(spawner:name()))
return
end
if spawner:create(xr_logic.pick_section_from_condlist(db.actor_proxy, spawner, spawner.conditions)) == false then
return
end
end
end
function get_respawner_by_parent(parent_id)
return respawners_by_parent[parent_id]
end
-- Сбор статистики
function stats()
local total_spawned = 0
local total_avail = 0
local total = 0
printf("***************** RESPAWN STATISTIC *********************")
for k,v in pairs(respawners) do
local s = xr_logic.pick_section_from_condlist(db.actor_proxy, v, v.conditions)
local pops = "DISABLE"
if s ~= "nil" and s ~= "0" then
pops = #v.spawned_obj
end
local str_pops
if v.max_count == pops then
str_pops = "FULL "..tostring(pops)
else
str_pops = tostring(pops)
end
printf("[%s] spawns [%s] object", tostring(v:name()), str_pops)
print_table(v.respawn_section)
-- Увеличиваем общие счетчики
total = total + v.max_count
if pops ~= "DISABLE" then
total_avail = total_avail + v.max_count
total_spawned = total_spawned + pops
end
end
printf("*** SUMMARY ***")
printf(" total = %s", total)
printf(" total_avail = %s", total_avail)
printf(" total_spawned = %s", total_spawned)
printf("***************")
end
-- Сбор продвинутой статистики статистики по лимитам
function lstats()
local can_spawn = {}
printf("***************** LIMITS STATISTIC *********************")
for k,v in pairs(respawners) do
-- Запоминаем максимальное количество весов для данного респавнера
local wage = 0
for kk,vv in pairs(v.respawn_section) do
wage = wage + vv.prob
end
-- Заносим максимальное количество всех типов чуваков, которые данный респавнер может наспаунить.
for kk,vv in pairs(v.respawn_section) do
local tt = v.sectSpawnProps[vv.section]
local community_rank = tt.community.."_"..tt.rank
if can_spawn[community_rank] == nil then
can_spawn[community_rank] = {community = tt.community, rank = tt.rank}
end
end
end
-- Выводим все это в общей статистике
local total_max, total_prob, total_current, total_limit = 0,0,0,0
for k,v in pairs(can_spawn) do
local cs = sim_statistic.simNpcCount(v.community, v.rank)
local gl = simMaxCount[k]
if gl == nil then gl = 0 end
printf("%s current=%s limit=%s", k, cs, gl)
end
printf("TOTAL: current=%s limit=%s", total_current, total_limit)
end
-- Сбор статистики по ненастроенным объектам
function estats()
printf("***************** SPAWN ERROR STATISTIC *********************")
for k,v in pairs(respawners) do
-- Заносим максимальное количество всех типов чуваков, которые данный респавнер может наспаунить.
for kk,vv in pairs(v.respawn_section) do
local tt = v.sectSpawnProps[vv.section]
if tt.community == "nil" or tt.rank == "nil" then
printf("respawner [%s]", tostring(v:name()))
printf("Section [%s] community[%s] rank [%s]", vv.section, tt.community, tt.rank)
end
end
end
end
function create_ammo(section, position, lvi, gvi, pid, num)
local ini = system_ini()
local num_in_box = ini:r_u32(section, "box_size")
while num > num_in_box do
alife():create_ammo(section, position, lvi, gvi, pid, num_in_box)
num = num - num_in_box
end
alife():create_ammo(section, position, lvi, gvi, pid, num)
end
local amk_respawner_control={}
local amk_named_respawner_control={}
function init_respawn_params(obj)
amk_respawner_control[obj:name()] = obj
-- Вычитываем настройки спауна
local ini = obj:spawn_ini()
if not ini:section_exist(section_name) then
return
end
obj.respawn_section = r_spawns(ini, section_name, "respawn_section", obj.sectSpawnProps)
if obj.respawn_section == nil then
abort("RESPAWN: [%s] field 'respawn_section' doesn't exist.", obj:name())
end
obj.amk_name = r_str(ini, section_name, "amk_name", nil)
if obj.amk_name then amk_named_respawner_control[obj.amk_name] = obj end
obj.min_count = r_num(ini, section_name, "min_count", 0)
obj.max_count = r_num(ini, section_name, "max_count", -1)
if obj.min_count > obj.max_count and
obj.max_count ~= -1
then
abort("RESPAWN: [%s] min_count > max_count", obj:name())
end
--' FOR DEBUG ONLY, please don't forget to delete
--'if obj.max_count > 0 then
--' obj.min_count = obj.max_count
--'end
obj.max_spawn = r_num(ini, section_name, "max_spawn", 1)
obj.idle_spawn_min, obj.idle_spawn_max = r_2nums(ini, section_name, "idle_spawn")
if obj.idle_spawn_min == nil then
abort("RESPAWN: [%s] field 'idle_spawn' doesn't exist.", obj:name())
end
if obj.idle_spawn_max == nil then
obj.idle_spawn_max = obj.idle_spawn_min
end
--' Вычитка пресетов
if idle_spawn_preset[obj.idle_spawn_min] ~= nil then
obj.idle_spawn_min = idle_spawn_preset[obj.idle_spawn_min]
else
obj.idle_spawn_min = tonumber(obj.idle_spawn_min)
end
if idle_spawn_preset[obj.idle_spawn_max] ~= nil then
obj.idle_spawn_max = idle_spawn_preset[obj.idle_spawn_max]
else
obj.idle_spawn_max = tonumber(obj.idle_spawn_max)
end
obj.str_conditions = r_str(ini, section_name, "conditions", 100)
obj.conditions = xr_logic.parse_condlist(obj, section_name, "conditions", obj.str_conditions)
obj.respawn_radius = r_num(ini, section_name, "respawn_radius", -1)
--' Спешкейс, чтобы сохранить совместимость сейвов.
if obj:name() == "mil_freedom_barier_respawn_1" then
obj.respawn_radius = -1
end
obj.parent = r_num(ini, section_name, "parent", nil)
obj.item_spawn = r_bool(ini, section_name, "item_spawn", false)
-- производим первичную инициализацию
if obj.rt_read == false then
obj.respawn_time = game.CTime()
--sak.dbglog("INIT [%s] %s %s", tostring(obj:name()), obj.respawn_time:dateToString(0), obj.respawn_time:timeToString(1))
end
-- Для сбора статистики сохраняем указатель на респавнер
respawners[obj:name()] = obj
if obj.parent ~= nil then
respawners_by_parent[obj.parent] = obj
end
--' Отметка респавнера мапспотом (для статистики)
sim_statistic.register_respawn(obj)
end
function reinit_spawner_params(name)
if amk_respawner_control[name] then
init_respawn_params(amk_respawner_control[name])
end
end
function get_respawner_by_name(name)
if amk_named_respawner_control[name] then
return alife():object(amk_named_respawner_control[name].id)
end
end
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.