Перейти к контенту

Мастерская по разбору "вылетов" X-Ray


aka_sektor

Рекомендуемые сообщения

(изменено)

@Stalker_Monolit, это страшный баг. Он меня бесит постоянно. Возникает от бага скриптов. А в точности от функций повторяющихся циклично или в геометрической прогрессии.

 

@Stalker_Monolit, это не баг движка. Это переполнение буфера. Хотя буфер можно увеличить, но этот баг скриптов всё равно приведёт к переполнению даже террабайта памяти буфера.

 

@Stalker_Monolit, у тебя логика восприятия контента не правильная. Удаление через спавн...у мутантов рестрикторы? У мутантов не бывает рестрикторов. Скорее у рестриктора могут быть в подчинении мутанты со своей логикой.

Изменено пользователем aka_sektor
объединил посты

andreyholkin.gif

rod_cccp.gif

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

[error][ 8] : Недостаточно памяти для обработки команды.

Этому виной не движок и не интернет, виной всему кривые руки разрабов и недальновидность в прогнозировании логики.

Я сам такие баги создаю постоянно и решаю тут же.

 

Этот баг возникает на почве скриптов которые держат буфер переполненным, а именно когда в функции упдаты скрипта начинаешь пихать несовместимые разовые функции или когда скрипт начинает в геометрической прогрессии возводить функцию движка. Еще может возникать от несовместимости конечного бенифициара, например у тебя рядом для холдера ГГ и для материалов скрипты в одной связке. Есть еще моменты - не помню все.

 

Вот например десяток таких скриптов способны убить весь буфер, так как идёт постоянная проверка на поиск и обновление, хотя один этот документ не сильно тянет память.

 

 

function check_car()
if current_car == nil then
current_car = xr_logic.pstor_retrieve(db.actor, "actor_in_btr", nil)
end
if not current_car and inside_the_car == false then
for k,v in pairs(db.btr) do
local car = level.object_by_id(k)
if car then
local actor_pos = db.actor:position()
local car_pos = car:bone_position("seat_left")
if actor_pos:distance_to(car_pos) < 1 then
db.actor:hide_weapon()
current_car = car:id()
inside_the_car = true
enable_gun()
hud_info()
end
end
end
else
local actor_pos = db.actor:position()
local car = level.object_by_id(current_car)
if car then
check_btr_hud()
hud_info()
local car_pos = car:bone_position("seat_left")
if inside_the_car == false then
if actor_pos:distance_to(car_pos) < 1 then
db.actor:hide_weapon()
current_car = car:id()
inside_the_car = true
check_btr_hud()
enable_gun()
hud_info()
return
else
local point = car_pos
local look = car_pos
db.actor:set_actor_position(point)
local dir = look:sub(point)
db.actor:set_actor_direction(-dir:getH())
db.actor:hide_weapon()
current_car = car:id()
inside_the_car = true
check_btr_hud()
enable_gun()
hud_info()
return
end
else
if actor_pos:distance_to(car_pos) > 1 then
db.actor:restore_weapon()
inside_the_car = false
check_btr_hud()
disable_gun()
current_car = nil
hud_info()
pstor_delete(db.actor,"actor_in_btr")
return
end
local script_car = car:get_car()
if script_car:HasWeapon() and target then
local targ = level.object_by_id(target)
if targ then
if not targ:alive() then
target = nil
targ = nil
end
if targ then
if not has_alife_info("auto_pricel_start") then
if IsStalker(targ) or IsMonster(targ) then
local cls = targ:clsid()
if cls == clsid.burer_s or cls == clsid.gigant_s then
local position = targ:bone_position("head")
script_car:SetParam(CCar.eWpnDesiredPos, position)
else
if cls == clsid.chimera_s then
local position = targ:bone_position("head_boss")
script_car:SetParam(CCar.eWpnDesiredPos, position)
else
local position = targ:bone_position("bip01_head")
script_car:SetParam(CCar.eWpnDesiredPos, position)
xr_sound.play_sound_looped(db.actor:id(), "cel_zahvachena")
end
end
else
local cls = targ:clsid()
local position = targ:position()
if cls == clsid.car_s then
position = targ:bone_position("kabina")
end
if cls == clsid.script_heli then
position = targ:bone_position("pilot1")
end
script_car:SetParam(CCar.eWpnDesiredPos, position)
end
end
end
end
end
end
else
db.actor:restore_weapon()
inside_the_car = false
current_car = nil
check_btr_hud()
hud_info()
pstor_delete(db.actor,"actor_in_btr")
end
end
end

-------------------------------------------------------------------------------



function hud_info()
local hud = get_hud()
if inside_the_car == false or in_btr == false then
local targ = hud:GetCustomStatic("btr_target")
if targ then
hud:RemoveCustomStatic("btr_target")
end
local armor = hud:GetCustomStatic("btr_armor")
if armor then
hud:RemoveCustomStatic("btr_armor")
end
local critical = hud:GetCustomStatic("btr_critical")
if critical then
hud:RemoveCustomStatic("btr_critical")
end
return
end
local car_chek = level.object_by_id(current_car)
if car_chek then
local script_car = car_chek:get_car()
if in_btr then
local health = script_car:GetfHealth()
local targ = hud:GetCustomStatic("btr_target")
if health < 0.35 then
local targ = hud:GetCustomStatic("btr_target")
if targ then
hud:RemoveCustomStatic("btr_target")
end
local critical = hud:GetCustomStatic("btr_critical")
if not critical then
hud:AddCustomStatic("btr_critical", true)
critical = hud:GetCustomStatic("btr_critical"):wnd()
if chech_count == 0 then
if math.random() > 0.5 then
critical:TextControl():SetTextST(game.translate_string("attention"))
else
xr_sound.play_sound_looped(db.actor:id(), "tank_gorit") --sound
end
end
chech_count = chech_count + 1
if chech_count >= 50 then
chech_count = 0
end
else
critical = hud:GetCustomStatic("btr_critical"):wnd()
if chech_count == 0 then
if math.random() > 0.5 then
xr_sound.play_sound_looped(db.actor:id(), "povreghdenie_boeukladki_chut_nevzorvalos")
critical:TextControl():SetTextST(game.translate_string("attention"))
else
critical:TextControl():SetTextST(game.translate_string("attention_explosion"))
end
end
chech_count = chech_count + 1
if chech_count >= 50 then
chech_count = 0
end
end
local armor = hud:GetCustomStatic("btr_armor")
if not armor then
hud:AddCustomStatic("btr_armor", true)
armor = hud:GetCustomStatic("btr_armor"):wnd()
armor:TextControl():SetTextST(game.translate_string("vehicle_health_")..tostring(math.floor(health*100)).." %")
else
armor = hud:GetCustomStatic("btr_armor"):wnd()
armor:TextControl():SetTextST(game.translate_string("vehicle_health_")..tostring(math.floor(health*100)).." %")
end
else
local critical = hud:GetCustomStatic("btr_critical")
if critical then
hud:RemoveCustomStatic("btr_critical")
end
if not targ then
hud:AddCustomStatic("btr_target", true)
targ = hud:GetCustomStatic("btr_target"):wnd()
targ:TextControl():SetTextST(game.translate_string("weapon_no_target"))
else
targ = hud:GetCustomStatic("btr_target"):wnd()
end
if target then
local target_descr = level.object_by_id(target)
if target_descr and script_car:IsObjectVisible(target_descr) then
local str = resolve_target(target_descr)
if str then
targ:TextControl():SetTextST(game.translate_string("")..tostring(str).."")
else
targ:TextControl():SetTextST(game.translate_string("not_know_target"))
end
else
targ:TextControl():SetTextST(game.translate_string("not_visible"))
end
else
targ:TextControl():SetTextST(game.translate_string("weapon_no_target"))
end
local armor = hud:GetCustomStatic("btr_armor")
if not armor then
hud:AddCustomStatic("btr_armor", true)
armor = hud:GetCustomStatic("btr_armor"):wnd()
armor:TextControl():SetTextST(game.translate_string("vehicle_health_")..tostring(math.floor(health*100)).." %")
else
armor = hud:GetCustomStatic("btr_armor"):wnd()
armor:TextControl():SetTextST(game.translate_string("vehicle_health_")..tostring(math.floor(health*100)).." %")
end
end
else
local targ = hud:GetCustomStatic("btr_target")
if targ then
hud:RemoveCustomStatic("btr_target")
end
local armor = hud:GetCustomStatic("btr_armor")
if armor then
hud:RemoveCustomStatic("btr_armor")
end
local critical = hud:GetCustomStatic("btr_critical")
if critical then
hud:RemoveCustomStatic("btr_critical")
end
end
else
local targ = hud:GetCustomStatic("btr_target")
if targ then
hud:RemoveCustomStatic("btr_target")
end
local armor = hud:GetCustomStatic("btr_armor")
if armor then
hud:RemoveCustomStatic("btr_armor")
end
local critical = hud:GetCustomStatic("btr_critical")
if critical then
hud:RemoveCustomStatic("btr_critical")
end
end
end

 

Этот ответ не по ситуации совсем. Гаме Спай  - это отдельная тема и сейчас не тот момент.

 

По

 

 

0023:0F783779 xrGameSpy.dll, xrGS_GetGameID()
0023:0F79E537 xrGameSpy.dll, xrGS_ServerBrowserThink()

[error][ 87] : Параметр задан неверно. 

 

согласен - ищет интернет - заметил, но бага не ловил такого никогда.

Изменено пользователем aka_sektor
код в форму добавляем
  • Полезно 1
  • Сомнительно 2

andreyholkin.gif

rod_cccp.gif

 

Поделиться этим сообщением


Ссылка на сообщение

@aka_sektor, не стоит явно выделять логи по номеру строки - ибо это явное введение в заблуждение пользователя. Номер строки не является классификатором. Если бы у нас в проекте был один файл, то тогда так можно. Под одним номером у тебя могут быть совершенно разные вылеты.

andreyholkin.gif

rod_cccp.gif

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

aka_sektor,

 

Просто по 73 строке такой ошибки не видел раньше.

В связи с правками движка и смещением строк в исходниках, придумай другой классификатор. Я уже говорил про это.

 

В разных оригинальных версиях движка, возможно несовпадение строк.

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

aka_sektor,

Судя по всему, дебаг изменился

 

[error]Expression : fatal error
[error]Function : CModelPool::Instance_Create
[error]File : E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : Unknown visual type

 

 

bcf3148b9d56t.jpg

 

Причем тут Дебаг? Линия указывает на строку в файле E:\stalker\patch_1_0004\xr_3da\xrRender\ModelPool.cpp

Соответственно в ТЧ и ЗП могут быть разные линии.

Я толкую вообще не за этот вылет, а в целом.

Изменено пользователем Дизель
  • Согласен 3

andreyholkin.gif

rod_cccp.gif

 

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

  • Куратор(ы) темы:

AMK-Team.ru

×
×
  • Создать...