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

FalkineIsaku

Сталкеры +
  • Публикаций

    305
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные FalkineIsaku


  1. Спойлер

    Этот урок будет о том, как изменить прочность вещей гг в любой момент игры. (в теме будет в начале игры)

    Спойлер

    Есть два способа: Изменение оригинальной функции, или удаление старой и создание новой. (Можно оставить старую и создать новую)
    Ищем в нашем файле: "function damage_actor_items_on_start", думаю тут понятно, но на всякий случай объясню:
    function damage_actor_items_on_start(actor, npc)  "damage_actor_items_on_start" - можно изменить.
        local actor = db.actor  - Не трогать
        
        local obj = actor:object("helm_respirator") "helm_respirator" - это секция предмета, у которого мы хотим повысить прочность.
        if obj ~= nil then - Не трогать
            obj:set_condition(0.8)  "0.8" - Это новое состояние предмета, которое мы можем установить.
        end - Не трогать
    end - Не трогать
    По этой схеме вполне можно сделать новую функцию

    Спойлер

    Для начала расскажу как убрать стандартную активацию функции (в начале оригинала ЗП на Затоне)
    Заходим в "configs\scripts\zaton\zaton_a1_logic.ltx" и просто убираем %=damage_actor_items_on_start% (она на 5 строчке)

    Теперь расскажу как вызвать такую функцию снова, уже с другим именем и в другой логике.
    Открываем вашу логику рестриктора, и в самое начало, после самой первой "on_info/on_game_timer" пишем: %=имя_вашей_функции%
    Пример:
    on_info = {+esc_start_game !surge_started} %=имя_вашей_функции%
    Всё...

     

    • Лайк 1
    • Мастер! 2
    • Аплодисменты 2

  2. Спойлер

    В этой теме будут всякие функции, проверки для логики рестриктора (и объяснения к ним). Также вы можете дополнить этот
    сборник новыми функциями/проверками, достаточно просто написать их в комментарии, позже я добавлю их в шапку темы.

    Спойлер

    +(инфопоршень)                                  Выдача инфопоршня
    -(инфопоршень)                                Забираем у гг этот инфопоршень
    =run_postprocess(black:3009:true)            Бесконечная темнота
    =stop_postprocess(3009)                        Убираем бесконечную темноту
    =set_weather(sun_shafts:true)                Устанавливаем погоду
    =actor_punch                                    Бьём гг по лицу
    =disable_ui                                    Пустой экран, нет худа, оружия, карты и т.д.
    =enable_ui                                    Возвращаем гг экран
    =scenario_autosave(st_start_save_game)          Делаем автоматическое сохранение с текстом из "text/rus"
    =give_task(quest_id)                            Выдача квеста гг
    =teleport_actor(path_walk:path_look)            Телепортируем гг на точку walk, с поворотом на look
    =spawn_object(wpn_kalash48:path_walk)        Спавним объект из spawn_element на точке walk
    =set_game_time(00:01)                        Ставим своё время
    =create_squad(squad:smart_terrain)               Заспавнить сквад на смарт-террейне
    =remove_squad(squad)                            Удалить сквад из игры
    =remove_item(bread)                            Забрать у гг этот предмет 
    =give_item(bread:actor)                        Выдать гг этот предмет
    =inc_faction_goodwill_to_actor(army:5000)    Установка дружественных отношений гг с группировкой(без "-": 5000)
    =dec_faction_goodwill_to_actor(army:5000)    Установка вражеских отношений гг с группировкой(с "-": -5000)
    =play_sound(music_id)           Проигрывание звука (нужно регистрировать в script_sound_****).
    =hit_actor(0.2)                    Снести пару хп актёру. для работы функции: Раскомментирование hit_actor.txt
    =kill_squad(squad_id)            Убить сквад
    =clear_smart_terrain(smart_id)        Убрать все сквады с смарт-террейна
    =set_actor_faction(army)                Меняем гг группировку
    =give_treasure(esc_hiding_place)         Выдаём гг тайник
    =start_surge                        Начинаем выброс
    =stop_surge                        Заканчиваем выброс

    Спойлер

    Сразу поясняю, если перед проверкой стоит "=" то эта проверка выполняется/есть, если стоит "!" значит не выполняется/нету.
    В этой теме в проверках будет "=", при надобноости заменяйте на "!"
    +(инфопоршень)                            Есть ли у гг есть этот инфопоршень?
    -(инфопоршень)                            Нет ли у гг этого инфопоршня?
    =actor_in_zone(state_space_restrictor)   ГГ в этом рестрикторе
    =actor_on_level(zaton)                    ГГ на затоне
    =actor_has_item(bread)                    Есть ли у гг этот предмет?
    =surge_started                   Начался ли выброс?
    =surge_complete                  Закончился ли выброс?
    =actor_alive                           Жив ли Актёр?
    =npc_in_zone(state_space_restrictor)     Нпс находится в этом рестрикторе?
    =heli_see_npc        Видит ли вертолёт нпс?
    =heli_see_actor     Видит ли вертолёт гг?
    =see_enemy       Видит ли врага?
    =see_actor     Видит ли ГГ?
    =actor_friend    ГГ друг?
    =actor_neutral  ГГ нейтрален?
    =actor_enemy  ГГ враг?
    =fighting_actor  ГГ активный враг?
    =hit_by_actor    Хит нанесён ГГ?
    =killed_by_actor   Умер от рук ГГ?
    =actor_has_weapon()      У ГГ есть это оружие?
    =is_rain     Сейчас дождь?
    =is_day     Сейчас день?
    =squad_in_zone(айди_сквада:айди_зоны)      Сквад в какой-то зоне?

    Спойлер

    Проверка - {=/! проверка}
    Функция - %=функция%
    Пример:
    on_info = {+infoportion} %infoportion%

     

    • Лайк 1
    • Мастер! 3
    • Спасибо 3

  3. Belka_mod попробуй переделать сектора, если будешь билдить локацию и порталы тоже. Кстати, валидность проходить не обязательно, она сама проходится при билде локации, спавна и т.д.


  4. Nik_99 у тебя как прописана? #include "script_sound_escape.ltx"? В script_sound


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

    Здравствуйте, не спавнятся сквады через simulation, локация везде прописана. На всякий случай вот то как прописал и как спавню
     

    Спойлер

    local group_id_by_levels = {zaton = 1,
                                pripyat = 2,
                                jupiter = 3,
                                labx8 = 4,
                                jupiter_underground = 5,
                                escape = 6}

     

    Спойлер

    [start_position_escape]
    esc_stalker_base_trader = esc_a1_smart_stalker_base
    esc_stalker_base_mechanic = esc_a1_smart_stalker_base
    esc_stalker_tunnel_dead_squad = esc_sim_6

    Через логику рестриктора или respawn_params всё спавнится нормально.