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

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

Выявил, что добавляются в amk_anoms.syncronize() (амк-шные динамические аномалии), оттуда корни растут. И почему-то одному неписю, который ничем непримечателен. Длиннющая строка всех аномалий записывается ему в рестрикторы. Ошибка неординарная, но может у кого было подобное. Не могу понять, откуда они тащатся и почему только ему одному.

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

@Zagolski, именно так и действует обход аномалий в АМК. Остальные НПЦ попадают в исключения, а ему одному подрубаются. Надо посмотреть в скриптах условия включчения схемы обхода аномалий. И использовать кстати любую другую схему обхода, по-моему во всех из них в рестрикторы пишутся не все аномалии на уровне, а только ближайшие.

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

Были мысли об этом, но тогда бы аномалии записывались и другим неписям. Но другим не пишутся, записываются только нужные рестрикторы. Я этого товарища везде перепроверил, в т.ч. по цепочке вызовов к amk_anoms.syncronize(), не нашел связей.

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

Отбой, проблему решил.

 

Аномалии не должны сразу все записываться в рестиркторы в амк-шной схеме. Это висит на медленном апдейте, запись происходит постепенно, чаще по две-три штуки, тех аномалий, которые ближайшие к неписю. Старые вычищаются, новые добавляются. А у меня при заходе на уровень происходила первая одиночная запись всех аномалий в игре неписям, чего быть не должно. Ну и переполнение буфера с последствиями. Вызов шел из blowout_scheme.script

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

Господа, выручайте :(

При первом переходе на Неразведанную Землю ловлю вылет на этапе загрузке уровня:

Скрытый текст

Expression    : fatal error
Function      : CInifile::r_section
File          : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp
Line          : 342
Description   : <no expression>
Arguments     : Can't open section 'aver_musics'

Куда копать, подскажите пожалуйста

Ссылка на комментарий
6 минут назад, _Sk8_AsTeR_ сказал:

Куда копать, подскажите пожалуйста

Отсутствует секция предмета  aver_musics, но он где-то заспавнен или прописан кому-то в рюкзак.

Хотя может быть это секция не предмета, а амбиента на локации.

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

@Graff46

Посмотрел лог успешной загрузки другого уровня. Похоже что это грузятся звуки уровня.

На успешном логе проходит эта стадия успешно: Loading music tracks from 'marsh_musics'  (болота вроде грузил, где Чистое Небо тусуется)

А при загрузке Неразв. Земли тут загрузка спотыкается:  Loading music tracks from 'aver_musics'...    FATAL ERROR

Где-то нужно смотреть конфиги ззвуков на отсутствие соответствующей секции, если я все верно понял. Но вот где...

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

@_Sk8_AsTeR_

1. К скриптованию никаким боком. Это конфиги.

2.

3 минуты назад, _Sk8_AsTeR_ сказал:

Но вот где...

В принципе тебе ответили, но - если сделать так:

забиваешь marsh_musics в поиск и ищешь, а где же оно прописано. И находишь САМ! именно этот файл))

 

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

Доброго времени!

Подскажите, возможно ли скриптом проверить, идёт ли дождь на локации?

Если можно, то каким образом?

Заранее спасибо!

Важнейшая задача цивилизации - научить человека мыслить.

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

 

 

Всем привет!

Начну с того что маюсь поиском давно, и вариантов по одним и тем же функциям перепробовал множество, не знаю что и делать. Neeed help! 

 

Нужно: Через диалог активировать таймер, по истечению которого выдаётся поршень+сообщение. (доп условие - тайм фактор Не должен ломаться после перезагрузки)

Поделка_1 (таймфактор ломается после перезагрузки)

 

function start_timer()       


    local iTimer = time_global() + 10000 
    local function check_timer() 
    return time_global() > iTimer 
    end
    level.add_call(check_timer, action_timer) 
end
function action_timer() 
db.actor:give_info_portion("test_portion")
end


Поделка_2 (пропуск таймера и мгновенный переход к выполнению test_333)  не довёл до ума но увидел что с этой функцией невозможно побороть сейфлоад, так же пропадает после перезагрузки.

 

 

 


function start_timer_medpreparat(first_speaker,second_speaker) 
local function test_333() 
give_info("vikarii_quest_medpreparat_time") 
db.actor:give_game_news("vikarii_medpreparat_message", 0, "default", 10000) 
end 
CreateTimeEvent("test_222",zaebalsa, 5,test_333()) 
end
 

 

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

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

Ранее был известен под ником BoBaH_671.

Ссылка на комментарий
1 минуту назад, Overfirst сказал:

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

Нет возможности работы в рестрикторе, нужна конкретно функция на таймер с запоминанием в сейвлоаде.

Ссылка на комментарий
1 час назад, Lasplagas сказал:

 

 

Всем привет!

Начну с того что маюсь поиском давно, и вариантов по одним и тем же функциям перепробовал множество, не знаю что и делать. Neeed help! 

 

Нужно: Через диалог активировать таймер, по истечению которого выдаётся поршень+сообщение. (доп условие - тайм фактор Не должен ломаться после перезагрузки)

Поделка_1 (таймфактор ломается после перезагрузки)

  Показать

function start_timer()       


    local iTimer = time_global() + 10000 
    local function check_timer() 
    return time_global() > iTimer 
    end
    level.add_call(check_timer, action_timer) 
end
function action_timer() 
db.actor:give_info_portion("test_portion")
end


Поделка_2 (пропуск таймера и мгновенный переход к выполнению test_333)  не довёл до ума но увидел что с этой функцией невозможно побороть сейфлоад, так же пропадает после перезагрузки.

 

  Показать

 


function start_timer_medpreparat(first_speaker,second_speaker) 
local function test_333() 
give_info("vikarii_quest_medpreparat_time") 
db.actor:give_game_news("vikarii_medpreparat_message", 0, "default", 10000) 
end 
CreateTimeEvent("test_222",zaebalsa, 5,test_333()) 
end
 

 

пример_3 ( так же ломается при сейвлоаде)



local iTimer
function function_onetimer()
    iTimer = time_global() + 12*1000 
end
 
function timer_5_minutes()
    if iTimer and iTimer < time_global() then 
        iTimer = nil 
        db.actor:give_info_portion("vikarii_quest_medpreparat_time")
    end
end


регистрация в bind_stalker.scripts

dialogs_deadcity.timer_5_minutes()


 
Ссылка на комментарий
4 hours ago, Overfirst said:

может, что-то упустил?

Ну.. Как минимум то, что стоит уйти на другую локацию и такой таймер все, останавливается.

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

@Lasplagas, не мучайся. Ни в одном из твоих примеров нет сохранения/загрузки таймера. Поищи готовую реализацию сохраняемых таймеров. Ну, например, можешь попробовать вытащить из OGSE.

 

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

@dsh, Спасибо за подсказку. К сожалению вчера уже нашёл но я слишком деревянный что бы понять как собрать из их кусков что либо работающее. 
https://github.com/KRodinn/OGSE_0693_Optimized/blob/be4597706496ba810682b3f4f4754c6879b4b932/gamedata/scripts/ogse_st_mgr.script#L353 вот инструкция.

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

Можно ли как-то "подключиться" к биндеру объекта? Пробовал так:

local a = level.object_by_id(mmobj.id)
local b = a:binded_object()
b.update = function(delta) get_console():execute("MY_BIND!") b.update(delta) end
a:bind_object(b)

Но ничего не происходит...

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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