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

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

 

b27b2a4837.png

Тема посвящена моддингу на платформе Чистое Небо.

 

Правила темы:

  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть.
  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
  • Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться.
  • Лайк 4
  • Мастер! 3

c01570bf2e07524.png

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


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

в тч кстати есть такое, не знаешь?

Есть

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

такое прокатит?

Должно

9 минут назад, imcrazyhoudini сказал:

ибо с радиацией нет : и ()

radiation - это свойство, а get_bleeding() функция

26 минут назад, Sidorovich сказал:

Как отключить начальную кат-сцену?

Ковырять gamedata\configs\scripts\marsh\mar_intro_zone.ltx

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


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

Типа просто сменить погоду, добавить тряску и хит по гг с проверкой на нахождение в рестрикторе?

да, типо того

на чаэс вроде было чёт подобное в тч

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


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

N42 каким образом твоё скрытие меток должно работать?

я добавил себе, но при включении выключении ничего не меняется (игру перезагружал если нужно)

в конфиге true cтоит

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


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

каким образом твоё скрытие меток должно работать?

Это не скрытие меток, это вывод галочки в настройки, как и просил

25 минут назад, imcrazyhoudini сказал:

но при включении выключении ничего не меняется

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

В 10.03.2023 в 15:48, imcrazyhoudini сказал:

да, типо того

на чаэс вроде было чёт подобное в тч

В тч на чаэс хит во время выброса идет через схему sr_aes_deadzone, в чн есть такой файл, можно через него попробовать, но не знаю, будет ли работать. Если нет - в xr_effects есть функция stc_surge(), добавляет смену погоды и тряску, добавить еще хит при проверке на ненахождение гг в рестрикторе через actor_in_zone. Думаю, это все можно через рестриктор сделать, а не на апдейт вешать

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

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


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

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

ну тут надо чтобы читалось значение в скрипте
такая конструкция:

Спойлер

--' Показать отряд на карте
hide_another_location_spots  = true
spots_mode = 1

function sim_squad_generic:show()
    if self.show_disabled then
        self:hide()
        return
    end

-- Kirgudu (режим показа меток на карте)
    if hide_another_location_spots then
        local actor_loc = game_graph():vertex(alife():actor().m_game_vertex_id):level_id()
        local smart_loc = game_graph():vertex(alife():object(self.smart_id).m_game_vertex_id):level_id()
        if actor_loc ~= smart_loc then
            self:hide()
            return
        end
    end

    if self.current_spot_id ~= self.commander_id then
        self:hide()
        self.current_spot_id = self.commander_id
        self:show()
        return
    end
    local spots_mode = spots_mode
    local spot = self.spot_section
    if self.player_id == "monster" then
        if spots_mode > 0 then
            self:hide()
            return
        end
        spot = "alife_presentation_squad_monster"
    else
        if spots_mode > 2 then
            self:hide()
            return
        end
        local commander = db.storage[self.commander_id] and db.storage[self.commander_id].object
        local relation
        if commander ~= nil and db.actor then
            relation = commander:general_goodwill(db.actor)
        else
            if self.relationship == "enemy" then
                relation = -1000
            elseif self.relationship == "friend" then
                relation = 1000
            end
            if relation == nil then
                if db.actor then
                    relation = db.actor:community_goodwill(self.player_id)+game_relations.get_factions_community(self.player_id, alife():actor():community())
                else
                    relation = game_relations.get_factions_community(self.player_id, alife():actor():community())
                end
            end
        end
        if relation >= 1000 then
            spot = "alife_presentation_squad_friend"
        elseif relation <= -1000 then
            if spots_mode > 1 then
                self:hide()
                return
            end
            spot = "alife_presentation_squad_enemy"
        else
            spot = "alife_presentation_squad_neutral"
        end
    end
    if self.current_action and self.current_action.name == "attack_point" then
        if spot == "alife_presentation_squad_friend" then
            spot = "alife_presentation_friend_squad_attack_point"
        elseif spot == "alife_presentation_squad_neutral" then
            spot = "alife_presentation_neutral_squad_attack_point"
        elseif spot == "alife_presentation_squad_enemy" then
            spot = "alife_presentation_enemy_squad_attack_point"
        end
    end
    if spot == self.spot_section then
        if _G.dev_debug == true then
            level.map_change_spot_hint(self.current_spot_id, self.spot_section, self:get_squad_props())
        end
        return
    end
    if self.spot_section == nil then
        level.map_add_object_spot(self.current_spot_id, spot, self:get_squad_props())
    else
        level.map_remove_object_spot(self.current_spot_id, self.spot_section)
        level.map_add_object_spot(self.current_spot_id, spot, self:get_squad_props())
    end
    self.spot_section = spot
end

 


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

хотя я в hide_another_location_spots  = true
сменил на false
то не исчезают

я скрипт с огсм взял


Дополнено 8 минуты спустя
Спойлер

function sim_squad_generic:show()
    if self.show_disabled then
        self:hide()
        return
    end

    if self.current_spot_id ~= self.commander_id then
        self:hide()
        self.current_spot_id = self.commander_id
        self:show()
        return
    end
    local spot = self.spot_section
    if self.player_id == "monster" then
        spot = "alife_presentation_squad_monster"
    else
        local commander = db.storage[self.commander_id] and db.storage[self.commander_id].object
        local relation
        if commander ~= nil and db.actor then
            relation = commander:general_goodwill(db.actor)
        else
            if self.relationship == "enemy" then
                relation = -1000
            elseif self.relationship == "friend" then
                relation = 1000
            end
            if relation == nil then
                if db.actor then
                    relation = db.actor:community_goodwill(self.player_id)+game_relations.get_factions_community(self.player_id, alife():actor():community())
                else
                    relation = game_relations.get_factions_community(self.player_id, alife():actor():community())
                end
            end
        end
        if relation >= 1000 then
            spot = "alife_presentation_squad_friend"
        elseif relation <= -1000 then
            spot = "alife_presentation_squad_enemy"
        else
            spot = "alife_presentation_squad_neutral"
        end
    end
    if self.current_action and self.current_action.name == "attack_point" then
        if spot == "alife_presentation_squad_friend" then
            spot = "alife_presentation_friend_squad_attack_point"
        elseif spot == "alife_presentation_squad_neutral" then
            spot = "alife_presentation_neutral_squad_attack_point"
        elseif spot == "alife_presentation_squad_enemy" then
            spot = "alife_presentation_enemy_squad_attack_point"
        end
    end
    if spot == self.spot_section then
        if _G.dev_debug == true then
            level.map_change_spot_hint(self.current_spot_id, self.spot_section, self:get_squad_props())
        end
        return
    end
    if self.spot_section == nil then
        level.map_add_object_spot(self.current_spot_id, spot, self:get_squad_props())
    else
        level.map_remove_object_spot(self.current_spot_id, self.spot_section)
        level.map_add_object_spot(self.current_spot_id, spot, self:get_squad_props())
    end
    self.spot_section = spot
end

 

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


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

imcrazyhoudini весь скрипт выложи

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


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

N42 sim_squad_generic.script


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

это с огсм взял

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


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

вот оригинальный

sim_squad_generic.script

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


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

хотя я в hide_another_location_spots  = true
сменил на false
то не исчезают

При false отображаются как в оригинале на всех локах, при true только на локе с гг. В принципе, работает, только перезагрузить сохранку надо. Но лучше чтобы вообще не отображались даже на локе с гг

 

sim_squad_generic.script

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


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

Но лучше чтобы вообще не отображались даже на локе с гг

можно монстров как-то скрыть?

ещё не проверял

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


Дополнено 11 минуты спустя
11 минут назад, imcrazyhoudini сказал:

можно монстров как-то скрыть?

да, всё норм

3 часа назад, N42 сказал:

Но лучше чтобы вообще не отображались даже на локе с гг

есть варик как сделать?


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

слушай, касательно стейт менеджера...

вот есть у меня сценка, в которой нпс 20 секунд должен держать детектор в руках

но, из-за того что не читается idle, он читает две анимки с into, там пару секунд, после чего опускает руки на те оставшийся секунды

не знаешь как поправить можно?

скрипт артов не смотрел?

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


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

imcrazyhoudini длительность анимации вроде в самой анимации правится. Скрипт артов, в смысле респавн? Не, пока руки не дошли до него

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


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

длительность анимации вроде в самой анимации правится.

хорошая идея
а не в курсе какая программа позволяет клонировать анимации? omf editor или как его не позволяет такое сделать

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


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

какая программа позволяет клонировать анимации

Вроде Акторедитором можно было экспортировать анимку в skl и потом её же импортировать, то бишь продублируется.

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


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

какая программа позволяет клонировать анимации

image.png

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

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


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

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


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

imcrazyhoudini      

 

Изменено пользователем nasar75
  • Лайк 1

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


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

всё равно шляпа выходит

такая ситуация
НПС входит в эту анимацию, ему нужно в ней простоять ровно 20 секунд:
 

Спойлер

        probe        = {    prop    = { maxidle = 1,
                                    sumidle = 1,
                                    rnd = 100 },
                        into    = {    [0]    = {"metering_anomalys_0_draw_0", {a="detector_saharov"}, "metering_anomalys_0_draw_1"} },
                        out        = {    [0]    = {"metering_anomalys_0_hide_0", {d="detector_saharov"}, "metering_anomalys_0_hide_1"} },
                        idle    = {    [0]    = "metering_anomalys_0_idle_0" },
                        rnd        = nil },

как я вижу ситуацию:
входит в анимацию (into), потом переходит в idle, стоит так до конца таймера, потом выходит через out

на практике же отыгрывает into и всё, опускает руки

прога выше не позволяет редактировать время анимации да и хз как это сработало бы

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


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

можно монстров как-то скрыть?

Там разные варианты в зависимости от переменной spots_mode. if spots_mode > 0 - не отображаются монстры, if spots_mode > 2 - не отображается никто.

Щас в файле при true отображаются только на локе с гг, при false  - не отображаются нигде

sim_squad_generic.script


Дополнено 1 минуту спустя
12 часов назад, imcrazyhoudini сказал:

на практике же отыгрывает into и всё, опускает руки

Ну так засунь все в into. Раз время не отредактировать, добавь несколько идловых анимок, заодно живее будет смотреться

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

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


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

N42 да там они не подходят в том то дело)

подкинули идею перевести всё в walker


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

и по вэйпоинту зациклить анимацию


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

не помогло

шляпа этот стейт менеджер полная


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

 

Спойлер

 

       probe        = {    prop    = { maxidle = 1,
                                    sumidle = 1,
                                    rnd = 100 },
                        into    = {    [0]    = {"metering_anomalys_0_draw_0", {a="detector_saharov"}, "metering_anomalys_0_draw_1"} },
                        out        = {    [0]    = {"metering_anomalys_0_hide_0", {d="detector_saharov"}, "metering_anomalys_0_hide_1"} },
                        idle    = {    [0]    = "metering_anomalys_0_idle_0" },
                        rnd        = nil },

[logic]

active = remark

[remark]

anim = probe

on_signal = anim_end | remark@2

Ситуация на видео: анимация с out не читается, с idle скорее всего так же.

 

Спойлер

 

[logic]
active = walker

[walker]
path_walk = yan_gorbun_walk
path_look = yan_gorbun_look
on_info = {+yan_ventilgorbun_done} remark

[remark]
target = actor
anim = checkpda
meet = no_meet
on_signal = anim_end | remark@2

[remark@2]
target = actor
anim = checkpda
meet = no_meet
snd = yan_gorbun_2
on_signal = sound_end | remark@3

[remark@3]
target = actor
anim = wait
meet = no_meet
on_game_timer = 20 | remark@4

[remark@4]
target = actor
anim = wait
meet = no_meet
snd = yan_gorbun_3
on_signal = sound_end | walker@2

 

    checkpda    = {    prop    = { maxidle = 5,
                                sumidle = 5,
                                rnd = 100 },
                    into    = {    [0]    = {"metering_anomalys_0_draw_0",  {a="device_pda"}, "metering_anomalys_0_draw_1"} },
                    out        = { [0]    = {"metering_anomalys_0_hide_0", {d="device_pda"}, "metering_anomalys_0_hide_1"} },
                    idle    = {    [0]    = "metering_anomalys_0_idle_0" },
                    rnd        = nil },

Анимация резко сбрасывается, ПДА не прячет за спиной, он исчезает в руках.

 


Видеодоказательство:


https://youtu.be/1EjEdod710U
 

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

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


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

imcrazyhoudini насчет респавна артов, пробуй. Если не с новой игры будешь - после выброса сохранись-загрузись, на нетспавне после выброса исправление неправильно сохраненного spawned_count

bind_anomaly_zone.script

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

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


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

N42 а ты не знаешь где указывается "осталось до выброса секунд:"?

сейчас пишет осталось -3 минуты

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


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

imcrazyhoudini на карте?

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


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

N42 ну квест выдаётся "спрятаться от выброса"

в оригинале там давалось 6-40 минут игровых вроде

а у меня -3

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


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

imcrazyhoudini сообщение? В xr_surge_hide.script поиском найди hide_from_surge_text1

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


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

сообщение?

сам таймер

времени мало даётся чтобы спрятаться, -3 минуты вместо тех 6-40 как в оригинале давалось

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


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

imcrazyhoudini в функцию activate_surge передается время до выброса, смотри вызовы этой функции. Также смотри таблицу levels_surge_table

  • Спасибо 1

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


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

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

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

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

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

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

Войти

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

Войти

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

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