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

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

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

Только сейчас заметил одну проблему.

Если отойти от нового НПС на приличное расстояние то он исчезает в мир иной.

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

Раньше не было такого, НПС не квестовые стоят голые без диалогов.

ЗЫ

Хотя нет один использует эти функции.

Скрытый текст

function has_item_af_medusa(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_medusa") ~= nil
end
return false
end

function has_item_af_medusa_pes(first_speaker, second_speaker) 
dialogs.relocate_item_section(second_speaker, "af_medusa", "out")
end

function has_item_kanistra(first_speaker, second_speaker)
local n=2
local count=0
db.actor:iterate_inventory(function (dummy, item) if item:section()=="explosive_mobiltank" then count=count+1 end end, nil)
if count>=n then
return true
else
return false
end
end

function has_item_kanistra_pes(first_speaker, second_speaker)
flamethrower.relocate_n_items_section(second_speaker, "explosive_mobiltank", "out", 2)
dialogs.relocate_item_section(second_speaker, "wpn_pm", "in")
dialogs.relocate_item_section(second_speaker, "ammo_9x18_fmj", "in")
end

Когда беру канистры он в первую очередь пропадает, может что то не так с проверкой has_item_kanistra?

Изменено пользователем Guidesun
Ссылка на комментарий
Поделиться на других сайтах

3 минуты назад, Guidesun сказал:

Если отойти от нового НПС на приличное расстояние то он исчезает в мир иной.

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

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

Ранее был известен под ником BoBaH_671.

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

1 час назад, Overfirst сказал:

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

Никогда не сталкивался с подобным. На всякий случай секция НПС.

Скрытый текст

[870]
; cse_abstract properties
section_name = stalker
name = esc_pes
position = -199.870178222656,-19.8877372741699,-137.10905456543
direction = 0,0,0
 
; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_pes
 
; cse_alife_object properties
game_vertex_id = 57
distance = 0
level_vertex_id = 52330
object_flags = 0xffffffbf
custom_data = <<END
 
[logic]
active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition
 
[walker@stay_at_position]
path_walk = esc_lager_wolf_walk
path_look = esc_lager_wolf_look
 
[combat_ignore]
combat_ignore_cond = always
 
[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0
END
story_id = 10000
 
; cse_visual properties
visual_name = actors\soldier\soldier_beret_1
 
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 2
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
 
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -199.870178222656,-19.8877372741699,-137.10905456543
upd:o_model = 0
upd:o_torso = 0.028013030067086,0,0.9996075630188
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 2
 
; cse_alife_monster_abstract properties
 
upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0
 
; cse_alife_human_abstract properties
predicate5 = 1,2,2,1,2
predicate4 = 0,1,1,1
 
; cse_ph_skeleton properties
 
upd:start_dialog =
 
; se_stalker properties

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Даже представления не имею что прописать что бы он не уходил в мир иной.

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

Продолжения поста. Ошибочка, НПС не исчезает а бежит за мной будто старается попасть в мой радиус действия А-Лайф.

У меня слов нет. Что делать ума не приложу, что ему прописать в логике что бы он тупо стоял. Думал patch_walk и patch_look будет достаточно.

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

@Guidesun

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

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

2 часа назад, AndreySol сказал:

затянуть

Простое 
[smart_terrains]
none = true
Решает эту проблему.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

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

1 час назад, Houdini_one сказал:

none = true

Вот мне не надо за это рассказывать - лучше бы @Guidesun рассказал... 

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

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

И в них никогда не было таких проблем. Конечно в логике у них было прописано:

[smart_terrains]
none = true

Но как тут раньше говорили гуру моддинга - это вроде-как и не работает в вынесенной из олл-спавн логике. А логика в этих модах вынесена.

Да и большинство персонажей скриптом спавнились...

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

Как перевести в офф а потом обратно в онлайн гулаг? Скажем ферма в ТД с продавцами гауссовки. Условия вида

online = "{+info1}"

работает, а вот

online = "{-info1}"

offline = "{+info1}"

offline = "{-info1}"

почему-то никакого действия не оказывают.

Выглядит так:

    -- простые сталкеры внутри фермы вокруг костра
    for i = 1, 5 do
        t = { section = "logic@" .. gname .. "_kamp",
            idle = 0,
            prior = 1, state = {0},
            squad = squad, group = groups[1],
            online = "{+info1}", --строка с условием
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
    end

 

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

@dPlayer, возможно, что такое там не предусмотрено. Скрипта под руками нет, не могу сказать точно. Попробуй сделать два разных состояния у лагеря, одно для онлайн и другое - для оффлайн, и их переключай. 

Изменено пользователем dsh
Ссылка на комментарий
Поделиться на других сайтах

В 21.09.2018 в 09:19, dPlayer сказал:

offline = "{+info1}"

offline - нет такого параметра для логики, и видимо вариант переключения состояний - единственное решение

Изменено пользователем AndreySol
Ссылка на комментарий
Поделиться на других сайтах

@AndreySol, точно. Эх, думал можно всё по быстрому сделать)

@Змея, прям из логики гулага?

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

@dPlayer,  может и из логики...если можно.

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

А так...по оригиналу...достаточно ГГ всех их убить вроде))

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

20 часов назад, dPlayer сказал:

Эх, думал можно всё по быстрому сделать)

А что тут долгого - добавить в скрипт гулага пару строк с переключением состояний ?

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

@Змея, увести их в онлайн, разыграть сценку а потом обратно в онлайн))

@AndreySol, покажи пжлста на примере этого гулага?

Скрытый текст

--------------------------------------------------------------------------
-- Robbers (грабители на ферме)
--------------------------------------------------------------------------
-- Predicates ------------------------------------------------------------

-- Jobs ------------------------------------------------------------------
gulags.val_rob.job = function(sj, gname, type, squad, groups)
    local i = 0

    local ltx = "[meet@ignore_abuse]\n" ..
                "use             = false\n" ..
                "use_wpn         = false\n" ..
                "abuse           = false\n" ..
                
                "[meet@" .. gname .. "_warn]\n" ..
                --"meet_state     = 20| {+val_rob_buying} threat, guard@ {+val_rob_buying} val_rob_guard_jeer\n" .. --, weather
                "meet_state     = 1| threat@threat_back\n" .. --, weather
                "meet_state_wpn = 25| threat@{+val_rob_buying} val_rob_guard_jeer, threat_back\n" ..
                "victim         = 20| actor\n" ..
                "victim_wpn     = 25| actor\n" ..
                "use            = true\n" ..
                "use_wpn        = false\n" ..
                "zone           = val_rob_warn_zone| {+val_rob_buying} threat@ {+val_rob_buying} val_rob_guard_jeer | val_rob_kill_zone| {+val_rob_buying} true \n" ..

                "[kamp@" .. gname .. "_kamp]\n" ..
                "center_point    = kamp\n" ..
                "meet            = meet@" .. gname .. "_warn\n"

    -- главный грабителей, с которым разговариваем
    t = { section = "logic@" .. gname .. "_leader",
        idle = 0,
        prior = 3, state = {0},
        squad = squad, group = groups[1],
        in_rest = "", out_rest = ""
    }
    table.insert(sj, t)
    ltx = ltx.."#include \"scripts\\val_rob_leader.ltx\"\n"

    -- охранники на входах в здание фермы
    for i = 1, 2 do
        t = { section = "logic@" .. gname .. "_guard" .. i,
            idle = 0,
            prior = 2, state = {0},
            squad = squad, group = groups[1],
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)

        ltx = ltx.."[logic@" .. gname .. "_guard" .. i .. "]\n" ..
                   "active = walker@" .. gname .. "_guard" .. i .. "\n" ..

                   "[walker@" .. gname .. "_guard" .. i .. "]\n" ..
                   "path_walk = guard" .. i .. "_walk\n" ..
                   "path_look = guard" .. i .. "_look\n" ..
                   "meet      = meet@" .. gname .. "_warn\n"
    end

    -- простые сталкеры внутри фермы вокруг костра
    for i = 1, 5 do
        t = { section = "logic@" .. gname .. "_kamp",
            idle = 0,
            prior = 1, state = {0},
            squad = squad, group = groups[1],
			online = "{-find_dynamite}",
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
    end

    ltx = ltx.."[logic@" .. gname .. "_kamp]\n" ..
               "active = kamp@" .. gname .. "_kamp\n"

    gulags.val_rob.ltx = ltx
end

 

 

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

11 минут назад, dPlayer сказал:

покажи пжлста на примере этого гулага?

Такие портянки под спойлер надо прятать, а то модератор ругаться будет.

Ты привел только загрузки работ, а переключение состояний гулагов происходит в ф-ции

Скрытый текст

 

function load_states(gname, type)

    if type == "val_rob" then
        return function(gulag)
            local actor = db.actor
            if not actor then
                return gulag.state
            end

 

            if has_alife_info("твоя_инфо_порция") then
                return 1 -- состояние 1, пусть это будет офф-лайн
            else
                return 0 -- состояние 0
            end
        end
    end

 

далее, соответственно в описании работ делаешь два набора работ для всех НПСов, типа так:

Скрытый текст



    -- простые сталкеры внутри фермы вокруг костра
    for i = 1, 5 do
        t = { section = "logic@" .. gname .. "_kamp",
            idle = 0,
            prior = 1, state = {0}, --<-- тут они в он-лайн
            squad = squad, group = groups[1],            online = true,
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
    end

    -- простые сталкеры внутри фермы вокруг костра
    for i = 1, 5 do
        t = { section = "logic@" .. gname .. "_kamp",
            idle = 0,
            prior = 1, state = {1},--<-- тут они в офф-лайн
            squad = squad, group = groups[1],
            online  = false,
            in_rest = "", out_rest = ""
        }
        table.insert(sj, t)
    end


 

И читай СталкерВики, там много полезного.

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

Здравствуйте ВАМ. Добавил трупаку вещи через ал.спавн, по принципу солдата на Янтаре (у которого спекопскомбез), но у меня ни чего не появилось. В чем проблема? 

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

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

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

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