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

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

 
 
  В 31.10.2024 в 20:02, Pavel2000 сказал:

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

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

  • Жму руку 1

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

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


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

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

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

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


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

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

  вот чуть выше лога (Показать контент)

 

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

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


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

sosiska23 

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

 


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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 09:11, 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

  лог (Показать контент)

 

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

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


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

 

  В 01.11.2024 в 09:34, sosiska23 сказал:

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

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

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

  Цитата

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

на 

  Цитата

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

 

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

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


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

Mass заменил

  лог (Показать контент)

 

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


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

заменил

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

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

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

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

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


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

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

  лог (Показать контент)

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 10:03, Mass сказал:

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

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

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

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


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

Mass все равно
 

  лог (Показать контент)

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

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


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

 все равно

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

  В 01.11.2024 в 10:53, sosiska23 сказал:

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

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

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

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

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


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

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

 
  В 01.11.2024 в 11:01, Mass сказал:

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

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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 11:06, denis2000 сказал:

error_log

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


Дополнено 2 минуты спустя
  В 01.11.2024 в 11:06, denis2000 сказал:

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

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

  • Жму руку 1

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 11:33, Hrust сказал:

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

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


Дополнено 3 минуты спустя
  В 01.11.2024 в 11:33, Hrust сказал:

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

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

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


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

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


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

«Если долго мучиться, что-нибудь получится»
Охотник за артефактами

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 13:22, 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

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 11:06, denis2000 сказал:

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

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

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


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

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

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


  В 01.11.2024 в 14:04, sosiska23 сказал:

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

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

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

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

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

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


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

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

  лог (Показать контент)

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
  В 01.11.2024 в 14:37, 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 пользователей онлайн

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