Перейти к содержанию

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

 
 
12 часов назад, Pavel2000 сказал:

можно ли отключить спавн отрядов на локации?

В каждом смарте, где происходит респавн сквадов есть параметр spawn_num. Это кондлист и если его приравнять к нулю по нужному вам условию респавн прекратиться.

  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
14 часов назад, sosiska23 сказал:

путь правильный

Если abort не отключен, то выше лога ошибки должна быть чуть-ка больше информации о вылете

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mass а как понять что abort не отключен?

Спойлер

"f:\s.t.a.l.k.e.r\s.t.a.l.k.e.r. call of pripyat\bin\xrengine.exe"
* phase time: 0 ms
* phase cmem: 120716 K
Loading objects...
Loading models...
* [prefetch] time:    76597 ms
* [prefetch] memory:  125836Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 76715 ms
* phase cmem: 248959 K
* phase time: 5 ms
* phase cmem: 248959 K
* Creating new game...
* Loading spawn registry...
* 592 spawn points are successfully loaded
 
FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ...k.e.r. call of pripyat\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)
 

stack trace:

0023:69737365 nvwgf2um.dll
 

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

sosiska23 

function abort(fmt, ...)
	local reason = string.format(fmt, ...)
	error_log(reason)
end

 


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 а в каком файле эта функция должна быть?

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


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, sosiska23 сказал:

в каком файле эта функция должна быть?

В _g.script, но лучше ее заменить на что-то более нормальное!

Например: Я когда-то пользовался этим,но теперь у меня функция немного видоизменена. Много из каких мест вызывается Эта функция сойдет для оригинала!

--/ расширенный формат строки (для вывода в лог)
function StringExtraFormat(fmt,...)
    --/ локальная функция: перевод аргумента в стринг
    local val2str = function(val,lua_type)
        if lua_type == 'table' then
            if tonumber(val.x) and tonumber(val.y) and tonumber(val.z) then
                return string.format('tbl{x=%.3f:y=%.3f:z=%.3f}',val.x,val.y,val.z) --/>
            end
            local tbl,str,separator = {},'tbl{',""
            for key,_ in pairs(val) do
                table.insert(tbl, key == tonumber(key) and tostring(key) or key)
            end
            table.sort(tbl)
            for _,key in ipairs(tbl) do
                if (tonumber(key) or 0) > 0 then
                    str = str..separator..tostring(val[tonumber(key)])
                else
                    str = str..separator..key.." = "..tostring(val[key])
                end
                separator = ", "
            end
            return str..'}' --/>
        elseif lua_type == 'userdata' then --/#?# а нужно ли привязываться к движку?
            if type(val.getP) == 'function' then
                if type(val.x) == 'number' and type(val.y) == 'number' and type(val.z) == 'number' then
                    return string.format('vec(x=%.3f:y=%.3f:z=%.3f)',val.x,val.y,val.z) --/>
                end
                return '<vector>' --/>
            elseif type(val.setHMSms) == 'function' then
                return 'CTime('..val:dateToString(0).." "..val:timeToString(3)..")" --/> D/M/Y h:m:s:ms
            end
        elseif lua_type == 'string' then
            return val --string.format("%q", val) --/>
        elseif lua_type == 'boolean' then
            return val and "true" or "false" --/>
        elseif lua_type == 'number' then
            return tostring(val) --/>
        end
        return "<"..lua_type..">" --/>
    end
    --/ основное тело функции: парсинг исходной строки
    if type(fmt) == 'string' then
        if fmt:match('%%[sdf]') then --/ есть патерн(ы)?
            if next({...}) then --/ есть аргумент(ы)?
                local arg,val,lua_type,i = {...},nil,nil,nil
                for i=1,#arg do
                    val = arg[i] --/ значение текущего аргумента
                    lua_type = type(val) --/ тип текущего аргумента
                    if lua_type == 'number' then
                        fmt = fmt:gsub('%%[dsf]',val,1)
                    else
                        fmt = fmt:gsub('%%s',val2str(val,lua_type),1)
                    end
                end
            end
            fmt = fmt:gsub('%%[sdf]',"<NOT_arg!>") --/ заглушка от отсутствия аргументов
        end
    else
        fmt = val2str(fmt,type(fmt))
    end
    return fmt --/> string
    --/ с заменой обычных пробелов (sym_space='\032') на печатные ('\160')
    --return fmt:gsub('%s','\160') --/> string
end

abort = function(fmt,...)
    assert("[error]ABORT CALLED:\n" .. StringExtraFormat(fmt, ...))
    get_console():execute('flush')
    exit()
end

Вроде бы эта функция за авторством Artos'a

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mass заменил, лог опять поменялся: лобавил строк 20

Спойлер

"f:\s.t.a.l.k.e.r\s.t.a.l.k.e.r. call of pripyat\bin\xrengine.exe"
* phase time: 0 ms
* phase cmem: 120716 K
Loading objects...
Loading models...
* [prefetch] time:    104385 ms
* [prefetch] memory:  125836Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 105173 ms
* phase cmem: 248959 K
* phase time: 5 ms
* phase cmem: 248959 K
* Creating new game...
* Loading spawn registry...
* 592 spawn points are successfully loaded
* Log file has been saved successfully!
 
FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....l.k.e.r. call of pripyat\gamedata\scripts\_g.script:545: attempt to call global 'exit' (a nil value)
 

stack trace:

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

 

11 минут назад, sosiska23 сказал:

заменил, лог опять поменялся

Нужно строк 15-20 выше

Хм... assert не работает в оригинале? Запамятовал я наверное. Можно попробовать заменить движковую ф-ию assert на консольную. Тоесть всю строку

Цитата

assert("[error]ABORT CALLED:\n" .. StringExtraFormat(fmt, ...))

на 

Цитата

get_console():execute("[error]ABORT CALLED:\n:"..StringExtraFormat(fmt,...))

 

Изменено пользователем Mass
пояснение

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mass заменил

Спойлер

"f:\s.t.a.l.k.e.r\s.t.a.l.k.e.r. call of pripyat\bin\xrengine.exe"
* phase time: 0 ms
* phase cmem: 120716 K
Loading objects...
Loading models...
* [prefetch] time:    83004 ms
* [prefetch] memory:  125836Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 83133 ms
* phase cmem: 248959 K
* phase time: 4 ms
* phase cmem: 248959 K
* Creating new game...
* Loading spawn registry...
* 592 spawn points are successfully loaded
! Unknown command:  [error]ABORT
* Log file has been saved successfully!
 
FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....l.k.e.r. call of pripyat\gamedata\scripts\_g.script:545: attempt to call global 'exit' (a nil value)
 

stack trace:
 

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
7 минут назад, sosiska23 сказал:

заменил

Если парсер не переводит на следующую строку. Тогда попробуйте так:

get_console():execute("[error]ABORT CALLED ~:"..StringExtraFormat(fmt,...))

P.S. Давно с оригиналом движка дел не имел :u1F603:

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mass блин я не думаю что  что-то с движком, либо мы такими темпами многопоток сделаем

Спойлер

"f:\s.t.a.l.k.e.r\s.t.a.l.k.e.r. call of pripyat\bin\xrengine.exe"
* phase time: 0 ms
* phase cmem: 120715 K
Loading objects...
Loading models...
* [prefetch] time:    91903 ms
* [prefetch] memory:  125837Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 92046 ms
* phase cmem: 248959 K
* phase time: 4 ms
* phase cmem: 248959 K
* Creating new game...
* Loading spawn registry...
* 592 spawn points are successfully loaded
! Unknown command:  [error]ABORT
* Log file has been saved successfully!
 
FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....l.k.e.r. call of pripyat\gamedata\scripts\_g.script:545: attempt to call global 'exit' (a nil value)
 

stack trace:
 

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
36 минут назад, Mass сказал:

get_console():execute("[error]ABORT CALLED ~:"..StringExtraFormat(fmt,...))

 А если так? У меня нет возможности проверить на чистом движке Поэтому...

 get_console():execute("[error]ABORT CALLED".. string.sub(StringExtraFormat(fmt,...),1,160))

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mass все равно
 

Спойлер

"f:\s.t.a.l.k.e.r\s.t.a.l.k.e.r. call of pripyat\bin\xrengine.exe"
* phase time: 0 ms
* phase cmem: 120716 K
Loading objects...
Loading models...
* [prefetch] time:    78471 ms
* [prefetch] memory:  125836Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 78593 ms
* phase cmem: 248959 K
* phase time: 5 ms
* phase cmem: 248959 K
* Creating new game...
* Loading spawn registry...
* 592 spawn points are successfully loaded
! Unknown command:  [error]ABORT
* Log file has been saved successfully!
 
FATAL ERROR
 
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....l.k.e.r. call of pripyat\gamedata\scripts\_g.script:545: attempt to call global 'exit' (a nil value)
 

stack trace:
 

я говорю, вряд ли с движком что то, я его не менял возможно не зарегал но где?
squad_descr_escape.ltx, simulation_objects_props.ltx, simulation.ltx, smart_terrain_masks.ltx

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


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, sosiska23 сказал:

 все равно

Тогда не знаю в чем причина, почему именно в лог не пишет. Мб потом как-нибудь узнаю в чём затык на оригинале.

8 минут назад, sosiska23 сказал:

вряд ли с движком что то

Нет! В оригинале немного урезано логирование. Я уже и не помню как я тогда выводил нормально инфу в лог

Можно попробовать поискать функционал на этом сайте и найти аналогичные функции для оригинала

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

sosiska23 Наигрались? error_log(reason) раскомментируйте!

 
8 минут назад, Mass сказал:

Тогда не знаю в чем причина, почему именно в лог не пишет.

Потому, что функция get_console():execute не предназначена для записи информации в лог, ее назначение - вызов команд в консоли, а потому попытка вызова ее с рандомной строкой закончиться сообщением:
! Unknown command: и далее символы до первого пробела

Изменено пользователем denis2000
  • Мастер! 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, denis2000 сказал:

error_log

Я перепутал assert и error_log. Какой-то из них явно не работает в оригинальном движке. Получается что error_log всё-таки работает! Я увидев функцию моментально подумал что у sosiska23 она строка  в этой функции тоже раскоментирована. Вот и получилась нелепость


Дополнено 2 минуты спустя
10 минут назад, denis2000 сказал:

! Unknown command: и далее символы до первого пробела

Я помню что как то выводил в лог с помощью костылей в get_console():execute. В любом случае к оригиналу я не притрагивался уже очень продолжительное время

  • Жму руку 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

@Mass, на миксед конфе выводится в лог всё через `log(text)` и `printf(format)`, для релиз конфы нужно внести кое-какие изменения в движке. Не знаю, зачем такие извращения, что выше описали. Если хотите аасерт скриптовый — ставится проверка на что-то и после `then` пишется `abort(format)`.

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 минут назад, Hrust сказал:

Не знаю, зачем такие извращения

Это нужно, если при логировании аргумент равен нил тогда в лог просто напишет что переменная равна нил, а также когда не знаешь тип переменной. Иногда полезно! Я еще вывожу таблицу. Знаю есть оригинальная print_table, но мне проще сделать логирование и сразу вывести в лог, не думая какой там тип переменной


Дополнено 3 минуты спустя
13 минут назад, Hrust сказал:

Если хотите аасерт скриптовый

Кстати, точно помню в ТЧ assert работал, и я им активно пользовался

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


Ссылка на сообщение
Поделиться на другие сайты
 

Здравствуйте, появился такой вопрос, возможно ли реализовать постоянную ночь?


 1540412914_ezgif.com-optimize(1).gif.ec7250e918399802d8fe85d6d4fd7081.gif

«Если долго мучиться, что-нибудь получится»

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


Ссылка на сообщение
Поделиться на другие сайты
 
30 минут назад, Pavel2000 сказал:

Здравствуйте, появился такой вопрос, возможно ли реализовать постоянную ночь?

в game_maps_single.ltx найди свою локацию и строчка weather пиши night

 


Дополнено 1 минуту спустя

Всем привет сделал анимацию камеры облета в сдк. в сдк все норм работает  а в игре  камера  играет не на тех координатах  где в сдк, в чем может быть проблема. вот пример логики                                                                                                          

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_info = {-op_arena_intro_info =actor_on_level(op_arena) !black_screen} sr_idle@timer_intro %=run_postprocess(black:3009:true) =disable_ui =scene_sound_off%
 

[sr_idle@timer_intro]
on_game_timer = 65 | sr_cutscene@intro %=scene_sound_on =run_postprocess(stc_fade_out) =stop_postprocess(3009) =play_sound(mm_main_amb_music_2) +op_arena_intro_info % 

 

[sr_cutscene@intro]
cam_effector = scenario_cam\op_arena\op_camera_test
point = op_arena_tp_actor_1_way
look = op_arena_tp_actor_1_way
on_signal = cameff_end | sr_idle@intro_outro_end %=run_postprocess(black:3009:true)%
outdoor = true
enable_ui_on_end = false

[sr_idle@intro_outro_end]
on_info = {+op_arena_intro_info -op_arena_outro_info} sr_idle@cond 
;on_info2 =  {+op_arena_outro_info} nil; отключение пока так

[sr_idle@cond]
on_game_timer = 30| sr_idle@wait %=run_postprocess(black:3009:true) =scene_sound_off%

  • Жму руку 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, denis2000 сказал:

error_log(reason) раскомментируйте!

я не могу наййти эту строчку в g_script
я знаю про поиск ctrl + F

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


Ссылка на сообщение
Поделиться на другие сайты
 

Stinger Анимация камеры может быть в глобальных координатах:
[sr_cutscene]
global_cameffect = true

Или в относительных:
[sr_cutscene]
global_cameffect = false


29 минут назад, sosiska23 сказал:

я не могу наййти эту строчку в g_script

По всей вероятности вы ее затерли своими предыдущими правками, откатите их.

PS: В любом случает полный код функции abort я приводил выше.
 

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 раскоментировал строчку
 

Спойлер

"f:\s.t.a.l.k.e.r\s.t.a.l.k.e.r. call of pripyat\bin\xrengine.exe"
* phase time: 0 ms
* phase cmem: 120716 K
Loading objects...
Loading models...
* [prefetch] time:    98779 ms
* [prefetch] memory:  125836Kb
! Unable to find Software\GSC Game World\STALKER-COP\ in registry
! Player name registry key (InstallUserName) not found !
* phase time: 99596 ms
* phase cmem: 248959 K
* phase time: 5 ms
* phase cmem: 248959 K
* Creating new game...
* Loading spawn registry...
* 592 spawn points are successfully loaded
! [LUA][ERROR] There is no 'name' field in [secret] section for object [escape_medkit]
 
FATAL ERROR
 
[error]Expression    : 0
[error]Function      : ErrorLog
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
[error]Line          : 49
[error]Description   : There is no 'name' field in [secret] section for object [escape_medkit]
 

stack trace:

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, sosiska23 сказал:

There is no 'name' field in [secret] section for object [escape_medkit]

На русский переводить?

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 В  целом можно, потому что это был рабочий тайник

[esc_hiding_place_1]
medkit = 1, 1
bandage = 2, 1
antirad = 1, 1

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

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу