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

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


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

Сталкер Лом, как думаешь, т.к. баг появился не недавно, а существует с релиза, то неужели бы никто бы его за столько времени не решил скриптами, если бы это было возможно?

А с переходом на другую схему, что у тебя?

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

ColR_iT, поглядел форум и увидел Ваш урок по Кодовым тайникам, решил сделать подобное, но для дверцы сейфа (при вводе правильного пароля дверцу можно будет открыть). Заменил строки в ph_code.script:

Было:

if tonumber(text) == self.st.code then
    if self.st.on_code then
        printf("ph_code <OnNumberReceive>: on_code [%s]", text)
        xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.on_code.condlist)
    end
end

 

Стало:

if tonumber(text) == self.st.code then
    if self.st.on_code ~= nil then
        printf("ph_code <OnNumberReceive>: on_code [%s]", text)
        local section = xr_logic.pick_section_from_condlist(db.actor, self.object, self.st.on_code.condlist)
        xr_logic.switch_to_section(self.object, self.st, section)
        return true
    end
end

 

 

То есть, как указанно в уроке. Однако, при вводе правильного пароля ловлю вылет с жалобой на xr_logic.script:

 

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 : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:381: attempt to call method 'section_exist' (a nil value)

 

 

Вот на эту функцию:

 

if not ini:section_exist(section) then
    abort("object '%s': activate_by_section: section '%s' does not exist", npc:name(), section)
end

 

 

 

На всякий случай приведу и логику двери:

 

[logic]
active = ph_code@close

[ph_code@close]
code = 1935
on_code = ph_door@closed %=play_sound(seif_unlock)%

[ph_door@closed]
closed = true
locked = false
on_use = ph_door@open
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

[ph_door@open]
closed = false
locked = false
on_use = ph_door@closed
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

 

 

"Вот, собственно, и всё..." (с)

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

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

Сталкер Лом, скинь файл xr_logic.script, он у тебя изменённый, не могу общую картинку себе "нарисовать".

P.S. не забывай про теги code.

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

Сталкер Лом, как оказалось, причина ошибки в том, что в функцию switch_to_section вторым параметром нужно передавать не саму табличку self.st, а одно из полей этой таблицы self.st.ini.

  • Нравится 1
Ссылка на комментарий

Как  урезать видимость НПС?

 

В файле m_stalker.ltx в секции stalker поправь значение двум (а может и одному) параметру:

eye_fov - угол зрения;

eye_range - дальность видимости.

ColR_iT

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

Приветствую. Подскажите пожалуйста, как можно устроить проверку по имени секции, на количество появившихся боеприпасов в инвентаре гг? (ЗП)

Реклама любых модов бесплатно на моём

сайте писать в личку

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

Через колбэки item_take, item_drop. Поскольку любое добавление/удаление предметов проходит через эти колбэки, можно кэшировать кол-во патронов и проверять только одну переменную, а не перебирать весь инвентарь.

ammos = {}
 
function take_item(item)
    if item:clsid() == clsid.wpn_ammo_s then
       local sect = item:section()
       if not ammos[sect] then
         ammos[sect] = 0
       end
       ammos[sect] = ammos[sect] + get_ammo_size(item)
    end
end

function drop_item(item)
    if item:clsid() == clsid.wpn_ammo_s then
       ammos[item:section()] = ammos[item:section()] - get_ammo_size(item)
    end
end

function ammo_in_inv(sect)
    return ammos[sect] or 0
end
 
function get_ammo_size(obj)
    local se_obj = alife():object(obj:id())
    packet:w_begin(0)
    se_obj:STATE_Write(packet)
    packet:r_seek(packet:w_tell() - 2)
    return packet:r_s16()
end

 

Вызов item_take и item_drop добавишь в bind_stalker.script. Кол-во патронов проверяешь через ammo_in_inv

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

Запрещено оставлять повторные сообщения, даже в разных темах.

Пока-что - устное предупреждение.

ColR_iT

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

Спуск! Выстрел! И воздух рассекая

Судьба моя устремлена вперед Свинцом одарит, душу отнимая.

Сквозь дырку в каске жизнь твоя уйдет.

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

Здрасьте.

Можно ли скриптом проверить погоду? Вроде, где-то видел, что в логике прописывалось то ли is_rain, то ли is_rainy, а сейчас не могу найти.

Или мне приснилось?..

Перефразирую вопрос: можно ли скриптом проверить какая секция погоды в данный момент задействована?

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

Wo1fRam.gif
Мой канал на YouTube

Бессмысленно осмысливать смысл неосмысленными мыслями.

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

@Wo1fRam, абсолютно разные вопросы.

Получить интенсивность дождя в текущем пресете можно при помощи функции level.rain_factor().

А вот на счёт секции сложнее. Здесь ещё нужно уточнить какая именно секция тебя интересует. Есть функция level.get_weather(), она возвращает название погоды из секции weather в файле environment.ltx. Но я не знаю, чем она может тебе помочь.

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

Всем привет. Я вот задался вопросом после просмотра видео с тестовыми анимками разраба Долины Шорохов... 

В ЗП ИИ настолько развит, что неписи сами, видя препятствия, в виде ящиков, лезут на них, или как? Или в логику пишется ремарка на определенный вей-поинт, в которой непись сию анимку проигрывает? Я прямо удивился...



Ах да... Наверно в вершине пути на имени точки прописали "|a="... Точно, тупанул... Но все равно это трудно вымерять, подгонять... Метром ошибся - непись по воздуху полезет.

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

привет всем.

стоит 2.2 sigerous mod - в нем обнаружил что НПС не боятся вообще выбросов. Где подредактировать данный параметр?

В версиях 1,7-2,1 НПС помирали после выбросов очень хорошо, в 2.2 уже нет.

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

Доброго времени суток всем. Вопрос касается логики CoP



=run_postprocess(black:номер:true)

откуда знать какой писать номер, брать спонтанный из головы. :dash2:  . То, что он затем используется при остановке процесса это понятно.

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


stalkerok007

Здесь ничего непонятного нет. НПС плевать где есть сетка. Главное чтобы он стартанул из нее. Здесь вопрос в другом. Такие анимы специально пишутся под специальные места на локации. Если анимацию "вылезает на ящик" можно использовать н-р на Затоне (хотя он на ящик вылезет и даже пойдет по нему, когда на ящике АИ сетки нету, потому что это является частью самой анимации.). Ну а дальше он пойдет по воздуху до АИ. На видео он стартует из сетки и заканчивает на сетке. А там на ящике 100 процентов есть АИ.

В ЗП ИИ настолько развит, что неписи сами, видя препятствия, в виде ящиков, лезут на них, или как? Или в логику пишется ремарка на определенный вей-поинт, в которой непись сию анимку проигрывает? Я прямо удивился...

С анимой "наброска каши", то она подойдет только в одно место на локации, разве что кухни будут везде одинаковые :) , н-р Холоду на базе ЧН она не подойдет. :unsure:

Эти анамация также сделаны, как анимы в ЧН перелаз через забор на Янтаре. А думаешь, что если на старте ЧН, когда Лебедев отдает честь и уходит, то он идет по сетке? Нет, это его анимация такая .Там сетка будет, или не будет не важно. В логике задаешь ремарку и название анимации и все он ее выполняет.

 

По постпроцессу. Номер писать нужно действительно с головы. Этот номер будет присвоен объекту постпроцесса как id. Главное, чтобы он не повторялся, иначе может выйти весьма неприятная ситуация, когда завершится должен был одни процесс, а завершается другой.

ColR_iT

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

lambdist, есть такой параметр: single_handed, если его приравнять к единице, то можно будет брать одной рукой.

P.S. С биноклем - это да, но как будешь вкручиваться с гранатой? Кольцо взглядом вырываем? ;)

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

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

Народ, а у кого-нибудь получалось (кто-нибудь вообще пробовал??) исправить бинокль: в ТЧ и ЧН подносишь к глазам - и кратность увеличения та, что  выставил при прошлом использовании, а в ЗП - каждый раз сразу максимальное увеличение... Раздражает, однако.

 

Правкой конфигов дело не исправить. Где копать?

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

HI ALL !!! Когда в валкере задаешь название команды

"team = имя команды", больше нигде не нужно ее регистрировать?

И вообще, что оно дает, когда каждому нпс из сквада прописать ее?

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

Всем привет.

Решил заняться спавном через смарты-сквады в ЗП.

 

Однако, меня заканал вылет:

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...\gamedata\scripts\smart_terrain.script:1139: attempt to perform arithmetic on field 'arrive_dist' (a nil value)

Все файлы, которые менял, я перекопал, и arrive_dist нигде не прописывал (ибо как я понял, обойтись можно и без этого параметра).

В чем может быть проблема? Напишите самую распространенную причину сего вылета. Если необходимо - приведу текста всех измененных мною файлов (то, что менял).

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

 

З.Ы. Гугл не помог, как и поиск по АМК-форуму.

 

Всё, справился сам =)

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

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

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

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

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

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

Войти

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

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

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