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

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

 
 

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?

Он самый.

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


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

CiberZold, как правильно заметил ian98, игра отчего-то не знает, что с её неписями творится, где они и живы ли вообще. Плотей на свалке перебил, глаз искал, а теперь задание на их отстрел от Воронина, а их там нету..)) Тоже "провалится"...


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

ian98, не на халяву, с чего ты взял?! Собак, например, честно стрелял всех, которых находил, регулярно, в течение недели, а квест так и не "сдался". Даже в оригинале, если квестовые существа погибнут, то задание на их зачистку считается выполненным, независимо от условий. А тут нет. И иногда, получается, квесты выдаются на несуществующих уже неписей. АМК родоначальник корявостей в стулкерском модинге ))

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


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

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

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   : ...\s.t.a.l.k.e.r. Участь\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)
 

stack trace:

Вот как выглядит логика эксклюзива: 

[logic@esc_bandit_bariga]
active = animpoint@esc_sim_smart_11_bariga_animpoint_1
suitable = {=check_npc_name(esc_bandit_bariga)}true
prior = 90
level_spot = trader
trade = misc\trade\trade_trader.ltx

[animpoint@esc_sim_smart_11_bariga_animpoint_1]
reach_movement = walk
use_camp = false
meet = meet@esc_bandit_bariga_meet
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
cover_name = esc_sim_smart_11_bariga_animpoint_1

[meet@esc_bandit_bariga_meet]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance     = 0
far_distance     = 0
use = {=actor_enemy} false, true
snd_on_use = nil
meet_on_talking = false

При этом ошибки в Кавере или в НПС нету так что ошибка скорее всего в логике, помогите исправить.

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

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


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

bsanek628 

6 часов назад, bsanek628 сказал:

пропиши Отбойнику анимации Спаса

 

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


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

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

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

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

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

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

Войти

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

Войти

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