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

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


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

Здрасьте.

 

Заметил, что иконки накопления и вывода радиации в параметрах артефактов одинаково рыжие. Хотел исправить, но уперся.

 

Ход расследования:

  1. В файле config\ui\af_params.xml, нашел секции для двух иконок: static_radiation_restore_speed и static_radiation_immunity. Методом тыка выяснил, что первая секция меняет обе иконки, а вторая не делает ничего. Для артефактов, дающих статическую защиту (Колобок, например), ссылки в секции immunity работают, но параметр радиации не статичен.
  2. В файле config\ui\ui_hud.xml также нашел описание двух иконок (ui_inv_icon_radiation_restore_speed и ui_inv_icon_radiation_immunity), из них вторая точно задействована в статах брони, так что ошибка не в имени ссылки.
  3. В файле config\misc\artefacts.ltx нашел переменную radiation_restore_speed, которая, в зависимости от знака, управляет и накоплением, и выводом радиации. Видимо, поэтому и ссылка на одну секцию управляет обеими иконками.

Как исправить/разделить иконки, не создавая новую переменную? Можно ли прямо в описание артефактов добавить модуль if … then для различения знака имеющейся переменной и подстановки ссылки на нужную иконку?

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

Привет всем. Скинули мне жажду, поставил на апдейт, вылетает с таким логом:

 


Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : .\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...of chernobylмод\gamedata\scripts\bind_stalker.script:250: attempt to index global 'zhazhda' (a nil value)

script Syntax Checker указал что стоит лишняя end в:
function popit()
--if has_alife_info("mgflash_start_info") then 
update()
sendtip("Жажда")
end
--end -- лишняя end


После этого вылетает с таким уже логом:


Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : .\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...of chernobylмод\gamedata\scripts\bind_stalker.script:250: attempt to call field 'popit' (a nil value)

script Syntax Checker уже ни на что не указывает. На этом моё скриптовое мастерство заканчивается)
Кто может помочь, вот ссылка на скрипт: https://yadi.sk/d/8pG4hMVc3ZeXZs

Изменено пользователем Houdini_one
  • Сочувствую 1
Ссылка на комментарий

@Houdini_one, ошибка в строке 13:

local power = db.actor:power()

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

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

Доброго времени суток, уважаемые модмейкеры. Нигде не могу найти инструкции, как правильно удалить спавн НПС в SoC. Кто может помочь? Заранее спасибо.

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

@Drevnerus, создать заново локацию без спавна с другим именем - это будет 100% гарантия от будущих вылетов.

Можно топорно вырезать спавн из алспавна, но есть вероятность напороться на оставленный рестриктор с логикой вызывающий спавн.

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

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

Почему многие моды страдают багами - заспаунился такой то нпс и вылет.  Напихают из разных модов скрипты, конфиги, аллспавн - вылет будет однозначно.

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

@Expropriator, в этом и проблема. Я уже пробовал удалять секции спавна Волка из all.spawn/alife_l01_escape и словил вылет с пустым логом. Жаль, что многие туториалы по модострою не содержат конкретики и направлены на уже разбирающихся модмейкеров. Таковых мало и как раз по моей теме нет.

 

Так, значит задаём другое имя. В game_graphs.ltx я создаю в секции [location_0] новый id моей будущей локации. В моём случае id = 22.

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

[location_0]
  000          = "..."
  001          = "эскейп"
  002          = "свалка"
  003          = "агропром"
  004          = "агропром-подземка"
  005          = "темная долина"
  006          = "лаборатория X-18"
  007          = "даркскейп"
  008          = "Бар"
  009          = "Росток"
  010           = "Янтарь"
  011           = "лаборатория X-16"
  012           = "Милитари"
  013           = "Мертвый город"
  014           = "Радар"
  015           = "Радар бункер"
  016           = "Припять"
  017           = "станция АЭС"
  022          = "Моя локация"

 

Потом иду в game_levels.ltx, ищу секцию [levels] и добавляю туда level22. В этот же файл добавляю подсекцию локации с именем level22.

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

[levels]
    level01
    level02
    level03
    level04
    level05
    level06
    level07
    level08
    level09
    level10
    level11
;    level12
    level13
    level14
    level15
    level16
    level17
;    level18
    level19
    level20
;    level21
    level22

    
[level01]
 name   = L01_Escape
 caption = "L01_Escape"
 offset  = 3000.0,    1000.0,    0.0
 id   = 01

[level02]
 name   = L02_Garbage
 caption = "L02_Garbage"
 offset  = 3000.0,    1000.0,    1000.0
 id = 02

[level03]
 name   = L03_Agroprom
 caption = "L03_Agroprom"
 offset  = 2000.0,    1000.0,    1000.0
 id   = 03

[level04]
 name   = l03u_agr_underground
 caption = "l03u_agr_underground"
 offset  = 2000.0,    800.0,    1000.0
 id   = 04

[level05]
 name   = l04_darkvalley
 caption = "l04_darkvalley"
 offset  = 4000.0,    1000.0,    1000.0
 id   = 05

[level06]
 name   = l04u_LabX18
 caption = "l04u_LabX18"
 offset  = 4000.0,    800.0,    1000.0
 id   = 06

[level07]
 name   = L05_Bar
 caption = "L05_Bar"
 offset  = 3000.0,    1000.0,    2000.0
 id   = 07

[level08]
 name   = L06_rostok
 caption = "L06_rostok"
 offset  = 2000.0,    1000.0,    2000.0
 id   = 08

[level09]
 name   = l08_yantar
 caption = "l08_yantar"
 offset  = 1000.0,  1000.0, 2000.0
 id   = 09

[level10]
 name   = l08u_brainlab
 caption = "l08u_brainlab"
 offset  = 1000.0,   800.0, 2000.0
 id   = 10

[level11]
 name   = L07_Military
 caption = "L07_Military"
 offset  = 3000.0,     1000.0, 3000.0
 id   = 11

[level12]
 name   = L09_Deadcity
 caption = "L09_Deadcity"
 offset  = 1000.0, 1000.0,    3000.0
 id   = 12

[level13]
 name   = l10_radar
 caption = "l10_radar"
 offset  = 3000.0, 1000.0,    4000.0
 id   = 13

[level14]
 name   = L11_Pripyat
 caption = "L11_Pripyat"
 offset  = 3000.0,     1000.0,   5000.0
 id   = 14

[level15]
 name   = L12_Stancia
 caption = "L12_Stancia"
 offset  = 2000.0, 1000.0, 8000.0
 id   = 15

[level16]
 name   = L12U_Sarcofag
 caption = "L12U_Sarcofag"
 offset  = 2000.0,  1200.0,    8000.0
 id   = 16

[level17]
 name   = l12u_control_monolith  
 caption = "l12u_control_monolith"
 offset  = 2000.0,   1400.0,    8000.0
 id   = 17

[level18]
 name   = k01_darkscape
 caption = "k01_darkscape"
 offset  = 4000.0,     1000.0,  0.0
 id   = 18

[level19]
 name   = L12_Stancia_2
 caption = "L12_Stancia_2"
 offset  = 2000.0, 1000.0, 9000.0
 id   = 19

[level20]
 name   = l10u_bunker
 caption = "l10u_bunker"
 offset  = 3000.0, 800.0,    4000.0
 id   = 20

[level21]
 name   = l23_final_battle
 caption = "l23_final_battle"
 offset  = 2000.0, 800.0, 9000.0
 id   = 21
 
 [level22]
 name   = L01_Escape
 caption = "Моя локация"
 offset  = 2000.0, 800.0, 9000.0
 id   = 22

 

В game_maps_single.ltx я ничего не трогаю, т.к. L01_Escape там уже есть. Я всё правильно сделал? Ничего не пропустил? Стоит ли переименовывать саму папку l01_Escape или можно оставить прежней?

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

@Drevnerus, какое-то изнасилование. Все эти действие приведут только к вылету, чем к результату. Куда проще уже помучаться и почистить all.spawn от ненужных секций, главное, чтобы номера по порядку шли в файле. Или еще потратить время и изучить SDK.

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

@Возрождённый, так номера секций должны быть по порядку? Возьму на заметку. Спасибо. Можете скинуть мне ссылку на уроки по SDK, по которым Вы изучали его сами?

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

@Drevnerus, это я зря тебя надоумил менять имя локации, (хотя это можно в далёком будущем, когда мы вымрем, сделать). Просто в переименовке локации заложено, то самое спасение, от 0,0001% случаев с вылетами. Если не шаришь, то лучше не переименовывать. Там дофига работы потребуется переворошить, вплоть до скриптов.

 

Чисть алспавн пока через https://yadi.sk/d/yOqoIyKasfMYX

 

Или посмотри этот мод, там алспавн почищен (почти), правда там одна новая локация подцеплена, может пригодится.

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

В стулкире вообще реально сделать так, чтобы НПС был стойким (или даже бессмертным) к одному типу повреждений, но уязвим к другим? Пытаюсь сделать защиту от укусов/царапин, но чтобы сохранялось повреждение от пуль, так при настройке дамага и иммунитетов НПС либо дохнет от всего сразу, либо сразу от всего становится крепким (а-ля 5 магазинов в голову чтобы его убить и т.д). Это вообще никак не отбалансировать, третьего не дано, я так понимаю?

Ссылка на комментарий
16 часов назад, dsh сказал:

Тебе наверное достаточно immunities_sect покрутить.

Что-то нет. Крутил я. Это не работает как у ГГ, т.е выставление какого-то хита в нули не дает совершенно никакой стойкости к этому хиту, дохнет как обычно (ну, возможно, на долю покрепче становится)

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

а у брони покрутить?

Так вот либо крепок от всего, либо дохнет от всего. Третье никак не могу выкрутить.

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

Такая ситуация: допустим, я вызвал сообщение актору такой вот функцией.

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

function podskaska_1()
    news_manager.send_tip(db.actor, "текст сообщения", 0, "default", 17000)
end

И хотелось бы прикрепить к этому сообщению озвучку. В этом собственно и вопрос - как вызвать какой либо звук/озвучку во время отсылания сообщения актору?

p.s. пользовался поиском, не помогло, возможно вопрос неправильно поставил или ещё что, но если ответ на мой вопрос уже есть, то попрошу тыкнуть в него моим носом))

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

Добавляешь следующей строкой функцию воспроизведения

function podskaska_1()
    news_manager.send_tip(db.actor, "текст сообщения", 0, "default", 17000)
    local snd_obj = xr_sound.get_safe_sound_object([[ambient\new\alarm_jantar_2]])
    snd_obj:play(db.actor, 0, sound_object.s2d)
end

 

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

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

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

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

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

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

Войти

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

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

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