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

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


Halford

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

Всем доброго дня. Возможно, мой вопрос несколько не по теме, однако оставлю здесь. Я так понимаю, что если хитовать актёра радиацией на обновлении, то защита костюма не учитывается. А вот если использовать следующий код, не появятся какие либо ненужные последствия?

 

-- на дистанции ближе 10 метров постоянно излучает радиацию

if self.object:clsid()==clsid.snork_s and self.object.health>0.10 then
-- будем учитывать броню
local protect=1
local suit=db.actor:item_in_slot(6)
if suit then
local sect=db.actor:item_in_slot(6):section()
local a=tonumber(system_ini():r_string(sect,"radiation_protection"))
protect=protect*((1-(a*(db.actor:get_current_outfit():condition()))) or 1)
end
local target = self.object:get_enemy() or db.actor
local dist = target:position():distance_to(self.object:position())
if dist < 10 then
local scale = 0.001*(10-dist)
SnorkNum = 1
db.actor.radiation = scale*protect
if inventory.belt["detector_simple"] or inventory.belt["detector_advances"]
or inventory.belt["detector_elite"] or inventory.belt["bioradar"] then
local snd_obj = xr_sound.get_safe_sound_object([[detectors\geiger_1]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 0.5)
end
elseif SnorkNum then
SnorkNum = nil
end
end

 

Здесь могла быть ваша реклама.

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


Ссылка на сообщение

Самый лучший способ - убить. А вообще, файл game_relations, секция communities_relations.

Здесь могла быть ваша реклама.

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


Ссылка на сообщение

@Lanta87, в чистом распакованном 1.0004 файл gameplay\tasks_darkvalley, в нём задание "bar_darklab_documents2". Там всё видно - после проверки наличия у ГГ документов (функция has_darklab_documents ) выдаются три поршня - bar_darklab_document_gain, dar_document5, val_raid_start. Вероятно, первый определяет, что квест сделан (но не сдан!), средний непонятно на фиг нужен, а последний отвечает за переход вояк в онлайн. В файле gameplay\dialogs_bar конструкции диалогов, где строка "<has_info>bar_darklab_document_gain</has_info>" означает, что фраза ниже этой строки будет доступна после получения нужного инфо. Ну в общем отсюда и надо плясать.


@Lanta87, А что касается Сидоровича, то в all.spawn есть рестриктор "esc_return_from_dv". Видимо, нужно разобраться и в нём.


Там имеем следующее - при входе ГГ в зону рестриктора выдаются инфопоршены - "esc_return", "esc_trader_speak", исполняется функция "esc_return_dv". Ту же логику имеет ещё один рестриктор - "esc_return_from_gar".

  • Спасибо 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение

 

 

Именные сейвы
Полностью согласен. Я вообще считаю, стоит потратить немного времени и забиндить сохранения на хоткейс в меню, для сейвов, отсортированных по имени локации и дате. А так же сделать себе автосейвы при выбросе и взятии/выполнении/сдаче важных квестов.

Здесь могла быть ваша реклама.

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


Ссылка на сообщение

 

 

Фигня эти ваши автосейвы
А что мешает автоматизировать постановку на паузу перед сейвом?
  • Согласен 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение

 

 

А давай попробуем
Под паузой я имел ввиду main menu. Но на деле мало что даёт. Попробуй ка сохраниться на паузе или в меню, перед этим загрузив сейв. Почти гарантировано получим крах логики. Если ж кого то не устраивают дополнительные автосейвы (не те, что каждые n минут), не пользуйтесь ими. Я на тестах укрытий от выброса не получил ни одного битого сейва в начале выброса.

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
4 часа назад, Han Sola сказал:

тут же пропадает без следа

Может быть, стоит глянуть скрипты - отслеживается наличие у ГГ детектора и происходит удаление последнего.

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
В 01.10.2017 в 22:04, вася5657 сказал:

всегда одинаковое

Вот так кондишн будет рандомным, и предельно ясно, что состояние ствола от 0 до 50%
item:set_condition(math.random(0,0.50))
А item:set_condition((math.random(15)+75)/100) рандомно 0...15 плюс 75 и сумма делится на 100

  • Спасибо 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
В 01.02.2020 в 22:49, MZMAN сказал:

У кого-какие будут предложения

С одной стороны, довольно просто в нужный момент удалять с ГГ одетый костюм и спавнить ему производный от удалённого с отключенной возможностью бега и тем же кондишеном. И обратно. Но это так себе способ, заморочки с новыми секциями костюмов и всё такое...

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
17 минут назад, naxac сказал:

визуал прописан в all.spawn

как правило, в приоритете визуал именно из .xml

  • Согласен 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
(изменено)
2 часа назад, Akello сказал:

смотреть и пробовать

дабы не пустословить, всё проверил. В all.spawn прописал левый визуал, в геймплее оставил запланированный. НПС заспаунился с визуалом, указанным в .xml. Более нигде визуал не указывал.

29 минут назад, naxac сказал:

@mole venomous, нет, наоборот.

Всё проверено практикой. Если xml-ы распакованы в геймдату, от них и танцы. Если конечно больше нет каких либо нюансов, о которых я не знаю. К слову, НПС для теста СИДовый и спауниться сразу с НИ, т.е. никак не для респавна.

Изменено пользователем mole venomous
  • Согласен 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
2 часа назад, Ninna сказал:

добыть инфу

Вот уж никогда не обращал внимания на эту ерунду, но думаю, можно выдавать нужные инфопорции в любом удобном месте из info_known_objects

  • Спасибо 1
  • Согласен 2

Здесь могла быть ваша реклама.

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


Ссылка на сообщение

Может кто-нибудь информативно пояснить роль пар-ров disp_rate и hit_rate в конфигах оружия? Насколько важны их значения для ГГ и НПС с мобами? Как конкретно эти цифры влияют на точность и повреждения? Я всегда их просто-напросто удалял. 

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
1 час назад, dsh сказал:

никак не вляют

Ясно, как я и подозревал. Вот уж заодно тогда поинтересуюсь. Могу ли я как то привнести рандома к хиту оружия? Если с кучностью всё понятно, то хит фиксирован, не считая дальности, иммунитетов, точек попадания и прочего. Т.е. без ковыряния движка, выставить величину hit_power в рамках "от и до" (какая нибудь поправка посредством скрипта, может). Или же овчинка выделки не стоит?

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
2 часа назад, UriZzz сказал:

перестаёт работать

Я просто поставил вызов прятания рук из inventory.on_inventory_info. При использовании инвентаря всегда всё работает.

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
27 минут назад, СЕРА сказал:

нет переноса

Не знаю, зачем он конечно нужен. Но если сделать так

https://yadi.sk/i/OCiNGIS6WViPUg

то будет как надо

https://yadi.sk/i/o3cGiHvuH96Xvw

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
7 часов назад, Святой Сев сказал:

в чем разница между

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

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
8 часов назад, Святой Сев сказал:

Как то странно в итоге

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

  • Согласен 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
2 минуты назад, СЕРА сказал:

зависает

А в логе никаких подозрительных надписей нет?

  • Согласен 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
10 часов назад, Ninna сказал:

как заспавнить

Вот функция, удобно спаунить на ходу, тремя способами (по координатам, по имени профиля и ID

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

function AddItems(items,recipient)
    local count = 0
    local pos, lvid, gvid, id, obj 
    local function Compare(id)
    obj = alife():object(id)
        return obj and obj.profile_name and obj:profile_name() == recipient
    end 
    for k, v in pairs(items) do
        if type(recipient)=='table' then
            for k, v in pairs (items[k]) do
            count = k
                for i=1, count do
                 alife():create(v,vector():set(recipient['x'],
                  recipient['y'],recipient['z']),
                   recipient['lv'],recipient['gv'])
                end
            end 
        elseif type(recipient)=='string' then
    if recipient =="actor" then
        obj = alife():actor()
        else
        for i=1, 65534 do
            local predicate = Compare(i)
            if predicate then
            break
           end
        end
    end 
    if obj == nil then return end
        for k, v in pairs (items[k]) do
            count = k
                 for i=1, count do
                 alife():create(v, obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id)
            end
        end 
    elseif type(recipient)=='number' then
        obj = level_object_by_sid(recipient)
            if obj ~= nil then
             id, pos, lvid, gvid= obj:id(), obj:position(), obj:level_vertex_id(), obj:game_vertex_id()
             elseif obj == nil then
             obj = alife():story_object(recipient)
             id, pos, lvid, gvid = obj.id, obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id
                for k, v in pairs (items[k]) do
                    count = k
                   for i=1, count do
                   alife():create(v, pos, lvid, gvid, id)
                   end
               end
            end
        end
    end
end

function AddItemsByName()
    local items = {
    {[1]="item_1"}, -- итемы и их кол-во
    {[2]="item_2"},
    {[5]="item_3"}
    }
    local recipient = "profile_name" -- имя из профиля
    AddItems(items,recipient)
end

function AddItemsByID()
    local items = {
    {[1]="item_1"}, -- итемы и их кол-во
    {[2]="item_2"},
    {[5]="item_3"}
    }
    local recipient = 515 -- sid NPCа или кейса
    AddItems(items,recipient)
end

function AddItemsByPlace()
    local items = {
    {[1]="item_1"}, -- итемы и их кол-во
    {[2]="item_2"},
    {[5]="item_3"}
    }
    local recipient = {x=124.25,y=-7.69,z=-11.66,lv=427496,gv=133} -- координаты и вертексы
    AddItems(items,recipient)
end

 

  • Спасибо 1

Здесь могла быть ваша реклама.

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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