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

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

@CRAZY_STALKER666dvl_killer_sold_2_w_l? У тебя только dvl_killer_sold_2_w_w и dvl_killer_sold_2_l_l.

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

можно как-то вывести значение fov'a в виде текста в настройках? Я прикрутил туда для него настройку,хотелось бы видеть текущее значение когда двигаешь ползунок.

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

Всем здравствуйте! Хотелось бы поинтересоваться, как сделать скрипт книги? Например:  у меня есть предмет, я его использую, срабатывает скрипт, передо мной вылезает окно с сообщением, чтобы его закрыть нужно нажать отдельную кнопку тоже в этом окне. Я знаю, что это сложно, я видел подобные скрипты, но я не знал, как их использовать и там, скорее всего не было кнопки и многоразового использования читабельного предмета. Очень хочется заполучить данный скрипт. Спасибо большое

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

@Gray Hawk, на форуме есть мод, подобие просмотра книги или фотографии( на деле текстурки ). Поискать надо, название не помню.

 

Народ! 
Помогите найти ошибку.
Вот сам код, вызываеться из bind_stalker.update()

 

local s_obj = {
"[[ep\military\ml1]]",
"[[ep\military\ml2]]",
"[[ep\military\ml3]]"
}
local snd_flag = false

 

function mil_sound_update()

local level_gg = level.name()
if snd_flag == false and level_gg == "l07_military" then
local s_obj=s_obj[math.random(table.getn(s_obj))]
local snd_obj = xr_sound.get_safe_sound_object(s_obj)
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
snd_flag = true
end
end

 

Лог вылета - 

 

[error]Line : 73
[error]Description :
[error]Arguments : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:324: attempt to call field 'mil_sound_update' (a nil value)

 

 

Изначально грешил на таблицу(мол получение звука неверно), но и без неё вылетает...

Не соответствует правилам.

Ссылка на комментарий
Изначально грешил на таблицу(мол получение звука неверно), но и без неё вылетает...

Я бы сделал так:

 
local s_obj = {
[[ep\military\ml1]],
[[ep\military\ml2]],
[[ep\military\ml3]],
}

local snd_flag = false

function mil_sound_update()
local s_obj=s_obj[ math.random(#s_obj) ]
local snd_obj = sound_object(s_obj)
local level_gg = level.name()
    if snd_flag == false and level_gg == "l07_military" then
        snd_flag = true
    end
	if snd_flag then
           snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
	end
end
Изменено пользователем Romann
  • Спасибо 1
 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

 

 

ocal s_obj = {"[[ep\military\ml1]]","[[ep\military\ml2]]","[[ep\military\ml3]]"}
Длинные строки в Lua, на сколько мне помнится, имеют несколько другой синтаксис. Может стоит попробовать написать так:
ocal s_obj = {[[ep\military\ml1]],[[ep\military\ml2]],[[ep\military\ml3]]}
  • Согласен 1
Ссылка на комментарий

"Изначально грешил на таблицу"

 

и таки да. Либо крестик снять, либо трусы надеть.

"ep\\military\\ml1" или [[ep\military\ml1]] - что-нибудь одно.

Неплохо еще проверять, что объект получен, прежде чем пытаться с ним что-нибудь делать.

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

Хотелось бы поинтересоваться, как сделать скрипт книги?

Можно посмотреть огсе, там есть. А так все просто:

1) В колбеке на использование предмета ловим нашу книгу, тут же спавним её и открываем страницу.

2) Страница - gui окно с фоном, на котором текст, а также кнопки смены страниц. Скорее всего шрифт придется добавлять, честно скажу - не в курсе делается ли это без ковыряния движка. Ну а если все страницы делать текстурами - слишком большой вес будет. Конечно, если речь не идет об одной-двух страницах)

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

@Romann@Serge!@Dennis_Chikin, никто из вас не прав, в данной проблеме...

Упрастил функцию( нет, ну а что? Никто не запрещает каждую итерацию цикла делать что захочу...)

 

 

function mil_sound_update()

local level_gg = level.name()
if level_gg == "l07_military" then
local snd_obj = xr_sound.get_safe_sound_object([[ep\hurt]])
        snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end
end

 

Вылет...

WAT!&!

Перенес в другой скрипт, функцию не менял - НЕТ вылета...

Все файлы проверяю постоянно чекером ошибок синтаксиса... но видимо он не все знает...

У кого какие идеи?

Не соответствует правилам.

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

 

 

Проблема была в самом файле скрипта... И не понятно, какого она вообще рода...

Ну это уже надо смотреть сам скрипт, мало ли, может те же переменные пересекаются в скрипте - названия надо давать оригинальные.

А вообще у тебя в коде с таблицей получается две разные переменные с одинаковым названием:

local s_obj = {
...
}

и

local s_obj=s_obj[ math.random(#s_obj) ]

Надо так:

 
local snd_tbl = {
[[ep\military\ml1]],
[[ep\military\ml2]],
[[ep\military\ml3]],
}

local snd_flag = false

function mil_sound_update()
local s_obj=snd_tbl[ math.random(#snd_tbl) ]
local snd_obj = sound_object(s_obj)
local level_gg = level.name()
    if snd_flag == false and level_gg == "l07_military" then
           snd_flag = true
    end
	if snd_flag then
           snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
	end
end
 
Изменено пользователем Romann
  • Спасибо 1
 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

@Romann, даже ваш старый вариант прекрасно работает!

Проблема была в самом файле скрипта... И не понятно, какого она вообще рода...

Не соответствует правилам.

Ссылка на комментарий
Romann, Serge!, Dennis_Chikin, никто из вас не прав, в данной проблеме...

Да уж нет "уважаемый". В данной проблеме не правы Вы и только Вы. Указанный вам факт не являлся единственным ляпом представленного кода. Вот, пожалуйста, второй.



local s_obj=s_obj[ math.random(#s_obj) ]

Если Вы немного освежите в памяти описание Lua (или изучите его), то узнаете, что после описания local s_obj = ... доступ к разделу памяти таблицы звуков s_obj полностью будет потерян и все потуги в последующими буковками - просто ничто. А получилось в конечном примере потому, что там было изменено само имя таблицы звуков, но если даже и в ней написать длинные строки, как было написано раньше - гарантировано будет вылет.

 

Таки кто не прав?

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

local s_obj=s_obj[ math.random(#s_obj) ]

 

Вполне законная операция. Хотя без предупреждения так делать не стоит, если не хотим затруднить кому-нибудь вносить свои изменения, и вообще разбираться, как наш код работает.

 

P.S. Ну не правы - так не правы. Успехов.

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

 

 

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

@Dennis_Chikin@Serge!, я не про то....

 

Вот смотрите.

Если я вызову из того скрипта, пусть даже это:

 

get_console():execute("1")

 

или это

 

if db.actor:has_info then

give_info бла бла бла

 

Или любую другую функцию - получу вылет... Вот я к чему...

 

А звуки прекрасно работают, за это отдельное спасибо!

Не соответствует правилам.

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

Коллеги, вы все не обратили внимание на один момент. Оставив в стороне то, как написана сама функция, видим это:

 

 

[error]Arguments : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:324: attempt to call field 'mil_sound_update' (a nil value)

 

 

Перенес в другой скрипт, функцию не менял - НЕТ вылета...

ИМХО, ошибка где-то в другом месте того модуля, где функция располагалась первоначально. И несмотря на то, что чекер ошибок не даёт, что-то мешает движку прочесть все элементы этого модуля.

UPD: Если только функция сначала была не в bind_stalker.script.

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

Я, мб, чего-то не понял об оконных классах?

 level.start_stop_menu(this.gui_mechanic_wnd(),true)
 mechanic_info["npc_name"] = first_speaker:character_name()
 mechanic_info["npc_icon"] = ini:r_string(first_speaker:profile_name().."_cfg","texture")
 news_manager.send_tip(actor, tostring(mechanic_info["npc_name"])) 

Здесь сообщение выводится как надо.
Но когда мне нужно воспользоваться этими данными, а именно внутри кода скриптового окна уже. Мне приходит в сообщениях "nil".

news_manager.send_tip(actor, tostring(mechanic_info["npc_name"])) 
Ссылка на комментарий

@Kondr48, вопрос совершенно некорректный. Никто по этим обрывкам не сможет понять что ты делаешь, можно только гадать. Моя кофейная гуща говорит о том, что твоя таблица к моменту вызова типса уже вне зоны видимости, если вообще не уничтожена. Объяви ее в самом начале модуля вот так:

local mechanic_info = {}

Если вызов типса в этом же модуле, и вот так:

mechanic_info = {}

Если в ином, но в таком случае вызывать ее нужно module.mechanic_info, почему? Недавно я как-раз рассказывал про видимость переменных, рекомендую прочесть, там же я давал ссылки на главы по окружению из официального мануала.

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

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

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

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

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

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

Войти

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

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

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