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

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


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

@Hind @Hind по поршню (который выдаётся после его смерти) спавнить в инвентарь рандомно вещицу.

 

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

Подскажите, почему не засчитывается урон у объекта:
 

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

[logic]
active = ph_idle

[ph_idle]
hit_on_bone = 1|{+yan_ryaboy_12_start =hit_by_actor =hit_by_rpg} nil %+yan_hit_vetryak1%

 

function hit_by_rpg()
    local active_item = db.actor:active_item()    
        return active_item and active_item:section() == "wpn_rpg7"
end

 

Хотя не знаю, уже все кости которые есть вписал (но я не знаю их нумерации, их шесть, по логике значит 1-6, как смотреть не знаю):
 

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

[logic]
active = ph_idle

 

[ph_idle]
hit_on_bone = 1|%+yan_hit_vetryak4%|2|%+yan_hit_vetryak4%|3|%+yan_hit_vetryak4%|4|%+yan_hit_vetryak4%|5|%+yan_hit_vetryak4%|6|%+yan_hit_vetryak4%

 

Впрочем даже логика с орига не катит:
 

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

[logic]
active = ph_idle
on_hit = hit
 

[ph_idle]
on_info = {+yan_hit_vetryak2} nil

 

[hit]
on_info = %+yan_hit_vetryak2%

 

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

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

@imcrazyhoudini 

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

function generic_physics_binder:hit_callback(obj, amount, local_direction, who, bone_index)
    printf("_bp: generic_physics_binder:hit_callback: obj='%s'", obj:name())
    if self.st.ph_on_hit then
        xr_logic.issue_event(self.object, self.st.ph_on_hit, "hit_callback", obj, amount, local_direction, who, bone_index)
    end
    if self.st.active_section then
        xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "hit_callback", obj, amount, local_direction, who, bone_index)
    end
    if obj:story_id() == story_ids.yan_vetryak1_orig then
        db.actor:give_info_portion("yan_hit_vetryak1")
    end

end


Даже такая тема не катит. Есть ещё варианты как хит получить?

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

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

@Norman Eisenherz , сама идея сомнительная. Зачем это нужно вообще? 

Если только так предусмотрено в моде.  

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

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

Вопрос: если я хочу добавить новых персов на локацию, скажем, в character_desc_bar добавлю двух васянов. Будут ли они появлятся на локации, с учетом того что нумерация будет последовательна (как и их идшник)

То есть..
bar_stalker_1 - спавнится на локации по дефолту

bar_stalker_2 - спавнится на локации по дефолту

bar_stalker_3 - тот самый васян №1, будет ли он спавнится как bar_stalker_1/2?

bar_stalker_4 - тот самый васян №2, будет ли он спавнится как bar_stalker_1/2?

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

@Hind Если я правильно понял (bar_stalker_1 - это что название или класс? если название, то нет. Название может быть любое, а вот класс должен быть один. Либо прописываешь новый класс в спам.

  • Спасибо 1
Ссылка на комментарий
12 часов назад, imcrazyhoudini сказал:

Есть ещё варианты как хит получить?

У класса в базовой секции physic_object отсутствует метод получения хита, поэтому отключаемые рупоры / радио и т.д по выстрелу, ссылаются на секцию physic_destroyable_object - там on_hit работает.

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

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

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

 

function guitar_songs()
local rnd = math.random(1,6)
local song11 = [[hum_guitar/guitar_11]]
local song13 = [[hum_guitar/guitar_13]]
local song17 = [[hum_guitar/guitar_17]]
local song20 = [[hum_guitar/guitar_20]]
local song19 = [[hum_guitar/guitar_19]]
local songzh = [[hum_guitar/jekan_guitar_play_1]]

if rnd = 1 then 
    xr_sound.get_safe_sound_object(song11):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_11()
elseif rnd = 2 then
xr_sound.get_safe_sound_object(song13):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_13()
elseif rnd = 3 then
xr_sound.get_safe_sound_object(song17):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_17()
elseif rnd = 4 then
xr_sound.get_safe_sound_object(song19):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_19()
elseif rnd = 5 then
xr_sound.get_safe_sound_object(song20):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_20()
elseif rnd = 6 then
xr_sound.get_safe_sound_object(songzh):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_zh()
end
end

   function song11()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_11()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 71
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song11)
   end
   
      function song13()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_13()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 49
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song13)
   end
   
      function song19()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_19()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 27
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song19)
   end
   
      function song17()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_17()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 22
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song17)
   end
   
      function song20()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_20()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 33
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song20)
   end
   
         function songzh()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_zh()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 16
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,songzh)
   end

 

 

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

Лог вылета: (HUM_guitar скрипт в котором все написано)

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

 

[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:122: attempt to index global 'HUM_guitar' (a nil value)
 

stack trace:

 

 

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

Опять неполадка...

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

 

 

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

 

function guitar_songs()
local rnd = math.random(1,6)
local song11 = [[hum_guitar/guitar_11]]
local song13 = [[hum_guitar/guitar_13]]
local song17 = [[hum_guitar/guitar_17]]
local song20 = [[hum_guitar/guitar_20]]
local song19 = [[hum_guitar/guitar_19]]
local songzh = [[hum_guitar/jekan_guitar_play_1]]
local sound = [[hum_guitar/jekan_guitar_play_1]]

if rnd == 1 then 
    xr_sound.get_safe_sound_object([[hum_guitar/guitar_11]]):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_11()
elseif rnd == 2 then
xr_sound.get_safe_sound_object([[hum_guitar/guitar_13]]):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_13()
elseif rnd == 3 then
xr_sound.get_safe_sound_object([[hum_guitar/guitar_17]]):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_17()
elseif rnd == 4 then
xr_sound.get_safe_sound_object([[hum_guitar/guitar_19]]):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_19()
elseif rnd == 5 then
xr_sound.get_safe_sound_object([[hum_guitar/guitar_20]]):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_20()
elseif rnd == 6 then
xr_sound.get_safe_sound_object([[hum_guitar/jekan_guitar_play_1]]):play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    start_timer_zh()
end
end

   function song11()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_11()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 71000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song11)
   end
   
      function song13()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_13()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 49000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song13)
   end
   
      function song19()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_19()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 27000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song19)
   end
   
      function song17()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_17()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 22000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song17)
   end
   
      function song20()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_20()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 33000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song20)
   end
   
         function songzh()
   alife():create("usable_guitar", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
 
   function start_timer_zh()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 16000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,songzh)
   end
   

 


   

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

Ссылка на комментарий
2 часа назад, Hind сказал:

   function start_timer_19()
      -- взводим таймер на 10 секунд
      local iTimer = time_global() + 27000
      -- функция ожидания истечения таймера
      local function check_timer()
         return time_global() > iTimer
      end
 
      -- ставим её на апдейт
      level.add_call(check_timer,song19)
   end

 

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

@Hind в xr_effects.script есть похожая функция, hit_by_actor, может что-то похожее найдёшь.

 

Как физический разрушаемый объект сделать неуязвивым до определённого времени/разрушаемым только одним оружием?

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

Ссылка на комментарий
9 минут назад, CYBERDEMON сказал:

что делать 

Если добавленное оружие не прописано нигде кроме mp_ranks.ltx и weapons.ltx, то можно довольно быстро найти нужный ствол.

1. Временно поставь mp_ranks.ltx который был ДО добавления нового оружия.

2. В файле weapons.ltx закоментируй все инклуды (#include "w_....ltx") добавленного оружия.

3. По одному снимай блокировку с инклудов и начинай новую игру.

Если добавленное оружие уже прописано в скриптах, и роздано нпс в файлах character_desc_....xml, то тогда только удаление всего добавленного и после способ описанный выше.

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

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

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

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

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

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

Войти

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

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

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