Перейти к контенту
Halford

[SoC] Ковыряемся в файлах

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

Друзья, как восстановить кнопку отключения (а на самом деле просто скрытия интерфейса) КПК, как в билдах? Понимаю, что глупый вопрос, но ответа здесь не нашел, а у самого по какой-то причине не получается.

Ссылка на комментарий

 

 

как восстановить кнопку отключения
Мод Paradise Lost и DMX тебе в помощь, там это работает без багов и реализовано очень просто одним скриптом.
  • Нравится 1
Ссылка на комментарий

Очередной вопрос по логике.

Есть НПС, который двигается по очень простой схеме, от одной точки кампа до другой.

 

custom_data = <<END
[smart_terrains]
none = true
[spawner]
cond = {+info1}

[logic]
active = kamp

[kamp]
center_point  = mob_camp_center
path_walk = mob_camp_center_task
radius = 3
on_info = {+info2} walker1

[walker1]
path_walk = mob_walk
path_look = mob_look
on_info = {+info3} walker2

[walker2]
path_walk = mob1_walk
path_look = mob1_look
danger = danger_ignore
on_timer = 20000 | kamp1

[kamp1]
center_point  = mob1_camp_center
path_walk = mob1_camp_center_task
danger = danger_ignore
radius = 3

[danger_ignore]
ignore_distance = 0
END

 

 

Всё работает нормально, НПС идёт куда надо и приходит куда надо и там сидит травит байки.

Одна только неприятность : если ГГ уходит из алайфа НПСа, пошарить по локации и потом возвращается, например через некоторое время, то НПС оказывается в секции [walker2] почему-то. Потом согласно таймеру он конечно перейдёт в [kamp1].

 

Как сделать так, чтобы НПС при достижении [kamp1], всегда в нём и оставался, независимо, от того где шастает наш ГГ ?

Спасибо.

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

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий

@BFG, при переходе оффлайн/онлайн логика у НПЦ перезапускается с самого начала. То есть у тебя она начинается с kamp, затем быстро проскакивает до walker2, так как поршни выданы, а дальше переход только по таймеру.

Как вариант добавить еще поршень info4, выдавать его при переходе в секцию kamp1, а в секцию walker2 добавить условие on_info = {+info4} kamp1

Так же можно прописывать условия в active. Типа:

active = {+info4} kamp1, kamp
  • Спасибо 2
  • Полезно 1

Подарки

  • Ссылка на комментарий

    Подскажите, есть возможность поссорить ГГ с гулагом который в офлайн?

    Сейчас использую рестриктор с радиусом 140, и координатами центра гулага, но, что то не нравится мне этот способ.

    Ссылка на комментарий
    @ins33, если память мне не изменяет, то только через x-ray extensions. Там есть методы для изменения отношений в оффлайне. Ну а без этого, написать скрипт, который дождется выхода в онлайн каждого члена гулага и далее по накатанной.
    Ссылка на комментарий

    Сталкеры, нужна помощь.

    Спавню скриптом предмет в рюкзак:

    function spawn_card()


    local obj = alife():object("pred_rukzak")
    if obj then
    alife():create( "access_card", vector(), 0, 0, obj.id )
    end
    end

     

     

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

     

    Пробовал делать так:

    function spawn_card()
    local obj = alife():object("pred_rukzak")
    if obj then
    alife():create( "access_card", vector(), 0, 0, obj.id )
    local params = amk.get_invbox_data(obj)
    params.custom = "[logic]\ncfg = scripts\\treasure_inventory_box.ltx"
    amk.set_invbox_data(params, obj)
    end
    end

     

     

    Но предмет все равно пропадает. Я что-то не так делаю, или что?

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

    Сталкер - наше всё!

    Ссылка на комментарий

    @AndrewMor, вот соляночная функция для спауна вещей кому угодно:

    function spawn_item_in_inv(spawn_item,npc)
    	if not npc then 
    		npc = db.actor 
    	end
    	local item = alife():create(spawn_item, 
    		npc:position(),
    		npc:level_vertex_id(),  
    		npc:game_vertex_id(),
    		npc:id())
    	
    	if npc:id() ~= db.actor:id() then
    		-- Фикс пропадания доспавненного предмета при сейв/лоаде
    		level.client_spawn_manager():add(item.id, -1, fix_spawn_item_in_inv, npc)  -- Калбек на выход item в онлайн
    	end
    
    	return item
    end
    
    

    Комментарием отмечен тот самый трюк, что бы не пропадало. Вместо

    alife():create( "access_card", vector(), 0, 0, obj.id )
    
    

    сделай

    spawn_item_in_inv( "access_card", obj )
    

    Не знаю, какой баг таким образом обходится, но работает.

    Ссылка на комментарий

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

    Такой глюк движка...

    @dsh, забыл написать функцию fix_spawn_item_in_inv - сам каллбэк, в котором происходит трансфер.

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

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

    Ссылка на комментарий

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

     

    @AndrewMor, вот она

    function fix_spawn_item_in_inv(npc, id, item)
        npc:transfer_item(item, npc)
    end
    
    
    Ссылка на комментарий

     

     

    вот соляночная функция для спауна вещей кому угодно:

    Кому угодно - это очень хорошо. Но мой случай - inventory_box. Для ящика будет работать?

    Сталкер - наше всё!

    Ссылка на комментарий

    Здравствуйте. Сделал все, как написано в http://www.amk-team.ru/forum/topic/6458-uroki-po-modostroeniiu/?p=634638,  для отображения на экране сообщений о смерти сталкеров. Вот что получилось: http://s019.radikal.ru/i601/1606/5d/05dda1fdb5cb.png  Подскажите пожалуйста  как исправить, чтобы правильно отображалось. 

    Ссылка на комментарий

    @Пруткоф, сохрани файл своего скрипта в другой кодировке (1251, например).

    Изменено пользователем varan
    • Спасибо 1
    Ссылка на комментарий

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

    Ссылка на комментарий

    Кидать эти сообщения в некий буфер, добавляя туда сведения о времени, когда сообщение заброшено в этот буфер.

    А на апдейте (можно не каждом, а раз в сколько-то секунд), перебирать этот буфер, достаточно старые сообщения выводить на экран и удалять из буфера.

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

     

     

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

     

    Очень просто. У news_manager.send_tip() есть параметры, один из них  - задержка отправки с секундах( игрового времени или реального не помню). Один минус - сообщения будут без звука но это легко компенсировать добавляя play_snd_no_feedback() или что-то подобное...

     

    Или перепеши send_tip под себя...

     

    Ну итог - ничего сложного нет :)

    • Спасибо 1

    Не соответствует правилам.

    Ссылка на комментарий

    Добрый вечер. В каком файле, по возможности можно указать и функцию, происходит открытие другого меню, например при нажатии "Опции" или "Титры"? 

    З.ы. Поковыряв AMK, так и не нашел, как у них сделано открытие нового меню, с опциями.

    Ссылка на комментарий

     

     

    чтобы сообщение о смерти сталкеров приходили не мгновенно, а с задержкой.

    Просто не использовать этот скрипт. 

    Отношения между людьми- главная ценность в человеческом обществе.
    Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
    Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
    Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

    Ссылка на комментарий

    Очень просто. У news_manager.send_tip() есть параметры, один из них  - задержка отправки с секундах.

    Подскажите пожалуйста, если можно, где здесь строка отвечающая за этот параметр.

     

    function send_tip(actor, news_id, timeout, sender, showtime, sender_id)

    if news_id == nil then return false end

     

    printf("try to send tips for [%s]", tostring(sender_id))

    if sender_id ~= nil then

    local sim = alife()

    if sim ~= nil then

    local npc = sim:story_object(sender_id)

    if npc ~= nil then

    if npc.online then

    --в онлайне проверяем на раненность

    if xr_wounded.is_heavy_wounded_by_id(npc.id) then

    printf("[PDA]Cannot send tips [%s], sender is heavy wounded", tostring(news_id))

    return false

    end

    end

    -- в других случаях только на смерть

    if npc:alive() == 1 then

    printf("[PDA]Cannot send tips [%s], sender is dead", tostring(news_id))

    return false

    end

    end

    end

    end

     

    if timeout == nil then timeout = 0 end

    if showtime == nil then showtime = 5000 end

     

    Ссылка на комментарий

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

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   0 пользователей

      Ни один зарегистрированный пользователь не просматривает эту страницу.

    AMK-Team.ru

    ×
    ×
    • Создать...