#Char :
Серый77 если не хочешь копаться в файлах то просто подходя к локации снимай биорадар с пояса!!!!!!!!
konstantin-69 Спасибр за решение проблнмы с биорадаром а то такой же геморой был!!! лечил с помощью выше изложеннрго метода
добавлено спустя 3 минут
Expression : xml_doc.NavigateToNode(path,index)
Function : CUIXmlInit::InitStatic
File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UIXmlInit.cpp
Line : 172
Description : XML node not found
Arguments : target_dot_26
если я не ошибаюсь то в солянке 2009 года такой ошибки не было!!! там как то было по х*р сколько народу на локации, просто отображалось определенное кол-во
И в 10-й соли такой ошибки нет, есть только недоделанные адаптации под широкоформатники.
Как здорово быть тёртым сталкером! Не бояться каждого шороха, оружия не носить с собой много!
Как попасть в секретку на Варлабе? Привёл туда Долговцев, получил SMS что телепорт убран,
а телепорт как был так и есть, деактеватор что дал Витамин не сработал (в описании деактеватора
так написано). В ГИДе (В правой лифтовой шахте по лестнице поднимаемся в секретную часть Варлаба, говорим с Лентяем. Узнаем про главного ученого.)
Обшарил всю лабу, лифтовые шахты, не нашёл ни х.....
Что делать???
Серый77 Если СМС получил, то телепорт отключился. Это не может быть, т.к. смс вшита в функцию удаления телепорта. Ты видно не про тот телепорт думаешь. Тот который отключился действительно в шахте лифта. Ты спустись в шахту в самый нижний уровень, далее вверх поднимайся по лестнице, и на втором или на третьем уровне попадёшь в секретную часть варлаба.
Char Всё значит от того, где ты скачал, и что ставил. Не от слабой видюхи. В соли для обычных моников всё прописано как и должно быть. У меня тоже такое разрешение.
ui/ui_custom_msgs.xml и там всё прописано до 100
В адаптациях, либо других худах присутствует ещё такой файл
ui_custom_msgs_16.xml -- Вот в них и забыли дописать конфиг до 100, а только до 25 как в 9-й соли, так же забывают дописать инклуды читающихся доков на худе, блокнот Пантеры, худ позиционера и прочее.
В описании деактеватора телепорта что дал Витамин прописано дословно;
(Деактиватор телепорта в секретку Варлаба. Откуда его достал Витамин и почему ключ не сработал
от его биополя-загадка...)
Шахты лифтов я обыскал, по лестницам лазил, упётся в потолок и всё.
А телепорт что напротив входа закидывает в лабу. Я в тупике.
Серый77
Когда поднимаешься по лестнице в правой шахте , на втором этаже , правее от лестницы, будет открытая створка лифта . Может ты не смог в нее пройти ? Там сложно залезть с первого раза. Если играл в ЗП , то должен найти без труда.
А телепорт на выходе из Варлаба к секретной части не имеет отношения.
отредактировал(а) дрыка: 17-07-2011 11:52 GMT3 час.
Серый77 Ты же писал, что "телепорт отключен"? - этот телепорт и отключается, что в шахте лифта. Туда действительно трудно попасть с первого раза, и со второго тоже!
Как здорово быть тёртым сталкером! Не бояться каждого шороха, оружия не носить с собой много!
привет всем, кто на месте! первый день играю в "солянку" и тут же ПРОШУ ПОМОЩИ! меченый дохнет просто так! прохожу пещеру, отдаю шахтёру все цацки и миниган, просыпаюсь на чердаке, иду к Сидрычу а по пути ДОХНУ! как будто по башке прикладом кто лупит, или контра за углом мозг канифолит. появляется красный круг и убывает жизнь. аптечки применял; антирад жрал; кансервы жрал; радиации нет; пытался убежать (куда-нибудь и чем дальше-тем лучше) , спрятаться в подвалах и тд, НИ-ФИ-ГА! ДОХНУ! что это и как с этим бороться? если такая проблема уже обсуждалась, то просто напишите "было! не удивил" а я сам покопаюсь на форуме, может и найду чего. просто, только играть начал и честно лень читать 58 страниц, может ситуация копеечная...
да, чуть не забыл. и устаю моментом, даже если стою на месте. уровень дыхалки повышается-повышается и бах-резко "вы истощены и не можете ничего" и стою и дышу как дурак пока дыхалка не подымица 8-). а может это лично мой всеобщий глюк? начнука заново! благо далеко не ушел, начало игры... &P
grafabashev Алексей, поконкретней надо бы. Где брал Соль , что ставил сверху. Исходной информации маловато.
И вообще может он у тебя пить хочет, сушняк одолел , после микстурок.
Посвящяется кураторам, модераторам темы : вместо банальных изречений в подписи рекомендуйте пользователям ставить характеристику компьютера и игровой набор. Будет легче искать ответ на проблему и не будет постов типа " опиши железо ".
S.T.A.L.K.E.R. ShoC 1.0004 ( топология ) + Народная Солянка от 3.09.10 + ООП
Intel Core 2 Duo E8500 (3.16 GHz), NVIDIA GTX 260 (896 Mb), DDRII (4Gb), 1280х1024, Win 7x64
Ну... По поводу моей проблемы - по локациям больше не бросает вроде. Решением было просто вырезать из ACS всё, что связано с телепортом.
Возникла вторая проблема: начинается выброс, и через секунд 5 игра вылетает. Стабильно, всегда. Без лога, что самое интересное. Что делать? о_О"
Ну или на крайняк я в файле blowout.ltx значение enabled перевела на = 0.0, однако через некоторое время выброс всё равно начался. Это как? 0_о
Как его уже АБСОЛЮТНО отключить, или хотя бы вылечить?
Очень нервный пользователь с больной психикой. На "заскоки" не обижаться пожалуйста. В большинстве случаев я не специально...
файл gamedata\config\gameplay\dialogs_arhara.xml
диалог
в конце диалога после udav_vstrecha_poshli_done
добавить udav_pabota_done
Грузим сейв сразу после прилета на Генераторы или ранее. Говорим с Боцманом первый раз на Генераторах ("Слава яйцам, мы долетели. Бедный пилот - ты ему весь пол в вертухе харчами обделал, да перегар там такой, что глаза режет.").
В следующем диалоге с Боцманом:
- не берем диалог на выдачу задания отключить антенны.
- берем диалог как будто Боцман уже отключил антенны.
(от Архары)
В конце концов не скажешь ничего уже, что не было бы другими раньше сказано
Теренций. 2-й век до н.э
spot Когда Боцман уходит отключать антенны, то идёт по прямой. За ним ГГ доходит до предела возможности, но лучше выйти на дорогу, что рядом так же до предела. Если заклинило, сейв лоад и должно помочь. За несколько прохождений, ниразу не ковырял switch distance
Как здорово быть тёртым сталкером! Не бояться каждого шороха, оружия не носить с собой много!
всем огромнре СПАСИБО за помощь! действительно дело в воде!!! это не Меченый а верблюд, какой-то пустынный. начал заново и столько воды на него извёл, а ведь только Лиса спас, не считая второстепенных заданий! это получается, что если я собирусь в глубокий рейд идти(скоро на свалку пойду) мне надо цистерну с водой перед собой катить? или сотню бутылок по карманам распихать:lok5)? а можно как-нибудь вылечить его от этого сушняка?
grafabashev Ты солянку с купленного диска устанавливал наверное, сам с такого начинал когда то, там просто при установке нужно отключить монорох аддон , ну а лучше скачай здесь и поставь себе, потому что с диском далеко все равно не пройдешь , вылеты задолбают.
Да и так по тексту понятно что в файле за выдачу тайников проблема. Как решить то? Или, скиньте рабочий файл пожалуйста? о_0"
И на мой самый первый вопрос не ответили: как сделать респавн частым? Скиньте файлик, или скажите что редактировать, что бы можно было подстроить под себя?
Вот что в том файле, на который ссылается. "Ошибочная" (по мнению игры) строка подсвечена:
--' Выдача тайника
function CTreasure:give_treasure(k)
local v = self.treasure_info[k]
local obj = alife():story_object(v.target)
if obj ~= nil then news_manager.send_treasure(v.name)
--' Пометить на карте
local text = "%c[255,238,155,23]"..game.translate_string(v.name).."\\n".."%c[default]"..game.translate_string(v.description)
-- if not level.map_has_object_spot(obj.id,"treasure") then
level.map_add_object_spot_ser(obj.id, "treasure", text)
-- else
-- amk.mylog("Blocking mapspot for "..obj:name())
-- end
local task_texture, task_rect = get_texture_info("ui_iconsTotal_found_thing")
local level_key = string.sub(name,1,string.find(name,"_s",1,plain)-1)
local tmp_str = ""
if level_name[level_key] ~= nil then
tmp_str = level_name[level_key]..": "
end
local news_text = "%c[255,160,160,160]"..game.translate_string("st_found_new_treasure").."\\n".."%c[120,255,120,160]"..tmp_str.."%c[170,200,200,200]"..game.translate_string(name)
db.actor:give_game_news(news_text, task_texture, task_rect, 0, 3000)
end
Очень нервный пользователь с больной психикой. На "заскоки" не обижаться пожалуйста. В большинстве случаев я не специально...
--[[------------------------------------------------------------------------------------------------------------------
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 = table.getn( 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 = table.getn( 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.proxy_initialized = false
end
-- сохранение
function se_respawn:STATE_Write( packet )
cse_alife_smart_zone.STATE_Write( self, packet )
local table_size = table.getn(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
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
-- printf("SPAWNER READ table_size[%d]", table_size)
-- print_table(self.spawned_obj)
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
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()))
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
amk.on_REspawn(obj,self)
local tt = self.sectSpawnProps[spawn_section]
if self.item_spawn == false then
if tt.check == true and not self.amk_name then
obj:brain():update()
local smart_terrain_id = obj:smart_terrain_id()
-- printf("SPAWN [%s] move_offline [%s], interactive [%s], smart_terrain_id [%s]", tostring(self:name()), tostring(self:move_offline()), tostring(self:interactive()), smart_terrain_id)
if smart_terrain_id ~= 65535 then
table.insert(self.spawned_obj ,obj.id)
local pos = obj.position
-- printf("SPAWNING [%s] -> [%s], position [%s][%s][%s]", tostring(self:name()), spawn_section, pos.x, pos.y, pos.z)
local sm_obj = alife():object(smart_terrain_id)
printf("SPAWNING for SMART [%s] : [%s] -> [%s]", self:name(), obj:name(), sm_obj:name())
return true
else
alife():release(obj, true)
-- 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()))
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 (IsStalker(obj) or IsMonster(obj)) 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()))
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 table.getn(self.spawned_obj) < self.min_count then
while table.getn(self.spawned_obj) < self.min_count do
if self:create(100) == false then
return
end
end
return
end
-- делаем несколько попыток заспаунить объект.
for i=1,self.max_spawn do
if self.max_count ~= -1 and table.getn(self.spawned_obj) >= self.max_count then
-- 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()
-- idle_time:setHMSms( 0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000)
idle_time:setHMSms( math.random(12, 24), 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000)
self.respawn_time = game.get_game_time() + idle_time
-- Производим попытку заспаунить объекты
self:spawn()
-- 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 table.getn(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 = table.getn(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)
-- Для сбора статистики сохраняем указатель на респавнер
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
Только не забудь бэкал сделать. На счёт вылета; Если понятно откуда пляшет это всё, тогда в тему ДМХ. Здесь чистая солянка обсуждается, а не правленная чрезмерно ручками.
Как здорово быть тёртым сталкером! Не бояться каждого шороха, оружия не носить с собой много!
И вот опять, Знакомые места,
Где СТАЛКов жизнь,
Уныла и пуста,
Текла среди пиров:-beer),
Бессмысленного чванства,
Разврата грязного,
И мелкого тиранства!:buba
Привет всем!!!:victory
Вот это я попарился! Чистый, аж до скрипа. И даже пива в баню не дали!
добавлено спустя 1 минуту
dimak
Привет дружище!!!
отредактировал(а) dgordg: 18-07-2011 14:24 GMT3 час.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.