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

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

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

Вопрос: если я хочу добавить новых персов на локацию, скажем, в 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, то тогда только удаление всего добавленного и после способ описанный выше.

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

Братцы, прошу помощи.

Не в тему конечно

 

Давно в Майе не работал, забыл даже гор клавиши. Мож подскажет кто: Открываю объект, удаляю ненужные полигоны, а экспортировать не выходит - вылетает. Такое ощущение, что я что-то очевидное забыл.

Сталкер - наше всё!

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

Добрый день.

Вопрос по указанию времени в скриптах:

Две недели показываются вот так - 60*60*24*14

Пять дней вот так - 24*5

Как правильно прописать например 20 минут ?

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

@shahvkit а это зависит от того, чего 200, если вспоминать анекдот. В первом примере видно, что в качестве единиц используются секунды. Во втором примере - часы. Так тебе 20 минут нужно в секундах или в часах?

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

...

42 минуты назад, dsh сказал:

Так тебе 20 минут нужно в секундах или в часах?

Без разницы. Лишь бы временной интервал был равен 20 игровым минутам.

 

p.s.

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

Это интервал времени между предыдущим и следующим циклическим заданием.

Как это прописано в скрипте:

    self.task_time = 60*60*24*14    -- (с) время выполнения всех заданий, 2 недели
    self.idle_time = 24*5            -- (игровые часы) время между выдачами задания повторно, 5 игровых дней

Мне нужно self.idle_time сделать равным 20 игровым минутам.

 

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

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