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

Ковыряемся в файлах ОП 2.1

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

О какую полезную функцию углядел.

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

function release_all_online(section)
    local obj
    for k,v in pairs(db.storage) do
    obj = level_object(k)
    if obj:section() == section then
        release(server_object(obj:id()))
    end
    end
end

Только вот не понял, в alife работает или только подгруженные чистит? Написано, конечно, online, но..

@mikkimorf1n, когда куратор изволит-с. Давно его не было.

@INNOCENT K.I.L.L.A.Z., не подскажем. Если ты имеешь ввиду что хочешь создать броник с нуля, то гугли.

Изменено пользователем Kakos
Ссылка на комментарий

Камрады.

Начал вот заново. Скачал, скачал и поставил патчи(за время не игры вышли версии 4+).

Собственно все хорошо и замечательно.

Но балалайки у каждого костра это слишком...почему не гармонь или ложки?

Есть ли способ вернуть  гитары?

ЦЗ ОП 2.1 на 01.08.2019

 

Если все государства, вблизи и вдали, Покоренные, будут валяться в пыли – Ты не станешь, Великий Владыка, бессмертным. Твой удел невелик — три аршина земли

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

@ALLCOM,  В xr_kamp.script (со строки 1040)

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

        -- играть на гармошке
        local f = false---true
        npc_states["play_harmonica"] = f
        npc_states["wait_harmonica"] = f
        self.kamp_states["pre_harmonica"] = f
        self.kamp_states["harmonica"] = f
        self.kamp_states["post_harmonica"] = f

        -- играть на гитаре
        f = false---true
        npc_states["play_guitar"] = f
        npc_states["wait_guitar"] = f
        self.kamp_states["pre_guitar"] = f
        self.kamp_states["guitar"] = f
        self.kamp_states["post_guitar"] = f

        -- играть на балалайке
        f = false---true 
        npc_states["play_balalaika"] = f
        npc_states["wait_balalaika"] = f
        self.kamp_states["pre_balalaika"] = f
        self.kamp_states["balalaika"] = f
        self.kamp_states["post_balalaika"] = f

        -- анекдоты
        f = self.population > 1
        self.kamp_states["pre_joke"] = f
        self.kamp_states["joke"] = f
        self.kamp_states["post_joke"] = f
 

 

Изменено пользователем lexa.3012
  • Нравится 1
  • Полезно 2
Ссылка на комментарий

Кто знает как поправить эмбрионы - монстры которые получаются кидаются на других сталкеров, защита ГГ получается только от других монстров.

Тушканы, коты, крыски и тараканчики толпой дружно валят сосычей и даже больших псевдышей, турель вообще отдыхает.

Особенно хорошо у них выходит в связке с бюрерами, правда сталкеры и др. неписи тоже попадают в их меню.

Как бы полностью приручить полезных зверьков.

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

@vsk94, это врятли возможно поправить. Та же проблема, что и в отношениях танков с мутантами.

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

Гг, соответственно, не человек. чтд.

 

По Шахматисту.

Эти разрабы-редиски запамятовали переименовать soap по квесту для Шедоумена(напридумывают всякого..) в fima_soap, вследствии чего вылет по несуществующему предмету при диалоге с Доктором насчёт его юношеской любви.

Лечение: заменить все упоминания "soap" в oksana_spawn.script на "fima_soap".

Актуально как минимум для тех, кто на первом патче и собирается проходить этот квест.

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

@Kakos

Этот баг старый и пост про него был.

Я не переименовывал, а добавил секцию.

З.Ы.

С чем еще столкнуться можешь.

Круглов бегает по Х-16, что в попу укушенный. Приходишь, а оно уже умерло, так как благодаря

разрабам в лабе довольно много всяческих зверушек. Соответственно - диалогов нет. Все встало.

Решение - зачистка перед тем как брать квест на его поиски.

Дальше интересней - поговорили, убили, а внутрях пусто.

Ни дневника, ни записки.

Причем может быть, а может  и нет - рендом какой то.

Заметь в спавне они прописаны - note_5 и diary_chess_9

Тот же фокус может быть с отцом Пантеры - dictofon_19

Может будет, может нет.

Про найденный неправильный рестриктор на Генераторах, вроде уже все знают.

Странно, в ОП 2 наиболее стабильное дополнение было. Все как часы.

Я кривыми ручками адаптировал туда Шахматиста - 2 и 3. Вся трилогия в сборе.

Находил и убивал его - редиску такую. :)

А тут много проблем, да еще и с этим спавном, наверное не получится.

 

Изменено пользователем Chezet
  • Спасибо 1
  • Нравится 2
  • Согласен 1

Сталкер Петров: "Мутанты бывают трёх видов - от которых живот болит, от которых живот не болит и те, что ещё не ел."
Гид для любителей грибочков и яиц!
Гид по документам Воронина для ООП+К+МА

Chezet.gif

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

@Sasja, пошерсти по bind_actor.script

Там в комментах указано какая функция за что отвечает.

А вообще, вроде в шапке было.

 

Вот ещё

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

-- Выбивание из рук оружия
local ac_slots={
    [inventory_slots.NO_ACT_SLOT]=false,
    [inventory_slots.KNIFE]=false,
    [inventory_slots.PISTOL]=true,
    [inventory_slots.RIFLE]=true,
    [inventory_slots.SHOTGUN]=true
}
function monster_binder:drop(prob)
    if math.random() < prob and not _G.Inventory:on_belt("af_idol_monolita") then 
        local active_item = db.actor:active_item() 
        if active_item and math.random() < level.get_game_difficulty()/40 and ac_slots[db.actor:active_slot()] then
            db.actor:drop_item(active_item) 
            archievements.acv_count_event("acv_drop", 10, "acv_drop")
        end 
    end 
end

замени все true на false в первой таблице, должно помочь.

 

@sergei666, ещё с десяток подобных и даже более сложных заданий. Как вы так ломаете фотик, не пойму.

Изменено пользователем Kakos
Ссылка на комментарий

@Chezet, у меня Лентяй на реактивной тяге исчезал на болотах. Походу глубоко топился. Подхожу - метка маячка пропадает. Переиграл, сразу с первого появления на Янтаре заспавнил себе хабар, который ему нужен. Потом Клёнов к нему послал, а его нету. Пришлось его диалоги Клёнову прописать..

С генераторами скоро повоюю. Как раз улики собрал.

@Chezet, свершилось. 

 

local custom = "[logic]\ncfg = scripts\\generators\\geber_fritz_restrictor_2.ltx"

замена этого английского мягкого знака на ангельскую букву n.

Чем у разрабов тестеры занимались пол года? Этож тупо очепятка. Или или или они\она адаптировали\а этот квест без проверки? Мрак короче.

 

А в свежей версии патча эти косяки вылечены?

Изменено пользователем Kakos
  • Спасибо 1
  • Нравится 1
  • Смешно 1
Ссылка на комментарий
В 14.03.2019 в 17:59, Sasja сказал:

убрать эффект псевдособаки и засос кровососа

Попробуй сделать так в файле bind_monster.script:
 

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

 

-- Атака пси-пса из билда 1935
function monster_binder:psy_dog_attack()
    --[[self:effector(4000, 20, function()
        level.add_cam_effector("build_1935_pseudodog_effect_1.anm", 9901, false, "")
        level.add_cam_effector("build_1935_pseudodog_effect_2.anm", 9902, false, "")
        level.add_pp_effector("psy_antenna.ppe", 9903, false)
        say("monsters\\pseudodog\\psy_affect_0")
        self:hit(hit.telepatic, 0.05, 0)
        self:drop(0.5)
    end)]]
end

 

и

 

-- Засос кровососа
function monster_binder:bloodsucker_suck()
  --[[  self:effector(800, 2.5, function()
        self:hit(hit.wound, 0.6, 100)
        -- разворот актора
        if math.random() < level.get_game_difficulty()/20 then
            db.actor:set_actor_direction(vector_rotate_y(self.object:direction(), math.random(-180,180)):getH())
        end
    end)]]
end

 

Нужно заключить в этих функциях в --[[ что-то ]]

 

 

 

В 14.03.2019 в 17:59, Sasja сказал:

убрать эффект псевдособаки и засос кровососа

уже не могу редактировать комментарий, поправочка небольшая, у кровососа так сделай:

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

-- Засос кровососа
function monster_binder:bloodsucker_suck()
  --[=[  self:effector(800, 2.5, function()
        self:hit(hit.wound, 0.6, 100)
        -- разворот актора
        if math.random() < level.get_game_difficulty()/20 then
            db.actor:set_actor_direction(vector_rotate_y(self.object:direction(), math.random(-180,180)):getH())
        end
    end) --]=]
end

 

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

Народ, есть правка чисто на показ ВСЕХ тайников, которые на базе treasure_item, на карте. В том числе уже заспавненные. Хочу посмотреть сколько я всякой всячины пропустил. Сейчас вот обнаружил, что КСВК не нашёл в ВП.

 

А Волги (wpn_v94) вообще нету в игре нигде. Файлы есть, оружие есть, но в игру не добавлено. Первый патч.

Добавлено polkooovnik,

Волга есть, её просто забыли куда либо вписать на спавн и из за этого повиснет ЦЗ у Иванцова
Но её удаление вписать не забыли :)

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

@Kakos, показометр установи и нажми в меню кнопку F1 , отобразит для текущей локации.

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

 

@Kakos, лишняя нагрузка ни к чему. Может вылета и не будет, но кто его знает, может прощупывание каких тайников/сундуков пнет какой рестриктор/поршень.

 

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

-- Удаление меток в ручную --
function del_spots()
    for i, v in pairs( t_labels ) do
        if sim:object( i ) and level.map_has_object_spot( i, v ) ~= 0 then
            level.map_remove_object_spot(  i, v )
        end
    end
    amk.send_tip( "Метки удалены" )
end

-- Вывод меток на арты, разбиваемые ящики и тайники --
function set_spots()
    if not reinit() then return end

    local obj, gvid, cls_id

    for i = 1, 65534 do    -- Ищем вообще все существующие объекты в игре
        obj = sim:object( i )
        if obj then
            cls_id = obj:clsid()
            if cls_id == c_af then    -- арты
                if obj.parent_id == 65535 then    -- лежат на земле

                    gvid = obj.m_game_vertex_id    -- только те, что на текущей локации
                    if gg:valid_vertex_id( gvid ) then
                        if gg:vertex( gvid ):level_id() == level_id then

                            t_labels = "artefact_location"
                            add_spot( i, "artefact_location", obj:name() )

                    end    end
                end

            elseif ( cls_id == c_ibox )        -- тайники
              and ( obj.position.y >= -290 )    -- ящики Бака исключаем
                -- ниже дополнительные фильтры, чтобы показывать НЕ ВСЕ
              -- and ( string_sub(obj:section_name(), 1, 1) == "m" or string_sub(obj:section_name(), 1, 1) == "e" )
              -- and string_sub( obj:section_name(), 1, 1 ) ~= "m"

              then
                gvid = obj.m_game_vertex_id    -- только те, что на текущей локации
                if gg:valid_vertex_id( gvid ) then
                    if gg:vertex( gvid ):level_id() == level_id then

                        local box = lobj_by_id( i )    -- только те, что в онлайне
                        if box and not box:is_inv_box_empty() then    -- и с хабаром
                            t_labels = "habar_clear_location"
                            add_spot( i, "habar_clear_location", obj:name()
                                -- высоту здесь покажем, чтоб искать проще
                                .. "y = " .. tostring( obj.position.y )
                            )
                        end
                end    end

            elseif cls_id == c_box then    -- разбиваемые ящики
                gvid = obj.m_game_vertex_id    -- только те, что на текущей локации
                if gg:valid_vertex_id( gvid ) then
                    if gg:vertex( gvid ):level_id() == level_id then

                        local ini = obj:spawn_ini()    -- только те, из которых что-то выпадает
                        if ini and ini:section_exist( "drop_box" ) then
                             t_labels = "green_location"
                            add_spot( i, "green_location", obj:name() )
                        end
                end    end

            elseif t_sect[obj:section_name()] then    -- показываем объекты по имени секции
                -- log( "found " .. obj:name() )
                gvid = obj.m_game_vertex_id    -- только те, что на текущей локации
                if gg:valid_vertex_id( gvid ) then
                    if gg:vertex( gvid ):level_id() == level_id then

                        t_labels = "alife_combat_attack"
                        add_spot( i, "alife_combat_attack", obj:name() )

                end    end

            elseif t_names[obj:name()] then    -- показываем объекты по уникальному имени
                gvid = obj.m_game_vertex_id    -- только те, что на текущей локации
                if gg:valid_vertex_id( gvid ) then
                    if gg:vertex( gvid ):level_id() == level_id then

                        t_labels = "alife_combat_attack"
                        add_spot( i, "alife_combat_attack", obj:name() )

                end    end
            end
    end    end

    amk.send_tip( "Метки установлены" )
end

 

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

@Alexey Goncharenko, пока что вышло только показать вообще все inventory boxы, включая пустые, по всей зоне. С мааленьким лагом на установке меток.

я так понял, что корень зла здесь

                   local box = lobj_by_id( i )    -- только те, что в онлайне

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

 

Хотя написано, что это делают эти проверки 

                gvid = obj.m_game_vertex_id    -- только те, что на текущей локации                           --взятие вертекса в переменную
                if gg:valid_vertex_id( gvid ) then                                                                                         --проверка на валидность
                    if gg:vertex( gvid ):level_id() == level_id then                                                                 --собсна, сама проверка на ..ээ... текущесть локации.                                    

Но я их оттуда выкинул и ничего не изменилось. Либо я чего-то не понимаю.

Изменено пользователем Kakos
Ссылка на комментарий

@aleks nevskiy, зачем? Если можно в key_handlers вписать

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

        [DIK_keys.DIK_R]={
            func=function()
                if ctrl_state then
                    db.actor:set_actor_position(device().cam_pos:add(device().cam_dir:mul(5.0)))
                end
                if shift_state then
                    db.actor:set_actor_position(device().cam_pos:add(device().cam_dir:mul(15.0)))
                end
                if alt_state then
                    db.actor:set_actor_position(device().cam_pos:add(device().cam_dir:mul(45.0)))
                end
            end

Телепорт в направлении взгляда на 5 или 15 или 45 метров по сочетанию кнопок (CTRL или SHIFT или ALT) с кнопкой R.

 

@arthur, смотри у меня в подписи под сообщением.

Изменено пользователем Alexey Goncharenko
Ссылка на комментарий
2 часа назад, ivan1 сказал:

у гравипушки увеличить расстояние подбора артефактов

gamedata/scripts/binders/bind_ggun.script

заменить 13 на нужное

 

if not dist then dist = 13 end -- дистанция захвата

self:capture(0.999,13)

  • Спасибо 1
  • Полезно 1
Ссылка на комментарий
Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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