Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
CON 24 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 Вампир35, Да,спавнится постоянно,надо чтобы предмет удалялся из инвентаря Ссылка на комментарий
Artos 99 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 (изменено) CON, изъясняйся в конце концов не на "своем жаргоне", а на общепонятном языке ... если конечно хочешь получать ответы а не отмазки! Упомянутую "схему" не видел и нет особого желания. в худы вещей скрипт спавнит ...В худ (HUD) ничего не спавнится. "ПОстоянно" спавнит говоришь - ну-ну очень понятно ... CON: как бы мне сделать - ключевая фраза! Если именно тебе самому сделать - выше написал как определить "пропажу" детектора из слота и как удалять ... и если что непонятно - спрашивай/уточняй (на нормальном языке!). Если же ждешь, чтобы "дядя" тебе сделал - ... жди, может кто за тебя и сделает. (Навсякий случай напомню: мы в топике "Школа ...", а не "Стол заказов") Изменено 16 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Boofer 0 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 (изменено) Какое нужно сделать условие в скрипте, чтобы при выдавании несуществующего инфопоршня, игра не вылетала, а появлялось сообщение о том что он, инфопоршень, не существует? В следующий раз выбирай соответствующую тему. ColR_iT Изменено 16 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
ШиЗ 133 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 (изменено) Появился вопрос...покопался, поставил зомби на карту ( ну как поставил...вместо кабана). Так вот...он есть на месте, все нормально, но как только я ему с дробовика зарядил в голову...он умер, конечно же, но и я вылетел на рабочий стол с логом: [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) Такой же вылет получал при добавлении БМ16 полного от Псевдыча. Но там разобрался, полностью переписал конфиг, а тут что...Закомментирование строки не помогает, вылет происходит также, но уже ссылается на другой скрипт. А поднять глаза и прочитать это: #8105 - религия не позволяет? --/Artos Изменено 16 Февраля 2012 пользователем Artos Ссылка на комментарий
Artos 99 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 Boofer, '[ как бы было хорошо, чтобы из скриптов по условию командовать чтобы игра не вылетала ... а продолжала бы не взирая ни на какие ошибки/чудачества модмейкера ... ;-) Тут не на вылет условие нужно, а на наличие в игре (в конфигах) выдаваемого инфопоршня, но ... в такого нет и в ТЧ попытка выдачи несуществующего заканчивается фатально. Т.о. или выдавай заведомо существующие инфопоршни или пиши свой xml-парсер и проверяй в конфигах наличие тго, который собираешься выдавать (хотя ...судя по твоим вопросам - пока тебе это не по плечу). "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Boofer 0 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 (изменено) Artos, самому не по плечу. Но если Вы поможете.)) Принцип я понял. Нужно прописать xml-парсер с инфопоршенями, где скрипт будет искать нужный поршень, и если не найдёт, то с помощью else можно вместо вылета поставить появление сообщения, но вот как этот парсер прописать... "Парсер" от английского слова parse. Переведи слово и ты поймёшь для чего это предназначается. ColR_iT Изменено 16 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
smeh 1 Опубликовано 16 Февраля 2012 Поделиться Опубликовано 16 Февраля 2012 Artos- Внял Вашему совету и перелопатил тему, все, что я нашел так то, что Ваш пост где пишется ( в _g.script поменять стандартный аборт на то то и то то ). Если я на правильном пути, это хорошо, а если нет, то ткните меня носом я даже не обижусь. Так как если чего-то не знаешь или не умеешь ни когда не поздно научиться ( на то она и Школа ). А вот LuaChecker-0.3 Может я не правильно пользуюсь? ( Кто и где эту прогу выложил не помню ). Чекер Ссылка на комментарий
Капрал Хикс 515 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 smeh, пользуйся другим чекером - script Syntax Checker - есть на stalkerin.gameru.net. Не виснет на больших скриптах и может скрипты проверять группой. Ссылка на комментарий
Nic101 0 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) На вопрос "как увеличить коичество трупов в игре" мне сказали что это невозможно... Может кому пригодится но это делается так: 1)Отключение уборщка трупов. Если у вас машина мощная то для реализма будет самое то... Горы трупов по всей Зоне... Путь: папка "gamedata"-> "scripts"-> "xr_motivator.SCRIPT": Строка: release_body_manager.get_release_body_manager():moving_dead_body(self.object) --' Distemper 11.02.2008 Её надо закомментировать, чтобы выглядело так: --release_body_manager.get_release_body_manager():moving_dead_body(self.object) --' Distemper 11.02.2008 Теперь трупы не исчезают совсем, даже после перезагрузки игры... 2)Настройка уборщика трупов. Способ: Путь: папка-"gamedata">папка-"skripts">файл-"release_body_manager.SKRIPT" Строка: self.body_max_count = 10 -- количество тел которое одновременно может находится в игре Меняем число на более весомое...и вуаля: self.body_max_count = 60 -- количество тел которое одновременно может находится в игре Теперь хабар никуда от вас не денется! И игра стала НАМНОГО привлекательнее... Изменено 17 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
ColR_iT 171 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) Nic101 Давай начнём с того, что всё же нужно соблюдать элементарные знания правописания, а также будем использовать теги для отделения кода от текста. А теперь по твоему посту: Файла release_body_manager.script в игре просто не существует, не по тому, что ты неправильно написал расширение файла, а потому, что разработчики просто такового не создавали. Поэтому и комментировать в файле xr_motivator.script, будет нечего, и открывать собственно также нечего. Всё бы ничего, но ты не ошибся, т.е. решение действительно рабочее. Но вот есть одна большая проблема: ты не в изначальном вопросе, не в посте выше не указал версию игры, хотя пишешь ты в тему по ковырянию ТЧ (Тень Чернобыля), а не в тему по Зову Припяти, где твой ответ будет актуальным и то с некоторыми оговорками. Итого: 1. Правильно выбирай тему; 2. Правильно задавай вопрос; 3. Нашёл решение - поделись, а не бросайся полученными знаниями; 4. И пиши, пожалуйста, грамотнее. Спасибо за понимание. Изменено 17 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
ШиЗ 133 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 Artos, а я атеист Ну глянул я строки над фатал еррором - жалуется на звуки кабана, не прогнанные через сдк. И вылет с зомби точно не из-за этого. Ссылка на комментарий
Artos 99 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) ШиЗ, атеизм и тугодумие не взаимоисключающие понятия .... Я не "кашпировский" и ткнуть в нужную строку твоего лога не могу по причине отсутствия такового твоего лога), но если в логе строка типа: [error]Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:XXX: bad argument #2 to 'format' (string expected, got no value) - это однозначно говорит о том, что из некоего скрипта была вызвана функция принудительного прерывания игры _g.abort(...), в которую "виновный" скрипт передал (как правило) свое сообщение. Это сообщение должно (если не закомментированы строки в abort) быть выведено в консоль перед тем, как сама abort выполнит недопустимую операцию по форматированию. Ну а если ковырялкин в кодах так и не хочет понять что же пишет ему лог - то вероятно нет смысла ему вообще смотреть в этот лог и продолжать пользоваться "методом тыка" ... авось пронесет. smeh, вот набор функций для включения (замены существующих) в _g.script которые позволяют и выводить любые свои сообщения в лог и при аборте дают информацию: --/------------------------------------------------------------------ --/ Functions for Print-Log --/------------------------------------------------------------------ --/ конвертер вывода строки лога 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[i] --/ значение текущего аргумента 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(this.fFormatToString(fmt,...),1,250)) --/ +префикс строки лога (STCS|SCoP: "load ~:") console:execute("flush") --/ команда записи буфера лога в файл (в игре можно закомментиировать!) end --/------------------------------------------------------------------ --/ Abort (функция принудительного прерывания игры) --/------------------------------------------------------------------ function abort(fmt, ...) printf("ВНИМАНИЕ! Ошибка! Информация по ошибке в строках ниже !") printf(string.gsub("ERROR!: "..string.sub(this.fFormatToString(fmt,...),1,250),'%s','\160')) assert(false,"ВНИМАНИЕ! Игра прервана! Информация в строках выше.") --/ прерываем с выводом строки на консоль exit() --/> прерываем игру при фатальных ошибках end --/------------------------------------------------------------------ Если использовать с умом, то не нужно будет гадать о причинах прерывания игры ... Изменено 17 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Nic101 0 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) ColR_iT 1. Ошибся разделом извиняюсь! Перелопатил кучу форумов, и посему крайне невнимательно "кидал" комментарии, везде либо просто игнорируют либо пишут "такого сделать невозможно" 2. Данное решение заработало и на ТЧ 3. Ввеси в гугл названия файлов выдаст сотни вариантов однако можно просто прописать в пустом блокноте эти строчки у меня заработало так... Хотел написать для всех, потому как долго искал и никто о таком не знал... Изменено 17 Февраля 2012 пользователем Nic101 Ссылка на комментарий
Artos 99 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) Nic101, не нужно флудить, бесполезная и что более важно, ошибочная информация - никому не нужна! Помимо того, что в ТЧ без непростой для неопытных модмейкеров адаптации скрипта release_body_manager в игру (потребуется даже в биндер актора влезать), в модах наоборот работаю скрипты-чистильщики трупов и твои потуги/советы по "засорению" локаций в общем то бессмысленны. И не нужно с упорством твердить, что "это заработало на ТЧ". Не может на ТЧ подобное заработать, что о чем тебе уже разъяснил ColR_iT. Если ты о некоем моде, куда внедрили этот скрипт, то ... предполагаю что читающие этот топик врядли о нем ведают и не обобщай это на ТЧ. И, как уже дал ремарку на другом формуме - хочется поизвращаться над игрой - делай, но не нужно навязывать свои "советы" другим, тем более когда тебя не просят об этом. Изменено 17 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
smeh 1 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) Artos- Воспользовался Вашим набором функций ( кстати за это благодарю ), вот какой теперь лог ! Missing ogg-comment, file: d:\Игры\сталкер\тени чернобыля\s.t.a.l.k.e.r\gamedata\sounds\characters_voice\scenario\video\intro_gsc_wp_r.ogg [16-9] get_xml_name for[ui_mm_main.xml] returns [ui_mm_main.xml] [16-9] get_xml_name for[scroll_bar.xml] returns [scroll_bar.xml] * DVB created: 1536K * DIB created: 512K - r__tf_aniso 16 - r1_tf_mipbias 0. * SSample: 2048x1526 * SSample: enabled * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) * GPU vertex cache: recognized, 24 *** RESET [161 ms] "d:\Игры\сталкер\тени чернобыля\s.t.a.l.k.e.r\bin\xr_3da.exe" * phase time: 0 ms * phase cmem: 69516 K Кэширование объектов... Loading objects... Loading models... * [prefetch] time: 15954 ms * [prefetch] memory: 84865Kb * phase time: 16026 ms * phase cmem: 143511 K Сервер: Старт... FATAL ERROR [error]Expression : ai().script_engine().functor(start_game_callback,functor) [error]Function : CALifeSimulator::CALifeSimulator [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_simulator.cpp [error]Line : 64 [error]Description : failed to get start game callback stack trace: Помогите разобраться. Мои предположения- может это быть из-за того, что в stalker_nebo_1.ltx содержится инклуд не зарегистрированный ни в одном из файлов? Или это бред? Строгое предупреждение от модератора ColR_iT Сейчас "засунул" под спойлер, в следующий раз просто удалю пост. Изменено 17 Февраля 2012 пользователем ColR_iT Ссылка на комментарий
Artos 99 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) smeh, теперь строка лога говорит о том, что в файле _g.script имеется ошибка, отчего и не может стартовать игра. Проверь правильность вставки функций. И совет, после ковыряний в файлах скрипта, дабы не терять время - проверяй файлы чекером. Только не тем, который ты упоминал, а "Syntax Checker" (by Gun12), который тебе уже посоветовал Капрал Хикс. Не смог найти сейчас живую ссылку на этот чекер ... поэтому выложил временно сюда: script Syntax Checker Изменено 17 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
MIDERY 0 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 Здравствуйте. Пытался освоить рестрикторы - столкнулся с проблемой - почему-то он не работает. Ума не приложу почему. Вроде бы всё сделал правильно. Вот файлы: [874] ; cse_abstract properties section_name = space_restrictor name = kevsts position = =122.554,-26.236,-468.079 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 11 distance = 0 level_vertex_id = 130015 object_flags = 0xffffff3e custom_data = <<END [logic] active = sr_idle [sr_idle] on_actor_inside = %+stor% END ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 6.5,0,0 shape0:axis_y = 0,6.5,0 shape0:axis_z = 0,0,6.5 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 <info_portion id="stor"> <action>text.tester</action> </info_portion> function tester(first_speaker, second_speaker) news_manager.send_tip(db.actor, "%c[255,255,128,128]Блаблабла:\n%c[default]Проверка", nil, nil, 30000) end Не подскажете, в чем может быть ошибка? Вроде бы всё правильно, но при заходе в точку ничего не происходит, текст не высвечивается. Ссылка на комментарий
ColR_iT 171 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 MIDERY Во-первых, из рестриктора можно вызывать и функцию напрямую, но она должна быть в файле xr_effects.script, вот так: on_actor_inside = %=tester% И функцию измени, чтобы не принимала никаких аргументов, вот так: function tester() news_manager.send_tip(db.actor, "%c[255,255,128,128]Блаблабла:\n%c[default]Проверка", nil, nil, 30000) end Во-вторых, ты темой ошибся. Ссылка на комментарий
MIDERY 0 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) Идёт вылет, если пробывать сделать, как вы сказали 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: e:\s.t.a.l.k.e\gamedata\scripts\_g.script:21: bad argument #2 to 'format' (string expected, got no value) Перепрочти сообщения на этой странице пару раз - может тогда будет понятна никчемность твоего лога для понимания проблемы/ошибки и что же нужно для этого. --/Artos Изменено 17 Февраля 2012 пользователем Artos Ссылка на комментарий
Nazgool 250 Опубликовано 17 Февраля 2012 Поделиться Опубликовано 17 Февраля 2012 (изменено) MIDERY Ругается на эту запись position = =122.554,-26.236,-468.079 "= =" такого выражения не существует. Изменено 17 Февраля 2012 пользователем Gun12 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти