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

makdm

Разработчики
  • Публикаций

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

  • Посещение

  • Победитель дней

    6

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


  1. 35 минут назад, Mass сказал:

    Этот параметр изжил себя! Поэтому написал про on_offline из логики объекта

    Продолжайте насиловать "запорожец". 

    "Мерс" просто пока постоит в гараже.

    Когда допрёте до "мерса", возможно придет понимание.

    З.Ы. Со мной спорить не нужно. Мне фиолетово ваше мнение!

    Спорьте с разрабами Сталкера, которые похерили спавн одиночных НПС в ТЧ и ЧН, который имел место, и полностью перешли на сквады в ЗП.

    • Смех 1

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

    это откроет новые возможности в спавне кровососа для сценки))) спасибо!

    Не понимаю в чем тут УРА!

    Существует функция в файле xr_effects.script, которая называется create_squad. 

    В любой момент времени можно проспавнить сквад монстров в той точке, в которой это нужно по сцене.

    Изобретаете велосипед, а мерседес стоит рядом и тихо смеётся.

     


  3. 11 минут назад, imcrazyhoudini сказал:

    но мне нужно чтобы он пред этим отыграл две анимации

    Ну так отыгрывайте. Доработанный файл  mob_remark я вам сбросил. Скорее всего вы что-то не то в логике делаете.

    Сбрасываю последнюю версию.

     

    mob_remark.script


    Дополнено 6 минуты спустя
    В 02.07.2023 в 12:41, imcrazyhoudini сказал:

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

    Исправил файл mob_jump.script

    Теперь, если в логике прописать: path_jump = actor

    нпс будет прыгать точно в позицию ГГ.

    Надеюсь теперь ваши двухмесячные мучения закончатся.

    mob_jump.script


  4. В 07.07.2023 в 17:17, imcrazyhoudini сказал:

    а вы на чн оттестировать данную логику с вашим скриптом не можете?

    а то я уже отчаялся... второй месяц уже с этой сценкой:

    Вот только пять минут назад протестировал схему jump на ЗП с кровососом. Прыгает как миленький.

    Выкладываю вам его логику. Вы можете переделать под ЧН и попробовать.

    Путь blood_3_walk имеет такой вид

    [esc_sim_8_blood_3_walk]
    points = p0
    p0:name = wp00|sig=path_1_end
    p0:flags = 0x1
    p0:position = 327.387054443359,16.0682029724121,-9.58210563659668
    p0:game_vertex_id = 31
    p0:level_vertex_id = 655572

    esc_sim_8_logic.ltx


  5. 20 минут назад, SoDizzari сказал:

    wpn_akm = 1, silencer \n  то калаш спавнится с глушителем

    Файл читается движком. И движок понимает, что ему нужно делать.

     

    21 минуту назад, SoDizzari сказал:

    но если прописать wpn_akm = 1, okp \n
    то калаш спавнится без прицела

    Очевидно, что движок не умеет читать данную конструкцию.


  6. 16 часов назад, DevilSatalker сказал:

    Не подскажите сделал НПСа с логикой снайпера выставил ему радиус в логике 200

    К сожалению, вы не понимаете, за что отвечает параметр radius. При таком раскладе у вас схема camper даже работать не начнёт. Читайте туторы по логике "Снайпер".

    16 часов назад, DevilSatalker сказал:

    Но этот милейший человек не видит ничего дальше в радиусе 30 метров

    Редактируйте файл xr_combat_ignore.script

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


  7. 8 часов назад, ScarletFox сказал:

    Появилась необходимость ввести в мод переменную "объём в рюкзаке", знает кто, как это реализовать?

    Без лишней скромности, я знаю. Делал это ещё в 2014 году для невышедшего мода Смерти Вопреки 3. 

    Задействована куча файлов. И в каждом нужно все прописать правильно и не допустить ошибки.

    Очень сложно для начинающего модмейкера!

    Без знания скриптов на приемлемом уровне, вам это не реализовать и мне даже объяснять нет смысла, так как это превратится в бесконечную переписку.

    А если ваши знания на высоте, то вы и сами сможете реализацию сделать.

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

    З.Ы. Возможно, если кому-то некуда девать свободное время Вам и поможет.

     

    xrs_rukzak_volume.script


  8. В 03.07.2023 в 21:08, Mass сказал:

    При переключении логики с mob_walker монстр уходит в алайф

    У меня нет такой проблемы.

     

    В 03.07.2023 в 21:08, Mass сказал:

    При дебаге движок ругается на Entity Action removed!!!

    У меня в модах на что только не ругается. Как правило вся эта ругань не критичная. Собака лает - караван идет.


  9. В 03.07.2023 в 21:08, Mass сказал:

    2) Не работают анимации из таблицы anim, моб просто виснет

    Скрипт был разработан для проигрывания уникальных анимаций мобом, а не для стандартных движковых.

    Но я поправил это и допилил скрипт. Ниже смотрите.

    mob_remark.script


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

    есть вариант прикрутить target при действующем anim?

    Вот представьте ситуацию - спит собака. Вы подходите к ней и она, продолжая спать, разворачивается в вашу сторону. Это как?

    Одновременно и спать и поворачиваться в сторону ГГ не получится.

    Поэтому сначала в схеме ремарк разверните моба в вашу сторону ( он встанет на лапы и повернётся ), затем переключитесь снова на ремарк и проиграйте анимацию.

    [mob_remark@1]
     target = actor                                   
     anim_movement = false       
     combat_ignore_cond = true   
     combat_ignore_keep_when_attacked = true

    on_signal           = action_end | mob_remark@2

    [mob_remark@2]

    anim = lie_idle_0, lie_idle_1, lie_idle_2 
     time = 2330, 7340, 7340 
     anim_movement = false 
     combat_ignore_cond = true 
     combat_ignore_keep_when_attacked = true

     


  10. 3 часа назад, Neptun сказал:

    Да, там есть параметр item, который используется для гаусс-пушки. Но я не совсем понимаю, как использовать precondition_functor для отдельно взятых апгрейдов

    Делается это так. Например:

    1. В файле stalkers_upgrade_info.ltx разрешаете устанавливать апгрейд up_sect_fifthc_ak74 и up_sect_fiftha_ak74  только для автомата wpn_ak74

    up_sect_fiftha_ak74 = true {=can_upgrade(wpn_ak74)}, false

    up_sect_fifthc_ak74 = true {=can_upgrade(wpn_ak74)}, false

    2. В файле xr_conditions.script пишите функцию

    upgrade_item_name = nil

    function can_upgrade(actor, npc, p)
        if p then
            if p[ 1 ] == upgrade_item_name then
                return true
            end
        end
        return false
    end

    3. В файле inventory_upgrades.script после строки function can_upgrade_item( item_name, mechanic ) пишите

    xr_conditions.upgrade_item_name = item_name

    Готово. Теперь пятый апгрейд будет доступен только автомату АК74. Другой автомат с другим именем, сделанный на его основе апгрейдится по пятому апгрейду не будет.

     

    • Мастер! 1
    • Жму руку 2

  11. 2 минуты назад, imcrazyhoudini сказал:

    но она у меня не двигается

    Загрузите модель в ActorEditor.

    Переключитесь с editor на engenie.

    Выбираете motions

    Вываливаются доступные анимации. Жмете на нужную и видите время.


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

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

    Ключевое здесь - подпрыгивает к ГГ.

    Вот этого нет в анимациях прыжка, потому что сам полет монстра делает движок, а в анимации только есть положение частей тела во время прыжка.

    Если у вас схема JUMP не работает, то только один вариант остаётся - сделать анимацию с прыжком и её использовать в схеме remark.


  12. 41 минуту назад, imcrazyhoudini сказал:

    не указывается ибо будет автоматически смотреть на актора или рандомно?

    В самом файле есть пояснения. Их можно прочитать.

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

    и как узнать точные миллисекунды анимации?

    ActorEditor в помощь. Проигрываете в нём анимацию и видите её длительность.

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

    собственно что делает time если есть action_end

    Параметр time - это время проигрывания одной анимации. А action_end - это флаг, который выдает скрипт после  окончания проигрывания всех анимаций.

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

    ; обязателен ли сей пункт? или автоматом перейдёт?

    Автоматом ничего не делается. Переход после окончания анимации обязателен.

     


  13. 17 часов назад, imcrazyhoudini сказал:

    как скриптом заставить монстра отыграть анимацию?

    В общем так.

    Схема mob_remark, которая есть во всех играх трилогии написана для..... Сидоровича.

    По просьбе хорошего товарища переписал схему для использования монстрами.

    Здесь есть нюанс. Схема написана как для проигрывания анимаций монстрами, так и для разворота монстра в сторону ГГ.

    Для разворота монстра в сторону ГГ нужно в логике указать параметр target = actor. Для проигрывания анимаций этот параметр в логике не указывается.

    Пользуйтесь на здоровье.

     

    mob_remark.script

    • Мастер! 2
    • Жму руку 1
    • Спасибо 1

  14. 1 минуту назад, Skala сказал:

    ак я всю логику перерыл, всё везде прописано правильно. Вылетает вообще по какому-то скрипту.

    Я наверно раз 5 перепроверил по слогам всё

    Нам это не интересно. Продолжай копать дальше. Ты что здесь ведёшь дневник разработки?


  15. 38 минут назад, Skala сказал:

    Я выяснил, что это связано с логикой для нпс, я её переписал, и на какое-то время вылет исчез, но сейчас заново вернулся

    Продолжай работать в этом направлении. Зачем нам об этом рассказывать?


  16. Второй скрин.

    Справа стена - краска вздулась и осыпалась. Норм.

    Слева стена - впечатление, что только что покрасили.

    Стена прямо, где два чувака - штукатурка осыпалась местами.

    Так не бывает. Помещение одно, условия температурные одни. Шайтан наверное завелся на локации.

    НЕ верю!

     

    • Смех 1
    • Клоун 2

  17. 20 минут назад, Skala сказал:

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

    Прежде чем что-то делать нужно учить мат часть и читать туторы. Их в иненте полным полно. НЕ думайте, что вы изобретаете, что-то новое. Поверьте, что все что вы сейчас делаете, кто-то уже делал и не раз.

    Но вы используете "хитрый" метод:

    Ничего не читаю, делаю тяп-ляп, а если вылетает, то пусть другие учат мат часть и читают туторы, а вам принесут все готовое "на блюдечке". Таких "модмейкеров" я за версту чую. В игнор их. Поэтому в этой теме очень редко что-то пишу. Пишу только если вижу, что человек старался, пытался , но не получилось, либо задача очень сложная и требуются знания большие, чем можно получить от прочтения туторов.

     

    • Жму руку 1
    • Аплодисменты 3

  18. Prostomod , вот так я делал в моде Время Альянса 3.0

    Спойлер

     

    function send_message(actor, npc, p)
        --' p[1] - id текста сообщения из папки text\rus
        --' p[2] - story_id сендера
        --' p[3] - id имени сендера из папки text\rus
        --' p[4] - длительность показа сообщения  в миллисек, по-умолчанию 5 секунд.
        --' =send_message(p[1]:p[2]:p[3]:p[4]) - вызов функции
            if p == nil then
                abort("Wrong parameters in 'send_message' function!!!")
            end
                if p[4] == nil then p[4] = 5000 end
            --' Иконки сендеров [ story_id сендера ] = "Название иконки"
        local portrets = {
                         ["jup_a18_sherkchan_bandit"]     = "ui_inGame2_sherkchan_noheat",
                         ["jup_a9_sedoy_stalker"]         = "ui_inGame2_sedoy",
                         ["jup_a18_baloon_bandit"]         = "ui_inGame2_puzir",
                         ["jup_smuggler_lena"]             = "ui_inGame2_lena_contra",
                         ["bar_a1_botanick"]             = "ui_inGame2_doctor",
                         ["bar_a5_stalkerden"]             = "ui_inGame2_den",
                         ["bar_a2_duty_leader"]         = "ui_inGame2_stalker_dolg_leader",
                         ["jup_a18_botan_bandit"]         = "ui_inGame2_botan_bandit",
                         ["jup_stalker_garik"]             = "ui_inGame2_stalker_Garik",
                         ["jup_stalker_dectyrev"]         = "ui_inGame2_Degtyaryov",
                         ["bar_a1_proveren_3"]             = "ui_inGame2_makdm",
                         ["radar_a4_lider_night"]         = "ui_inGame2_stalker_night_2",
                         ["aver_a1_4erepok_bandit"]     = "ui_inGame2_stalker_bandit_3",
                         ["radar_a1_lider_bandit"]         = "ui_inGame2_evil_raccoon",
                         ["lim_a4_lider_monolit"]         = "ui_inGame2_semperfay",
                         ["lim_a4_brodiaga_monolit"]     = "ui_inGame2_Brodyaga_monolith",
                         ["radar_a6_botanic"]             = "ui_inGame2_ecolog_red",
                         ["bar_a2_dolg_3"]                 = "ui_inGame2_inkvizitor",
                         ["dark_a2_winchester"]         = "ui_inGame2_stalker_jagernaut1",
                         ["radar_a1_gupi_bandit"]         = "ui_inGame2_stalker_bandit_3_face_1",
                         ["bar_a5_voyak_4"]             = "ui_inGame2_stalker_soldier_33",
                         ["pr_a7_stalker_degtyrev"]     = "ui_inGame2_Degtyaryov"
                         }        

                    local news_text = game.translate_string(p[1])
                    local news_caption = game.translate_string(p[3])
                    local showtime =  p[4]
                    local sender = get_story_object(p[2])
                    local texture = "ui_iconsTotal_grouping"
                            if sender then
                                texture = sender:character_icon()
                            elseif portrets[ p[2] ] ~= nil then
                                texture = portrets[ p[2] ]
                            end                        
                xr_sound.set_sound_play(db.actor:id(), "pda_tips")
                db.actor:give_game_news(news_caption, news_text, texture, 0, showtime, 0)
    end

     

     

    • Лайк 1

  19. 5 часов назад, Prostomod сказал:

    предотвратить выпадение оружие из рук НПС при падении раненым (как-то скриптом убрать в инвентарь НПС?)?

    В ТЧ играли? При заходе ГГ на арену оружие отбирается, а при возвращении с арены возвращается в рюкзак ГГ.

    Что мешает сделать тоже самое с НПС?  При переключении на секцию раненного оружие изымайте из рюкзака. После выброса возвращайте. Как это сделать специально не пишу. Все есть в оригиналах игры.


  20. 2 часа назад, Prostomod сказал:

    В чём может быть проблема и как с ней бороться?

    Анимация зацикленная. Движок тупит пока не проиграет её до конца.

    Делается так:

    В файл xr_effects.script добавляем функцию

    function reset_npc( actor, npc )
        reset_animation( npc )
    end

    В логику пишем

    on_info = {+yan_psi_oko_expedition_p2_start} walker@dolg_guard_4_phase_2 %=reset_npc%

    Подпрыгнет как ужаленный. Тормозов не будет.

     

    • Спасибо 2

  21. 1 час назад, Mass сказал:

    on_game_timer = 8 | nil %=kill_npc%

    так не стоит делать!

    Лучше подключить схему death и по поршню убивать!

    Абсолютно ничем не обоснованное и в корне неправильное утверждение. Схема death срабатывает, когда пациент УЖЕ умер. И кого вы там ещё по поршню собрались убивать?

    Я скажу, что именно так делать и НУЖНО!

    З.Ы. Всегда так делаю и всем советую. Да и разрабы сталкера полностью со мной согласны.

     

    • Мастер! 1