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

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

 
 

vasyan54636 Смотри скрипт cam_effector_sets, думаю разберешься ;)


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

При добавлении новых анимпоинтов появляется такая фигня в логе:
 

Спойлер

 fov direction for loophole animpoint_sit_ass is setup incorrectly
 enter direction for loophole animpoint_sit_ass is setup incorrectly
 fov direction for loophole animpoint_sit_ass is setup incorrectly
 enter direction for loophole animpoint_sit_ass is setup incorrectly
 fov direction for loophole animpoint_sit_ass is setup incorrectly
 enter direction for loophole animpoint_sit_ass is setup incorrectly

Как решить?

  • Лайк 1
  • Жму руку 1

За Гранью Реальности

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


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

Redix Вообще, я никогда не задавался таким вопросом и просто игнорировал эту проблему, но сейчас глянул.
Очень похоже, что они появляются, когда в файле smart_cover_animpoint_<имя>.script вызывается функция smart_covers_loophole_animpoint_<имя>.get_loophole и в качестве аргументов передаётся нулевой (или почти нулевой) вектор (или, точнее, _direction поля возвращаются нулевые). Ошибка не критическая т.к. там он автоматически заменяется на вектор (x = 0.0, y = 0.0, z = 1.0).
Скорее всего, чинится если поменять аргументы на достаточно длинные векторы, которые безопасно можно нормализовать (не близкие к (0, 0, 0)). Разве что позиция (2 аргумент в get_loophole) может быть (0, 0, 0).

Изменено пользователем Prostomod
  • Спасибо 1

Мод в разработке - X-7: Эпицентр

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


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

Ребят сделал место для сна и когда пытаюсь скомпилировать спаун даёт такую ошибку: 

Level [escape] : searching for AI map separators space restrictors
! 8 nodes are disconnected!
 
FATAL ERROR
 
[error]Expression    : nodes.size() + m_internal.size() == level_graph().header().vertex_count()
[error]Function      : CSpaceRestrictorWrapper::verify_connectivity
[error]File          : f:\s.t.a.l.k.e.r.sources\x-ray_universal_compiler\src\utils\xrcompiler_ai\space_restrictor_wrapper.cpp
[error]Line          : 284
[error]Description   : Restrictor separates AI map into several disconnected components
[error]Arguments     : esc_sr_sleep_1
 

stack trace:

0033:0000000056CDBDB4 xrCore.dll, xrDebug::fail()
0033:00000000800CCBEF xrCompiler_AI.dll
0033:00000000800C9291 xrCompiler_AI.dll
0033:00000000800C211E xrCompiler_AI.dll
0033:00000000800C2FCB xrCompiler_AI.dll
0033:00000000800D01FB xrCompiler_AI.dll, xrCompileAI()


Как правится?

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


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

vladvexa188 Попробуй добавить в батник ключ -no_separator_check


За Гранью Реальности

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


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

Доброго времени суток! Как заспавнить предмет в инвентарь мертвого НПС после опредёленного условия (например, после диалога с другим НПС)?

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


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

Доброго времени суток! Как заспавнить предмет в инвентарь мертвого НПС после опредёленного условия (например, после диалога с другим НПС)?

Можно после диалога выдать инфопоршень, а затем в логике рестриктора написать

on_info = {+инфопоршень} sr_idle@nil %=spawn_object_in(название предмета:story_id нпс) %

Изменено пользователем Boomer
  • Аплодисменты 1
  • Спасибо 1

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


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

Здравия адекватным! Апрошный форум так себе организован, потому и вопрошаю в первом попавшемся разделе, у людей ведающих ) Суть: от скуки и отсутствия нового решил погонять в старое, а именно в АМК-1.4 (не 1.4.1). А там косяков валом, один из них - задания не сдать, ежели неписи либо монстры волею Зоны помре, а не токмо Меченого, подрядившегося на задачи те. От он, горемычный, недельный срок, на то отведённый, и трудится, патронов и ствола не жалея, орды татей да чудовищ невиданных выкашивая, а злые квестодатели не желают вознаграждать заслуженно. Можно как-то скриптами животворными усовестить бояр тех нерадивых, чтобы не было незаслуженно проваленного и репутацию защитить добра молодца?

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

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


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

Gendel сделать квестовиков бессмертными? если в зп есть такая штука как invulnerable, то можно по идее на нет спавна в мотиваторе по именам приделать нужным нпс бессмертие. Но амк это не зп. движок там от тч видимо, оригинальный. В оригинальном тч такой фичи нет, можно по примеру сахарова из конфигов(см. оригинальная gamedata\config\creatures\m_stalker по запросу stalker_sakharov) Как один из вариантов обратится к иммунитетам сахарова можно прописав нужного нпс в spawn_section или из all.spawn, возможно..

Можно не парится с конфигами и по имени профиля например апдейтить из биндера хп в 1 при любом хите в оригинальном тч. Но такое бессмертие до фатального хита, например в голову. Может еще способы есть. Надо подумать

 

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

76561198152189716.png

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


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

В оригинальном тч такой фичи нет

Вы ошибаетесь! В ТЧ этот метод есть, просто в lua_help отсутствует!

19 часов назад, Redix сказал:

При добавлении новых анимпоинтов появляется такая фигня в логе:

Покажите функцию get_loophole данного анимпоинта

 


Дополнено 9 минуты спустя
В 22.07.2023 в 19:18, makdm сказал:

log_file:close()

Отличная идея закрыть файл! Про это я забыл в итоге при ошибке я терял всю инфу! Единственое маленькое замечание я бы кешировал переменную log_path

  • Мастер! 1

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


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

@Mass 
smart_covers_loophole_animpoint_sit_ass.get_loophole("animpoint_sit_ass",    vector():set(0,0,0), vector():set(0,0,0),    vector():set(0,0,0))


За Гранью Реальности

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


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

Redix Это ссылка на саму функцию. В файле smart_covers_loophole_animpoint_sit_ass функцию get_loophole покажите!

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


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

Mass Аа, понял. Вот:
 

Спойлер

function get_loophole(id, position, fov_direction, enter_direction)
    return {    id = id,
                fov_position = position,
                fov_direction = fov_direction,
                danger_fov_direction  = vector():set(-1,0,0),
                enter_direction = enter_direction,
                usable = true,
                fov    = 45.0,
                danger_fov = 45.0,
                range = 70.0,
                actions = {
                    idle = {
                        animations = {
                            idle = {
                                "sit_2_idle_0",
                            },
                        },
                    },
                    lookout = {
                        animations = {
                            idle = {
                                "idle_0_to_sit_2",
                            },
                        },
                    },
                    fire = {
                        animations = {
                            idle = {
                                "idle_0_to_sit_2",
                            },
                            shoot = {
                                "idle_0_to_sit_2",
                            },                            
                        },
                    },
                    fire_no_lookout = {
                        animations = {
                            idle = {
                                "idle_0_to_sit_2",
                            },
                            shoot = {
                                "idle_0_to_sit_2",
                            },                            
                        },
                    },                        
                    reload = {
                        animations = {
                            idle = {
                                "idle_0_to_sit_2",
                            },
                        },
                    },
                },
                transitions = {
                    {
                        action_from = "idle",
                        action_to = "lookout",
                        weight = 1.2,
                        animations = {
                            "idle_0_to_sit_2",
                        },
                    },
                    {
                        action_from = "lookout",
                        action_to = "idle",
                        weight = 1.2,
                        animations = {
                            "idle_0_to_sit_2",
                        },
                    },
                    {
                        action_from = "idle",
                        action_to = "fire",
                        weight = 1.2,
                        animations = {
                            "idle_0_to_sit_2",
                        },
                    },
                    {
                        action_from = "fire",
                        action_to = "idle",
                        weight = 1.2,
                        animations = {
                            "idle_0_to_sit_2",
                        },
                    },
                                        {
                        action_from = "idle",
                        action_to = "fire_no_lookout",
                        weight = 1.2,
                        animations = {
                            "idle_0_to_sit_2",
                        },
                    },
                    {
                        action_from = "fire_no_lookout",
                        action_to = "idle",
                        weight = 1.2,
                        animations = {
                            "idle_0_to_sit_2",
                        },
                    },                        
                },
            }
end

 


За Гранью Реальности

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


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

smart_covers_loophole_animpoint_sit_ass.get_loophole("animpoint_sit_ass",    vector():set(0,0,0), vector():set(0,0,0),    vector():set(0,0,0))

Попробуйте

smart_covers_loophole_animpoint_sit_ass..get_loophole("animpoint_sit_ass",    vector():set(0,0,0), vector():set(0,0,-1),    vector():set(0,0,-1))

  • Спасибо 1

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


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

@Mass @Prostomod Спасибо, помогли!


За Гранью Реальности

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


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

Почему при телепортации на 5 метров вперед через Повелитель Зоны, ГГ падает под текстуры? Как правильно задавать координаты?

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


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

Почему при телепортации на 5 метров вперед через Повелитель Зоны, ГГ падает под текстуры? Как правильно задавать координаты?

https://disk.yandex.ru/d/94gmWlnul29HQw установи лучше этот мод на noclip, активируется на клавишу V

  • Спасибо 1

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


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

ian98, не сдаются формально выполненные задания, например: бармен просил бандосов зачистить на Агро, а там кровосос (если что, некоторые из них в том моде почти неубиваемы из стрелкового оружия любого калибра, только гранатами) прошёлся и всех положил - в итоге ни бандосов на локации, кроме трупов, ни задание не сдать. Или зачистить собак перед Баром - динамические аномалии кого-то из живности сожрали или ещё как, но результат тот же... Вопрос был в том, можно ли, как в "беседкиных" игорках с их "setstage", например, завершить такие квесты консольно или ещё как.

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


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

Какой самый простой способ создать новый предмет, при использовании которого открывается окно с картинкой/текстом?

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


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

Gerbys ты про Gui окна?

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


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

Gerbys ты про Gui окна?

Да, думаю про них) Например, появляется такое окно в ARC аддоне на контейнеры для артов, что-то подобное хочу сделать, но для реализации карт, записок, картинок и тд

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


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

Gerbys Ну... Тут без скриптинга вообще никак, даже если переносить готовое GUI из другого мода (наверно, это и есть самый простой способ).

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

  • Лайк 1
  • Спасибо 1

Мод в разработке - X-7: Эпицентр

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


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

Вопрос был в том, можно ли, как в "беседкиных" игорках с их "setstage", например, завершить такие квесты консольно или ещё как.

ну консольно такие квесты нельзя завершить, а вот убрав в диалоге нужного персонажа условие на диалог при сдачи квеста или на проверку нужного предмета, можно закрыть квест, а потом всё в файле диалога вернуть обратно.

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


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

Gendel нужно по нажатию кнопки выполнить вторички или их провалить, или сделать автоматически раз в сутки например проваливается квесты или выполняются? Если так, то, возможно, есть способ. Нужно смотреть луа хелп. Да и без скриптов, по-моему, есть конфиг, в котором указывается время на выполнение вторичных квестов. Забыл название. Но мне кажется я не так понял, в смысле что проваливать миссию тебе точно не надо, ну а тогда выполнять по халяве? Это ж по халяве будет. Да и бармен от того не перестанет просить убить уже мертвых бандитов. Странно это, что вообще просит, звучит так как будто перед выдачей квеста не проверяется живы ли бандиты. Ну я вообще не работал никогда именно с заданиями и не уверен как это точно работает. Мне самому нужно изучать этот момент. Но выполнить определенные квесты по кнопке сделать можно попробовать. Вроде не сложно это 


76561198152189716.png

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


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

Какой самый простой способ создать новый предмет, при использовании которого открывается окно с картинкой/текстом?

Здесь расписал "рецепт приготовления":

Спойлер

В файле bind_stalker.script находим функцию

function actor_binder:use_inventory_item(obj)

Чуть ниже добавил новое условие

if obj~=nil then
test_t.on_use_item(obj)
end

Вся функция должна выглядить примерно вот так:

function actor_binder:use_inventory_item(obj)
if obj~=nil then
test_t.on_use_item(obj)
end
    if(obj) then
        local s_obj = alife():object(obj:id())
        if(s_obj) and (s_obj:section_name()=="drug_anabiotic") then
            xr_effects.disable_ui_only(db.actor, nil)
            level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback")
            level.add_pp_effector("surge_fade.ppe", 11, false)
            give_info("anabiotic_in_process")
            _G.mus_vol = get_console():get_float("snd_volume_music")
            _G.amb_vol = get_console():get_float("snd_volume_eff")
            get_console():execute("snd_volume_music 0")
            get_console():execute("snd_volume_eff 0")
        end
    end
end

Создаём файл test_t.script

в него пишем это:

function on_use_item(sect)
--Переменные
local actor=db.actor
local item_name=sect:section()
local actor_pos=db.actor:position()
local active_slot=db.actor:active_slot()
local active_item=db.actor:active_item()
local pistol_in_slot=db.actor:item_in_slot(2)
local rifle_in_slot=db.actor:item_in_slot(3)
local outfit_in_slot=db.actor:item_in_slot(7)
local helm_in_slot=db.actor:item_in_slot(12)
--Коллбеки
if item_name=="Секция_твоего_предмета_для_гуи" then
_g.run_gui(gotov_gui.test_gui()) -- это сам вызов гуи
end
end

Теперь перходим в файл _g.script

там добавим в конец функцию

function run_gui(gui, close_inv)
if close_inv == true then
gui:ShowDialog(true)
game_hide_menu()
level.show_weapon(false)
else gui:ShowDialog(true)
end
end

Теперь создания самого гуи:

проще всего создать гуи в программе Stalker UI Creator, там всё интуитивно понятно, есть вроде даже какие-то ролики на ютубе, но точно не знаю.

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

class "test_gui" (CUIScriptWnd)

Вроде всё описал...

 

  • Лайк 2

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 28.07.2023 в 00:27, Hunter сказал:

bsanek628 пропиши Отбойнику анимации Спаса, ты имел ввиду, вылет с логом: motion not found: protecta_reload?

Он самый.

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


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

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

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

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

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

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

Войти

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

Войти

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

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