Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description : <no expression>
Arguments : LUA error: ...adow of chernobyl\gamedata\scripts\xr_wounded.script:466: attempt to index field '?' (a nil value)
Выставил костюму пулестойкость 100+, при попадании в меня у меня отнимается здоровье как будто пулестойкости вообще 0. Ставил и 99 и 100, ничего не помогает, в чём проблема? Патч 1.0004
С Н А Й П Е Р, возможно ты поставил защиту от пуль на иммунитет костюма, а не на его защиту.
Поменяй там строчки:
Код:
fire_wound_protection = 1.0
Код:
fire_wound_immunity = 0
________________________
Как сделать, чтобы при убийстве снорка у него была не одна нога, а две, у кабанов было 4 копыта и т.д.? Если просто это делается, то есть где-то отдельным модом это изменение?
Сообщение было успешно отредактировано VOva-VIP (26-06-2012 17:54 GMT3 часа, назад)
ЦитатаТам же в костре space_restrictor. А в его логике пишется на каком расстоянии от него сидят нпс.
Рестрикторы, что под кострами вообще пустые, т.е. логика у них напрочь отсутствует, а важным параметром в них является как раз restrictor_type.
ЦитатаОткрой файл _g.script , найди там 20 строчку и за комментируй её.
Действительно нерадивый совет.
ЦитатаЕсли в файле dialogs_локация прописаны не ссылки на файлы с текстом, а написан сам текст, и количество символов превышает допустимую норму, и если начать разговор с таким нпс'ом, которому прописан этот диалог, получаем вылет.
Ты правильно сказал, вот только вылет этот без лога, просто рабочий стол... С Н А Й П Е Р, если вылет ещё остался, закинь вот этот файлик: >>Click Me<<, в папку scripts, затем запусти игру и поймай ещё раз вылет, лог будет значительно информативнее, выложишь его сюда вместе с пятью предыдущими строками. atanatar888, у тебя пиратка? Возможно экзе файл не совпадает.
Как я понимаю, первая строка отвечает за цвет свечения арта а вторая за диаметр на которое это свечениевидно. Так вот, с диаметром всё понятно, а вот с цветом я засел. Как он считается? На систему RGB не очень то похоже.
добавлено спустя 2 минут
ColR_iT дело в том что _g скрипт у меня уже правленный (из мода) и заменить его это значит однозначный вылет за недостатком нужных функций.
Сообщение было успешно отредактировано С Н А Й П Е Р (26-06-2012 21:23 GMT3 часа, назад)
--/------------------------------------------------------------------
--/ Functions for Print-Log by Artos
--/------------------------------------------------------------------
--/ конвертер вывода строки лога
function fFormatToString(fmt,...)
--/ локальная функция: перевод аргумента в стринг
local to_str = function(val,typ)
if typ == 'string' then
return val --/>
elseif typ == 'number' then
return tostring(val) --/>
elseif typ == 'boolean' then
return tostring(val) --/>
elseif typ == 'table' or typ == 'userdata' then
if tonumber(val.x) and tonumber(val.y) and tonumber(val.z) then
if typ == 'table' then
return string.format('tbl{x=%.3f:y=%.3f:z=%.3f}',val.x,val.y,val.z) --/>
end
return string.format('vec(x=%.3f:y=%.3f:z=%.3f)',val.x,val.y,val.z) --/>
end
end
return "<"..typ..">" --/>
end
--/ основное тело функции: парсинг исходной строки
if type(fmt) == 'string' then
if fmt:match('%\%[s|d]') then --/ есть патерн(ы)
if next({...}) then --/ есть аргумент(ы)?
local arg,val,typ,i = {...},nil,nil,nil
for i=1,#arg do
val = arg --/ значение текущего аргумента
typ = type(val) --/ тип текущего аргумента
if typ == 'string' then
fmt = fmt:gsub('%\%s',val,1)
elseif typ == 'number' then
if fmt:match('%\%d') then
fmt = fmt:gsub('%\%d',val,1)
else
fmt = fmt:gsub('%\%s',val,1)
end
else
fmt = fmt:gsub('%\%s',to_str(val,typ),1)
end
end
end
fmt = fmt:gsub('%\%[s|d]',"<NOT_arg!>") --/ заглушка от отсутствия аргументов
end
else
fmt = to_str(fmt,type(fmt))
end
--/ с заменой обычных пробелов (sym_space='\032') на печатные ('\160')
return fmt:gsub('%s','\160') --/>
end
--/------------------------------------------------------------------
--/ printf (функция вывода информации в лог игры)
--/------------------------------------------------------------------
local console = get_console()
function printf(fmt, ...)
if not console then console = get_console() end
console:execute("*INFO:"..string.sub(fFormatToString(fmt,...),1,250)) --/ +префикс строки лога (STCS|SCoP: "load ~:")
--console:execute("flush") --/ команда записи буфера лога в файл (в игре можно закомментиировать!)
end
--/------------------------------------------------------------------
--/ Abort (функция принудительного прерывания игры)
--/------------------------------------------------------------------
function abort(fmt, ...)
printf("ВНИМАНИЕ! Ошибка! Информация по ошибке в строках ниже !")
printf(string.gsub("ERROR!: "..string.sub(fFormatToString(fmt,...),1,250),'%s','\160'))
assert(false,"ВНИМАНИЕ! Игра прервана! Информация в строках выше.") --/ прерываем с выводом строки на консоль
exit() --/> прерываем игру при фатальных ошибках
end
--/------------------------------------------------------------------
Сообщение было успешно отредактировано voven (26-06-2012 21:33 GMT3 часа, назад)
voven ну в общем-то да. Но это для меня уже второстепенный вопрос, теперь хочу добавить артам свечение, а в какой системе там цвета выбираются я не знаю.
добавлено спустя 3 минут
Нашёл тутор по свечению артов
ткрываешь artefacts.ltx из S.T.A.L.K.E.R\gamedata\config\misc
Ищешь артефакт и меняешь параметры (если нет, добавляешь):
;подсветка арта
lights_enabled = true(false) (включено(отключено))
trail_light_color = х, х, х (R,G,B.)
trail_light_range = х (радиус свечения)
но по прежнему не понимаю как расчитываются цвета даже в RGB ведь в РГБ не десятичными дробями цвета записываются а в виде скажем 00FF66. Может игра их как-то переконвертирует в нормальный RGB?
Сообщение было успешно отредактировано С Н А Й П Е Р (26-06-2012 21:39 GMT3 часа, назад)
С Н А Й П Е Р, если проблема с вылетом станет основной, то обращайся в ЛС - помогу.
Что касается цвета, так это действительно RGB, только с пересчётом от ноля до единицы.
Например.
Возьмём вот такой цвет:
В привычной системе, это 255, 106, 0.
В игре 0 это и есть 0, а 1 - это 255. А чтобы найти соответствие зелёному, нужно составить пропорцию:
106 = х
255 = 1
х = 106/255 = 0.42
В итоге готовый результат для цвета под спойлером таков: 1, 0.42, 0.
Иногда, в конце может стоять ещё одна цифра, например, в конфиге фонарика, это прозрачность. Arist, извини, не очень понял вопрос.
ID будем задавать прямо в функции спавна. Пишем в своем скрипте:
Код:
function npc_spawn() -- имя функции
local obj = alife():create("профильное_имя_нпс",vector():set(x,y,z),level_vertex,game_vertex) -- координаты
local tbl = amk.read_stalker_params(obj)
tbl.sid = 97120 -- ID - любое число, но оно не должно повторятся с уже существующими (см. файл: game_story_ids в конфигах)
amk.write_stalker_params(tbl, obj)
end
Благодаря этому способу, можно например поставить метку на заспавненного скриптом НПС... Внимание: после спавна НПС нужно сделать сейв\лоад, чтобы ID заработал [либо перевести НПС оффлайн и обратно].
Автор: Shadows & Co
2. А вот здесь я тебе скажу, что это невозможно, как бы это прискорбно не звучало.
Как бы тебе объяснить, используя свой не богатый арсенал познаний в этой области...
Вся загвоздка в том, что все манипуляции net_packet с объектом необходимо производить когда он в оффлайне, поскольку онлайновые объекты постоянно обновляются перезаписывая полностью серверную часть. А теперь риторический вопрос: ты когда нибудь видел переход актора в оффлайн? Вот тут то и оно...
В примере, что ты привёл, тебя, да собственно чего лукавить - меня тоже, сбила с толку переменная actor_id, как по мне - крайне неудачный выбор имени.
Параметр obj, который передаётся в функцию setup_name, по всей видимости какой-либо объект класса game_object, учитывая манипуляции, предположу, что это НПС, но никак не актор.
Что касается вопроса про то, что нужно ли знать какой либо язык программирования, я отвечу - да, причём это касается не только net_packetов, а и всех скриптов в целом, ведь они по сути пишутся на Lua, а это как ни крути язык программирования.
Я мог бы углубиться и пофилософствовать на эту тему, затронуть определение ООП и тому подобного, но это может сбить с толку не одного человека здесь, посему делать я этого не буду, да и боюсь, что перейдёт это всё в банальный оффтоп.
Цитата#voven : atanatar888 Я привёл пример вылета.
добавлено спустя 1 минуту
В каком месте у тебя вылетает?
Может вылететь в абсолютно любом месте, не только при обращении к какому либо персонажу, хотя и так тоже, но и при движении, к примеру.... Вылетает и система выдаёт сообщение: XR_3DA.exe не работает, виндовс ище способ устранить проблему. Затем - способ не найден и предложение закрыть игру. Винд регулярно обновляется через инет, в том числе графические дрова... Сама игра - пиратка, конечно :)
Mehanik Yar За инвентарь убиенных НПС отвечают файлы death_items_by_levels.ltx, death_items_by_communities.ltx, death_items_count.ltx, первый - зависимость от локации, второй - вероятность спавна(если 1 - то заспавнится с вероятностью 100%), третий - количество предметов. Там есть секции группировок и соответственно того, что будет у НПС в инвентаре.
Путь к файлам: gamedata\config\misc
Ребята, вот вопрос как удалить у сидора правельно диалог "туториал" (начальный диалог в начале игры)
чтобы сразу в начале игры у нас был диалог с "Мне нужна работа" и тж и тп...
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.