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

[CoP] Ковыряемся в файлах


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

FaLLoN

function give_prov_mess()
if db.actor:has_info("give_mess") and db.actor:dont_has_info("test_1") then
  db.actor:give_game_news("Неизвестно", "Грач это Проводник! Нужно встретится в подвале Гастронома","ui_iconsTotal_lost_thing", 3000, 30000)
  db.actor:give_info_portion("test_1")--выдача инфопоршня
end
end

 


ColR_iT, да, ты прав. Вот тут было бы хорошо иметь возможность отредактировать пост :)

Изменено пользователем Shredder
Ссылка на комментарий
Происходит вылет, при подходе к одному месту! там есть смарт и спейсрестриктор начала ( выдача квеста ) и рестриктор для квеста ( айди ), так-же это рестриктор вызывает выброс и прочее... Вот вылет лога: 

 


* Saving spawns... 

* Saving objects... 

* 556 objects are successfully saved 

* Game Никита - quicksave.scop is successfully saved to file 'c:\users\public\docume~1\stalke~1.-\savedgames\Никита - quicksave.scop' 

stack trace: 

 

0023:0884E8B3 xrGame.dll, CDialogHolder::CDialogHolder() 

0023:0884FB45 xrGame.dll, CDialogHolder::CDialogHolder() 

0023:0570A5B4 lua.JIT.1.1.4.dll, lua_getinfo() 

0023:0570A898 lua.JIT.1.1.4.dll, lua_getinfo() 

0023:057020A5 lua.JIT.1.1.4.dll, lua_call() 

0023:0570AAE8 lua.JIT.1.1.4.dll, lua_yield() 

0023:030C9DC6 luabind.beta7-devel.rc4.dll, luabind::detail::pcall() 

 

[error][ 183] : Невозможно создать файл, так как он уже существует.


 

Это вылет текущего билда... прогрузил старый! ( вчерашний.. ). Там тоже есть этот вылет! но лог немного другой. Вот он: 

 


intro_start intro_game 

intro_delete ::update_game_intro 

compiling shader particle_alphaonly 

compiling shader model_distort_1 

compiling shader model_distort_2 

* [win32]: free[2709660 K], reserved[183260 K], committed[1301320 K] 

* [ D3D ]: textures[374111 K] 

* [x-ray]: crt heap[331506 K], process heap[13922 K], game lua[10540 K], render[2876 K] 

* [x-ray]: economy: strings[9883 K], smem[10215 K] 

* Saving spawns... 

* Saving objects... 

* 614 objects are successfully saved 

* Game Никита - выброс.scop is successfully saved to file 'c:\users\public\docume~1\stalke~1.-\savedgames\Никита - выброс.scop' 

stack trace: 

 

0023:085AE8B3 xrGame.dll, CDialogHolder::CDialogHolder() 

0023:085AFB45 xrGame.dll, CDialogHolder::CDialogHolder() 

0023:056CA5B4 lua.JIT.1.1.4.dll, lua_getinfo() 

0023:056CA898 lua.JIT.1.1.4.dll, lua_getinfo() 

0023:056C20A5 lua.JIT.1.1.4.dll, lua_call() 

0023:056CAAE8 lua.JIT.1.1.4.dll, lua_yield() 

0023:02F79DC6 luabind.beta7-devel.rc4.dll, luabind::detail::pcall() 

 

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


 

Из-за чего они происходят?? Мне хотяб приблизительно знать... фишка в том, что вылет происходит только в том месте!
Ссылка на комментарий
Добавлю: 
После выброса выдается инфопоршень, вот все, что написано в логике этого поршня: 
Код
[logic] 
active = sr_idle@dolg_go 
 
[sr_idle@dolg_go] 
on_info = {=actor_in_zone(pripyat_sr_vibros)} %+dolg_go_fmg2% sr_idle@wait_info 
   
[sr_idle@wait_info] 
on_info = {+dialog_prov_vse} %=start_surge%  sr_idle@wait_end_surge 
   
[sr_idle@wait_end_surge] 
on_info = {!surge_started} %+vibros_proshel -dialog_prov_vse% sr_idle@kill_otrad 
 
[sr_idle@kill_otrad] 
on_info = {+vibros_proshel} %=remove_npc(pri_fmg_prov) =remove_squad(dolg_nachalo_squad)% sr_idle@nil 
 
[sr_idle@nil]
 

Если вбежать в эту зону во время выброса ( там есть укрытие ), то вылета нет! после выброса, вылета тоже нет! но если убежать из этой зоны, а затем вернуться... вылет! и скорее всего из-за смарта... У смарта есть ексклюзивная логика 3 НПС. Суть такова, после в хода в Этот спей рестриктор ( его код выше ) выдается поршень +dolg_go_fmg2. И отряд идет на 2 смарт. После выброса этот отряд удаляется! логика НПС 3 ниже: 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;Логика Главоря Долга;;;;;;;;;;;; 
[logic@fellon] 
active = walker@vstrecha 
suitable = {=check_npc_name(fellon)} true 
 
[walker@vstrecha] 
meet = meet@fellon_nach 
path_walk = fellon_1_walk 
path_look = fellon_1_look 
on_info = {+dolg_dialog_done} animpoint@fellon 
 
[animpoint@fellon] 
cover_name = pripyat_fmg1_fellon_animpoint 
meet = no_meet 
use_camp = false 
on_info = {+vibros_proshel} nil 
 
[meet@fellon_nach] 
use = self 
meet_state = nil 
mmet_state_wpn = nil 
victim = 8|actor 
victim_wpn = 8|actor 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;Логика Долга 1;;;;;;;;;;;; 
[logic@jora] 
active = walker@vstrecha2 
suitable = {=check_npc_name(jora)} true 
 
[walker@vstrecha2] 
meet = meet@jora 
path_walk = jora_1_walk 
path_look = jora_1_look 
on_info = {+dolg_dialog_done} animpoint@jora 
 
[animpoint@jora] 
cover_name = pripyat_fmg1_jora_animpoint 
meet = no_meet 
use_camp = true 
on_info = {+vibros_proshel} nil 
 
[meet@jora] 
use = false 
victim = 8|actor 
victim_wpn = 8|actor 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;Логика Долга 2;;;;;;;;;;;; 
[logic@maik] 
active = walker@vstrecha1 
suitable = {=check_npc_name(maik)} true 
 
[walker@vstrecha1] 
meet = meet@maik 
path_walk = maik_1_walk 
path_look = maik_1_look 
on_info = {+dolg_dialog_done} animpoint@maik 
 
[animpoint@maik] 
cover_name = pripyat_fmg1_maik_animpoint 
meet = no_meet 
use_camp = true 
on_info = {+vibros_proshel} nil 
 
[meet@maik] 
use = false 
victim = 8|actor 
victim_wpn = 8|actor

 
Мб это из-за этого? мол смарт ищет отряд, а их нет? on_info = {+vibros_proshel} nil без этого то-же происходит вылет... Максимум подробно расписал... Заранее СПС!
Это все относится к билду! то-есть ко 2 логу! или ошибки у них разные?


теперь вылет в билде, такой же как и в 1 логе... вот на всякий случай лог вылета:

 

* RM_Dump: vs        : 81
* RM_Dump: ps        : 83
* RM_Dump: dcl       : 20
* RM_Dump: states    : 78
* RM_Dump: tex_list  : 1807
* RM_Dump: matrices  : 0
* RM_Dump: lst_constants: 0
* RM_Dump: v_passes  : 2355
* RM_Dump: v_elements: 2356
* RM_Dump: v_shaders : 1292
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: unrecognized, 16
* NVidia MGPU: Logical(1), Physical(1)
* Starting rendering as 2-GPU.
*** RESET [106 ms]
* MEMORY USAGE: 331713 K
* End of synchronization A[1] R[1]
* [win32]: free[2756080 K], reserved[178664 K], committed[1259496 K]
* [ D3D ]: textures[373086 K]
* [x-ray]: crt heap[331754 K], process heap[13410 K], game lua[12692 K], render[3605 K]
* [x-ray]: economy: strings[9837 K], smem[10212 K]
* Saving spawns...
* Saving objects...
* 606 objects are successfully saved
* Game Никита - quicksave.scop is successfully saved to file 'c:\users\public\docume~1\stalke~1.-\savedgames\Никита - quicksave.scop'
stack trace:
 
0023:0869E8B3 xrGame.dll, CDialogHolder::CDialogHolder()
0023:0869FB45 xrGame.dll, CDialogHolder::CDialogHolder()
0023:0679A5B4 lua.JIT.1.1.4.dll, lua_getinfo()
0023:0679A898 lua.JIT.1.1.4.dll, lua_getinfo()
0023:067920A5 lua.JIT.1.1.4.dll, lua_call()
0023:0679AAE8 lua.JIT.1.1.4.dll, lua_yield()
0023:031C9DC6 luabind.beta7-devel.rc4.dll, luabind::detail::pcall()
 
[error][     183]    : Невозможно создать файл, так как он уже существует.
 

Изменено пользователем FeLLoN
Ссылка на комментарий

FeLLoN, когда происходит вылет, отряд ещё жив?

они удаляются! =remove_squad(их айди) в логике Спейс Рестриктора!Без ремув Сквада вылет из 2 лога первого сообщения, после ремов сквад вылет из 1 лога 1сообщения

 

Не нужно цитировать предыдущие сообщения целиком!

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Не встречал таких вылетов, но попробуй начать с простого - то есть в логике рестриктора или НПС сначала один элемент, потом два, и так далее, лично мне помогает отслеживать вылеты, благо новую игру начинать не надо.
 

Ссылка на комментарий

Вопрос по вылету закрыт! Причина была следующая ( скорее всего так, но вылета нет! )

Рядом был смарт, там было 2 отряда ( симуляционныйх ). У них не было таргет смарт, там были нпс_рандом. Ну короч сим отряд. У того смарта где они были, не-было укрытия от выброса. У всех смартах Откл была симуляция, кроме 1! Там симуляция разрешалась, после окончания выброса. Так-вот после выброса, когда я шел на смарт где были эти отряды, там было пусто! выброс их убил.. или не знаю что! и видимо, эти сим отряды должны были идти на тот смарт ( возле которого был вылет), а их то не-было.. ну короч вылет пропал, после удаления этих отрядов из simulations.ltx 

Изменено пользователем FeLLoN
Ссылка на комментарий

... эти сим отряды должны были идти на тот смарт (возле которого был вылет), а их то не-было...

Спасибо, поржал. Когда сквад погибает, он уже не участвует в симуляции и не должен никуда идти. Скорее всего причина вылета не в этом, и ты ещё с ней столкнешься...
  • Нравится 1
Ссылка на комментарий

Здравствуйте. Я вот тут полазил по скриптам и увидел интересные строки в файле se_zones.script :

class "se_zone_anom" (cse_anomalous_zone)
function se_zone_anom:__init (section) super (section)
self.m_registred = false
end
function se_zone_anom:on_register()
cse_anomalous_zone.on_register(self)
-- Проверяем кастомдату обьекта на наличие стори айди.
story_objects.check_spawn_ini_for_story_id(self)

self.m_registred = true
self.artefact_spawn_idle = 60*60*1000*utils.cfg_get_number(system_ini(), self:section_name(), "artefact_spawn_idle", self, false, 24)  --Собственно меня заинтересовали вот эти строки (эта и ниже)
self.artefact_spawn_rnd = utils.cfg_get_number(system_ini(), self:section_name(), "artefact_spawn_rnd", self, false, 100)

if not level_anomaly.second_run and level_anomaly.check_on_off_mode(self) == false and not string.find(self:name(),"mine_field") then
tmp_anomalies[table.getn(tmp_anomalies)+1] = self.id
end
end

 

 

Как я понял, здесь высчитывается вероятность заспавнить артефакт, но используются ли эти строки игрой? В биндерах stalker и anomaly_zone упоминаний этой функции я не видел, но может они как по-иному используются, вроде как скрипты по работе с игровыми классами... А то не могу понять, респавнятся ли артефакты в аномалиях в ТЧ и ЧН и, если да, то по какому принципу: двигателем или скриптами. За ответ заранее  спасибо.

Работы на Artstationhttps://www.artstation.com/artist/stalker_lom

Ссылка на комментарий

Возможно, когда-то этот код использовался, может быть даже в ТЧ или ЧН, но в ЗП это рудимент, т.к. у se_zone_anom метод update не вызывается.

Ссылка на комментарий

Возможно ли как-то зафиксировать онлайновый объект (конкретно артефакт), чтобы его невозможно было сдвинуть с места. Проблема в чём: сделал для ЗП динамические аномалии (на базе АМК), пытаюсь сделать детекторы аномалий. Для этого в каждую такую аномалию спавню артефакт, в настройках детектора ставлю af_vis_radius = 0. Всё клёво, но есть один момент. Проблема с аномалией "воронка". При срабатывании она выбрасывает этот артефакт. Как то можно решить эту проблему?



Порыскав в теме "Справочник по функциям и классам" нашёл, что мне нужно.

 
function af_anomaly_binder:update(delta)
    local ph_object = self.object:get_physics_shell():get_element_by_order(0)
    if not ph_object:is_fixed() then
        ph_object:fix()
    end
end

Всё прекрасно работает, воронка артефакт не выбрасывает :) 

Ссылка на комментарий

При заселении локации столкнулся с такой проблемой. 

Есть база группировки, открытая (не такая, как Скадовск или Янов).

Если ГГ начинает с ней (базой) войну, то нужно, чтобы прилетел вертолет и высадил (условно) сквад поддержки.

В ЧН скриптах есть хорошая функция для логики is_smart_in_combat. В ЗП я ее не нашел.

Вот ее 

 

function is_smart_in_combat (actor, npc, p)


if p == nil then abort("Wrong parameter!!!") end
local sim_board = sim_board.get_sim_board()
for k,v in pairs (p) do
local smart = sim_board:get_smart_by_name(v)
local squads = sim_board.smarts[smart.id].squads
for kk,vv in pairs (squads) do
local squad_stage = smart.combat_manager:get_squad_stage(vv)
if squad_stage == "combat" or squad_stage == "defence" then
return true
end
end
end
return false
end

 

Я бы хотел с дополнениями вызывать эту функцию для смарта базы из логики спейс-рестриктора.

Проблема в том, что для ее регистрации нужно вносить правки в множество файлов. Саму функцию в xr_conditions, а вспомогательные элементы (например, главный get_squad_stage зарегистрирован в sim_combat, которого в ЗП тоже нет) в другие, _g.script и т.п.. Попробовать можно все это прописать, но я боюсь, что будут конфликты с другими функциями и классами.

Посоветуйте, пожалуйста, что делать?

Изменено пользователем karonbaron
Ссылка на комментарий

karonbaron

Немного поправлю: чтобы сделать как ты хочешь, неплохо бы это добавить:

on_info = {=gulag_enemy_actor(имя_смарта) =is_smart_in_combat(имя_смарта)} схема

Так больше шансов, что вертолет прилетит когда надо, а не когда на базу нападет стая собак  :)

А насчет твоей проблемы подсказать вряд ли смогу, т.к. сам на ЗП не работаю. И сейчас у меня возник вопрос а есть ли вообще в ЗП такое состояние у сквада, как "defence", по-моему его просто урезали, как и много еще чего. 

P.S. И насчет "combat" тоже непонятно у сквада предположим есть такое состояние, а вот у смарта? Вот и получается вопросов больше чем ответов...

Ссылка на комментарий

Приветствую, сталкеры. 

Подскажите пожалуйста, возможно ли как-нибудь встроить отображение "hud_crosshair_dist"(дистанция до цели) в оптику?

Ссылка на комментарий

Старлей, благодарю, что откликнулся. 

Не стал я связываться со скриптами, тем более что в этом случае они сильно переплетаются.

Проблему решил по-другому: завел счетчик на смерть неписей, прописал его в работе, т.е. если гасим определенное количество, прилетает вертоль и высаживает десант. Вроде как база несет потери, нужна подмога...

Сработало. ;)

Ссылка на комментарий

Как рассчитывается заражение токсинами в SGM 2.2? Параметр eat_toxicity, допусти, равен 0.05. В игре прибавляется 3% А если 0.1, то 5%... Как так? Есть какие-то еще факторы, влияющие на это?

Параметр sprint_k отвечает, как я понял, за скорость изменения выносливости при спринте с перегрузом, так? Тогда почему, когда я ставлю, например, 20 (дефолт 80) - результата нет, а если 1 - ГГ не устает.

С первым вопросом к авторам мода.
ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

 

Earth2Space

Процитирую кусок actor.ltx

 

sprint_k                                =        75;150;185;180;200;        ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)

По-моему все ясно. Ну а уж если нет, вот выдержка из actor.ltx с комментариями от разработчиков игры:

 

 

;;;;;;;;
;actor_condition only
 
jump_power                 = 0.01 ;умешьшение силы с прыжком без учета веса ноши
jump_weight_power       = 0.05                ;0.045                                        ;умешьшение силы с прыжком с учетом веса ноши, для максимального допустимого веса
overweight_jump_k                        =        5;10                ;10                                        ;коэффициент влияние перегрузки прыжок с весом (умножается на jump_weight_power)
 
stand_power                                =  -0.005
walk_power                                =        0.00001                                ;умешьшение силы за секнду во время ходьбы без учета веса ноши
walk_weight_power                =        0.00005;                        ;умешьшение силы за секнду во время ходьбы с учетом веса ноши, для максимального допустимого веса
overweight_walk_k                =        5;9        ;10                                ;коэффициент влияние перегрузки ноши (умножается на walk_weight_power)
accel_k                                        =        3;5                                        ;коэффициент на бег (умножается walk_power, walk_weight_power)
sprint_k                                =        75;150;185;180;200;        ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)

 

Ссылка на комментарий

Всем привет. Расскажу свою проблемку вкратце. Установлена ЗП+ Misery mod. Так вот: после каждой перезагрузки сейва, ассортимент товара у торговцев полностью обновляется. Как-то это не хардкорно, не так-ли? Можно ли сделать так, чтобы ассортимент обновлялся не после перезагрузки сейва, а, к примеру, через определённый промежуток времени в игре?

Изменено пользователем pAnTeL
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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