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

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


Halford

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

Сделал предмет (Документ)
 

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

 

[docs_t4]:identity_immunities
GroupControlSection    = spawn_group
discovery_dependency=
$spawn                 = "devices\pda"
$prefetch             = 16
class                = II_ATTCH
cform                = skeleton
visual                = equipments\item_pda.ogf
description            = enc_equipment_devic_device-docs_t4

inv_name            = docs_t4
inv_name_short        = docs_t4
inv_weight            = 0.3    ;0.2

inv_grid_width        = 2
inv_grid_height        = 1
inv_grid_x            = 6
inv_grid_y            = 19
cost                = 0
attach_angle_offset        = 3.080506,-1.493053,-1.202040   ;устанавливается в радианах Angle*PI/180
attach_position_offset    = 0.080000,0.021273,0.100000
attach_bone_name        = bip01_r_hand
auto_attach                = false

 


Сделал скрипт на отбирание вещи у актора

function bar_remove_docs4(first_speaker, second_speaker)
        dialogs.relocate_item_section(first_speaker, "docs_t4", "out")
end

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

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


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

Есть какой то способ отключить автоперезарядку?

И как отследить кол-во патронов, чтобы когда вышли патроны - выполнялась какая то функция (хочу сделать чтоб матерился, тип патроны кончились) )

  • Нравится 1

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


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

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

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


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

Есть варианты, откуда украсть способность котэ-баюна к усыплению? Хочу прикрутить на OGSM.

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


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

В общем, хочу сделать в моем моде (который на базе OGSM + FWR Lite Pack) чтобы в зоне постоянно была пасмурная, мрачная погода. 
Для этого в ванильном моде есть скрипт с настройкой, где от имени переменной (dark / defaukt) будет соотвественно мрачная или обычная погода.

В этой сборке - кто то поковырялся, и вырезал эту мрачную погоду (sect_dark) из инклудов в environment.ltx. Я поправил - и вот что выходит:
Изначально, при загрузке сохранения, погода такая же как и была - солнечная, без облаков, дождика, и прочей атрибутики. Стоить поспать, чтобы часы перевалили за 00:00 - как сразу становится та, мрачная погода. При сохранении, и загрузке сейва с "Мрачной" погодой, она автоматом ставиться на обычную, и так по кругу.

Что делать? Прилагаю ниже папку weathers и скрипт level_weather, где записана "что будет, если переменная будет..."

Большое пожалуйста, помогите :wacko2:

 

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

 

function WeatherManager:reset()
    --printf                    ("WeatherManager:WeatherManager():Reset()")
    -- Загрузить кондлист с погодой.
    local ini = ini_file("game.ltx")
    local weather
    if ogsm_options.weather == "dark" then
        weather = utils.cfg_get_string(ini, level.name(), "weathers2", db.actor, false, "", "dark")
    else 
        weather = utils.cfg_get_string(ini, level.name(), "weathers", db.actor, false, "", "default")
    end
    local postprocess = utils.cfg_get_string(ini, level.name(), "postprocess", db.actor, false, "")
    if postprocess ~= nil then
        --printf("LEVEL POSTPROCESS: level: [%s], postprocess: [%s]", level.name(), postprocess)
        level.add_pp_effector(postprocess, 999, true)    
    else
        --printf("LEVEL POSTPROCESS: level: [%s], postprocess: [none]", level.name())
        level.remove_pp_effector(999)
    end    

    if (level.name() == "l08_yantar" and has_alife_info("yan_controller_respawn_01")) or
       (level.name() == "l10_radar" and has_alife_info("bun_antenna_off")) or
       (level.name() == "l11_pripyat" and has_alife_info("freeplay")) or
       (level.name() == "l12_stancia" and has_alife_info("freeplay")) or
       (level.name() == "l12_stancia_2" and has_alife_info("freeplay")) then
        self.weather_list = xr_logic.parse_condlist(db.actor, level.name(), "weather", ogsm_options.weather)
    else
        self.weather_list = xr_logic.parse_condlist(db.actor, level.name(), "weather", weather)
    end    
    self:select_weather(true)
end

 


Гугл Диск папки weathers

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


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

@imcrazyhoudini поменял - не помогает.

Разобрался. Проблема оказалась в enviorment.ltx, создатель сборки (rnm) поменял все погоды на свою секцию.

Дёрнул из золотого шара функцию "усыпление" актора котами. cats() поставил на апдейт в бинд.сталкер. При загрузке - 

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

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...d\s.t.a.l.k.e.r. hum 1.1\gamedata\scripts\hum.script:588: attempt to index global 'self' (a nil value)


 

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

function cats()
local obj  = self.object
local id = get_clsid(obj)
if (id == clsid.cat_s and self.object:alive() and self.object:see(db.actor)) then
local posit = self.object:position()
    if posit:distance_to(db.actor:position()) < 10 then
            cat_sleep()
    end
end
end


 

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

function cat_sleep()
rnd = math.random(1, 10)
if rnd == 1 then 
    level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    level.add_pp_effector("total_recall.ppe", 2008, false)
    db.actor:stop_talk()
    db.actor.power =-0.05
end
if rnd == 2 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
end
if rnd == 3 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
    --soundtrack.actor_need_sleep()
end
end

 

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


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

@mole venomousне знаю, мне просто страшно было менять что то из исходника ... Сейчас попробуем.

@mole venomousкуда вставлять ссылку на cats() в bind.monster? После какой строчки, имею ввиду?

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


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

@mole venomous

В HUM.script накалякал:
 

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


function cats(self_obj)
local obj  = self.object
local id = get_clsid(obj)
if (id == clsid.cat_s and self.object:alive() and self.object:see(db.actor)) then
local posit = self.object:position()
    if posit:distance_to(db.actor:position()) < 10 then
            cat_sleep()
    end
end
end

function cat_sleep()
rnd = math.random(1, 10)
if rnd == 1 then 
    level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    level.add_pp_effector("total_recall.ppe", 2008, false)
    db.actor:stop_talk()
    db.actor.power =-0.05
end
if rnd == 2 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
end
if rnd == 3 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
    --soundtrack.actor_need_sleep()
end
end

 



  

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

 if self.object:alive() then
    local self_obj = self.object
       HUM.cats(self_obj)
        if self.object:is_talk_enabled() then
            self.object:set_tip_text("character_use")
        else
            self.object:set_tip_text("")
        end

Внизу ещё прочие апдейты, поэтому не достаёт энд, но там всё работает.


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

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


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

Решил. Просто впихнул функцию в bind_monster.

Есть вариант как отследить убийство актором?

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


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

Как можно отследить обшаривание трупов?

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

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


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

@mole venomousХочу сделать штучку, когда обшариваешь конкретно ТРУПЫ - гг говорит типо "подонок" и т.д. В xr_motivator, я походу слепой, но я не вижу зацепок - где можно впендюрить свою строчку кода..

И ещё вопрос.. Как отследить отношение мёртвого к ГГ?

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


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

@mole venomousвсё прикрутил, всё работает, но есть проблема - гг не говорит когда лутаем нейтральных сталкеров. 

 

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

 

function get_npc_relation(obj,target)
  local rel = obj:relation(target)
  local relation
  if rel==game_object.neutral then
    relation="neutral"
  elseif rel==game_object.friend then
    relation="friend"
  elseif rel==game_object.enemy then
    relation="enemy"
  else
    return false
  end
  return relation
end

function motivator_binder:use_callback(obj, who)

    if self.object:alive() then
        xr_use.notify_on_use(obj, who)
        if self.st.active_section then
            xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
        end
        
      
    else
    
        if self.treasure_processed == false then
        
            treasure_manager:get_treasure_manager():use(self.object)
            self.treasure_processed = true
        end
        if get_npc_relation(obj,db.actor)=="enemy" then  -- моё
HUM_marader.marader_enemy()
elseif get_npc_relation(obj,db.actor)=="friend" then
HUM_marader.marader_friend()
elseif get_npc_relation(obj,db.actor)=="netural" then
HUM_marader.marader_netural()
end
        -- Затычка на всякий случай, чтоб Волкодав при обыске давал инфо о наемниках
        if self.object:name() == "bar_freedom_attacker_commander" then
            db.actor:give_info_portion("encyclopedy_social_stalker-clans_killers")
        end
    end
end

 

 

Разобрался.

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


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

Как отследить ношение артефакта на поясе?

И..  Как называется сытость актора в луа? 
Выносливость - db.actor.power
Здоровье - db.actor.health
Сытость - db.actor.?????

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


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

Люди, помогите. Пропал сидорович. Просто взял, и пропал.

Начал новую игру - а сидрыча на стуле нет. Кто знает, чем может быть вызвано? Лог чистый абсолютно.

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


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

@shahvkit в том то и беда - игра модифицирована мною... Новую игру начинаю - а его реально нет!

ну вот выше добрый человек подсказал, что в бинд монстер надо лазить. Я там добавил просто одну функцию для псевдопса, пойду смотреть. Интересно, на что разработчики намекали, ставя апдейт сидора в монстрах? :biggrin:

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


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

Решил сделать коментарии гг когда он берет тухлую еду из инвентаря убитого.

 

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

 

function actor_binder:take_item_from_box(box, item)
local bad_food = { -- моя таблица
  "bad_conserva",
  "bad_kolbasa",
  "bad_mre",
  "bad_olives",
  "bad_oreshki",
  "bad_syrok",
  "bad_bread"
            }
local rnd = math.random(1, 10) -- моя переменная
if box:section() == "taynik_sect" and box:is_inv_box_empty() then
level.start_stop_menu(level.main_input_receiver(), true) 
alife():release(alife():object(box:id()), true)
alife():create("rukzak_taynik",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) -- спавним рюкзак в инвентарь
end
if item:section() = bad_food and rnd >= 3 then -- моё условие, когда гг будет говорить фразу типо "отвратительно"
HUM.bad_food_react()
end
if item:section() then
    local story_id = box:story_id()
    if story_id == nil then
        return
    end

    treasure_manager.take_item_from_box(box, story_id)
--[[    
    local respawner = se_respawn.get_respawner_by_parent(story_id)
    if respawner == nil then
        return
    end
    
    --' Необходимо уменьшить счетчик в респавнере
    respawner:remove_spawned(item:id())

    local smart_terrain = db.strn_by_respawn[respawner:name()]
    if smart_terrain == nil then
        return
    end

    local npc = smart_terrain.gulag:get_nearest_online_obj(db.actor:position())
    if npc ~= nil then
        xr_sound.set_sound_play(npc, "reac_box")
        xr_gulag.setGulagEnemy(smart_terrain:name() , db.actor)        
    end
]]
end

 

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

function bad_food_react()
   local snd_list = {
[[hum_badfood\starvation_2]], 
[[hum_badfood\starvation_3]],
[[hum_badfood\starvation_4]],
    }
    local sound = snd_list[math.random(#snd_list)]
    xr_sound.get_safe_sound_object(sound):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end



При загрузке - в логах постоянно выбивает:

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

! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_home':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil
! Unknown command:  ERROR:try_switch_to_another_section():_error_in_implementation_of_scheme_'mob_trader':_actor_is_nil

При этом вылета не происходит, но и неписи ведут себя.... Странно. + у них появляется в инвентаре после смерти фонарик. 

Помогите.
 

Разобрался.

 

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


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

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