Artos 99 Опубликовано 15 Февраля 2012 (изменено) Под "не биндятся" подразумеваю не то, что в конфиге прописано - биндить скриптом, а то, что включен ли объект в скрипт биндера (обрабатывается ли) или его отфильтровали и в сам класс биндера он не попал. Для физических объектов в биндере стоИт входной фильтр и в оригинале из объектов без логики только объекты класса прожекторов проскакивает и дроповые ящики ... Лампочки в биндер НЕ попадают, т.к. не имею никакой логики. Ну а если прописать логику - то это уже "полный моддинг", и возможно для вопрошавшего проще накидать им сидов в алл.спавне. ;-) Не забываем, что чем больше забиндено предметов и чем больше задействовано логики/схем - тем прожорливее игра к ресурсам, тем более для физ.объектов работает их апдейтер (для каждого!) Изменено 15 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 15 Февраля 2012 (изменено) smeh, я уже давно устал повторять свои посты по подробному толкованию какие строки читать в логе. 1. Смотреть нужно НЕ копипаст из памяти компа, а сам файл лога! 2. Если в логе упоминается про ошибку в _g.script - читать нужно 2-3 строки выше секции [FATAL ERROR]. 3. Прежде чем модить, особенно в скриптах - стОит озаботиться инструментарием и подготовить "рабочее место", т.е. и нормальный вывод в лог-файл организовать и нормальноые сообщения в абортах. В топике по скриптам давал рабочий набор и вывода в лог любой информации иинформативного прерывания игры. проверяю луа чекером уже 1 час проверяет и еще не закончил - не знаю что за чекер используешь, но проверка скопом всех скриптов игры может занять ... пару минут, не более. А отдельного - секунду. Если больше - значит "висишь". Добавлено через 7 мин.: Keng, этим не проверяют скрипты. Упомянутый тобою вариант от SkyLoader'а - довольно примитевен и без вывода собственно сообщений в нужных точках скрипов - бесполезен. Да и не безопасен, т.к. на вход такому printf может попадать все что угодоно от nil до таблиц/объектов ... на которых он сам подавится. Поищи за август-сентябрь в топике по скриптам нормальные варианты вывода в лог и для функции abort. Изменено 15 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 16 Февраля 2012 (изменено) CON, учись все же задавать вопросы попонятнее ... :-) 1. D_SIMDET - это не класс, а CLSID, т.е. идентификатор (текстовая строка) класса. Имеется также script_clsid или просто clsid (числовое значение). Ну а речь, как понял, ведешь о классе cse_alife_item_detector. Еще проще - о детекторах. 2. Сами предметы ничего не спавнят, независимо в слоте они иль нет. И что мешает уточнить/конкретизировать понятие "предмет спавна", чтобы было хоть понятно и о каком предмете идет речь и о каком слоте. Для игры/скриптов это немаловажно, т.к. ко всему есть свои (не)разрешенные методы ... Ну а по сути, что мешает проверять наличие своего предмета в слоте типа: my_item = db.actor:item_in_slot(N) - где N номер проверяемого слота. и по "пропаже" из слота твоего предмета (if my_item == nil then ...) - итерацией по рюкзаку убирать/удалять твои D_SIMDET? Все функции в данном случае общеизвестны и применяются во множестве модов и оригинале. Смотри, выбирай и применяй. Изменено 16 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 16 Февраля 2012 (изменено) CON, изъясняйся в конце концов не на "своем жаргоне", а на общепонятном языке ... если конечно хочешь получать ответы а не отмазки! Упомянутую "схему" не видел и нет особого желания. в худы вещей скрипт спавнит ...В худ (HUD) ничего не спавнится. "ПОстоянно" спавнит говоришь - ну-ну очень понятно ... CON: как бы мне сделать - ключевая фраза! Если именно тебе самому сделать - выше написал как определить "пропажу" детектора из слота и как удалять ... и если что непонятно - спрашивай/уточняй (на нормальном языке!). Если же ждешь, чтобы "дядя" тебе сделал - ... жди, может кто за тебя и сделает. (Навсякий случай напомню: мы в топике "Школа ...", а не "Стол заказов") Изменено 16 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 16 Февраля 2012 Boofer, '[ как бы было хорошо, чтобы из скриптов по условию командовать чтобы игра не вылетала ... а продолжала бы не взирая ни на какие ошибки/чудачества модмейкера ... ;-) Тут не на вылет условие нужно, а на наличие в игре (в конфигах) выдаваемого инфопоршня, но ... в такого нет и в ТЧ попытка выдачи несуществующего заканчивается фатально. Т.о. или выдавай заведомо существующие инфопоршни или пиши свой xml-парсер и проверяй в конфигах наличие тго, который собираешься выдавать (хотя ...судя по твоим вопросам - пока тебе это не по плечу). "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 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 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 17 Февраля 2012 (изменено) Nic101, не нужно флудить, бесполезная и что более важно, ошибочная информация - никому не нужна! Помимо того, что в ТЧ без непростой для неопытных модмейкеров адаптации скрипта release_body_manager в игру (потребуется даже в биндер актора влезать), в модах наоборот работаю скрипты-чистильщики трупов и твои потуги/советы по "засорению" локаций в общем то бессмысленны. И не нужно с упорством твердить, что "это заработало на ТЧ". Не может на ТЧ подобное заработать, что о чем тебе уже разъяснил ColR_iT. Если ты о некоем моде, куда внедрили этот скрипт, то ... предполагаю что читающие этот топик врядли о нем ведают и не обобщай это на ТЧ. И, как уже дал ремарку на другом формуме - хочется поизвращаться над игрой - делай, но не нужно навязывать свои "советы" другим, тем более когда тебя не просят об этом. Изменено 17 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 17 Февраля 2012 (изменено) smeh, теперь строка лога говорит о том, что в файле _g.script имеется ошибка, отчего и не может стартовать игра. Проверь правильность вставки функций. И совет, после ковыряний в файлах скрипта, дабы не терять время - проверяй файлы чекером. Только не тем, который ты упоминал, а "Syntax Checker" (by Gun12), который тебе уже посоветовал Капрал Хикс. Не смог найти сейчас живую ссылку на этот чекер ... поэтому выложил временно сюда: script Syntax Checker Изменено 17 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 17 Февраля 2012 Gun12, собственно данная ошибка может иметь два варианта последствий: 1. Компилятор спавна просто не соберет all.spawn - соответственно разговор и о чем. 2. Компилятор, споткнувшись на некорректно заданном параметре заменит на подходящий дефолный. Тогда где этот рестриктор - только компилятор будет знать и модмейкер, который может отследить его на локации. Изначальная ошибка MIDERY, в том, что не имея навыков пытается меодом тыка как то кодить. Вот задай ему вопрос: "И где же он в оригинальных кодах видел чтобы экшены вызывались из самих инфопоршней?" - ответ в лучшем случае буден типа: ктой-то где-то посоветовал иль где-то как-то прочитал ... Нейжели не ясно, что всему есть свое применение. Инфопоршень выдается и по факту его выдачи из соответствующего коллбэка и вызывается экшен ... Ну а то, что у него сейчас, т.е. после некоей правки и попытке сделать по совету ColR_iT - уверен, или банальные ошибки в синтаксисе скрита или в использовании необъявленных аргументов. Эти же самые ошибки он может повторить и по твоему совету ... Пока он не научится понимать и проверять написанное, читать лог-файл и понимать что в логе написано - будет продолжать петлять в трех соснах и спотыкаться в потемках. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 18 Февраля 2012 (изменено) Artem_K., ну тогда найди мод ZENOBIAN и посмотри там пулеметные турельки (se_turret_mgun). Или аналогичное в других модах. Сделать конечно можно, но помимо собственно моделек и спавна их в игру, потребуются свои и биндер и логика ... Изменено 18 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 18 Февраля 2012 smeh, возьми отсюда: ссылка _g.script и сравни со своим. Добавлено через 23 мин.: Keng, пулеметные турельки - это свой класс объектов. Чтобы их заспавнить в игру требуется использовать и соответствующие секции для объекта с соответствующими моделями и указать свойства присущие этому классу. Можно заспавнить и через универсальный ACDC (старые без правок этого не могут), указав ему свой созданный класс или используя TURRETMG (Z.E.N.O.B.I.A.N mod). Можно заспавнить скриптами, но потребуется подстроить нет-пакетами ... Повторяю уже сказанное, интересно как сделать(?) - смотри как было сделано в том же Z.E.N.O.B.I.A.N mod, не вижу надобности постить сюда портянки кодов. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 20 Февраля 2012 (изменено) zhrec, это ты из какой-то иной чем Сталкер игры спрашиваешь. Ни в оригинале игры, и что-то не встречалось в модах - нет ограничения по весу вместительности ящиков/тайничков. Добавлено через 3 мин.: Plotnick, вообще то патроны - не просто как остальные предметы. Их следует прописывать еще в немалом числе конфигов/скриптов. Так что просто сдублирвать секцию, дав ей свое название - врядли достаточно. Предполагаю, что используешь не чистую иру, а мод, в котором на старте что-то с патронами/предметами производится ... Вот и вылет из-за недостаточности информации по вновь добавленным. Изменено 20 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 20 Февраля 2012 Plotnick, когда кто-то поковырявшись в файлах и не показав что же, где и как сделал, и тем долее без лога - это уже к бабке ванге иль кашпировскому за ответом "сразу". ;-) "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 21 Февраля 2012 (изменено) SWoBoDoWeTH, saruman_ten, _zero_cool_ Ваши вопрос и реплики напоминают басню дедушки Крылова, когда три слепца изучали слона ... У первого слон похож на лопух (ухо), у второго - на колонну (нога), ну а у третьего - слон похож змею (хвост). 1. Вопрос очень некорректно задан. "Приделывать" аддоны к оружию, т.е. править модели/текстуры можно в ТЧ также как и в ЗП. "Приделать" же в игре к уже имеющемуся объекту 'оружие' в ТЧ можно только тот аддон, который прописан в строках конфига (scope_name,silencer_name,grenade_launcher_name). В ТЧ возможно только одно наименование. 2. saruman_ten по сути прав относительно невозможности установки разных однотипных аддонов в игре, т.к. эти параметры читаются непосредственно из конфига на старте игры и заменить их на иные штатными методами/скриптами невозможно. Однако, есть уже расширители x-Ray, которыми можно добавить в игру возможность смены наименования типа аддонов ... Но это уже не для новичков в моддинге, т.е. нужно уметь не только править конфиги иль даже скрипты, но и неплохо разбираться в компиляции расширителя x-Ray (или заиметь готовое "нахаляву"). Т.о. "слон" то совсем иной и более "сложный". ;-) Если очень захотеть, то и в ТЧ однотипные аддоны к оружию можно подключать самые разные. Добавлено через 8 мин.: Вампир35, сколько можно твердить, что тут кашпировских нет и что тобою недоделано - никто не может знать. А погадалки нечего устраивать. Или выкладывай, разъясняй что и как сделано или смотри в тех модах (их немало), где вояки разговорчивы и смотри что там сделано, а тобою нет. Изменено 21 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 21 Февраля 2012 (изменено) Plotnick Найди отличие: [ammo_9x19Х]:ammo_base и (правильное) [ammo_9x19X]:ammo_base Найдя - поймешь свою ошибку. В секции использована заглавная кирилическая буква " Хэ" вместо такой же по написанию латинской. В кодах скриптов/конфигов НЕ разрешена кирилица и иные не разрешенные языком Lua символы! Кирилица допустима только в строках описания и аналогичном. И убедительная просьба к всем, кто задает вопросы по ошибкам в своих модификациях: Прежде чем задавать вопросы - проверьте правленные вами скрипты/конфиги чекерами на отсутствие банальных ошибок! Изменено 21 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Февраля 2012 (изменено) KitkaT.Net, если ты думаешь, что в ТЧ (SHoC) у многих имеются в игре рабочие локации jupiter и swamp_old по которым и между которыми запросто могут разгуливать неписи, явно предназначеные для иных локаций (gar_stalker_general_default2), то жди ... может кто и даст более конкретный ответ. А пока, попробуй разобраться, как у тебя на "Юпитер" попал сталкер со "Свалки" и зачем он направляется на "Старое Болото" и есть ли вообще в твоей игре такой проход ... Изменено 23 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 23 Февраля 2012 (изменено) KitkaT.Net Во-первых, довольно странный способ метить сталкеров "именными" метками локации, которая не имеет отношения к данной. Этим ты и себя можешь запутат и других. Ведь ничего не стОит использовать общее 'sim_', ну ежели их профили (со свалки) нравятся - то довольно просто и быстро создать удобные дубли профилей. Во-вторых, маски терейнов не для запрета ходить между локациями, хотя теоретически можно вероятно извернуться (но это уже из области пяткой чесать ухо). Если твои заспавненные неписи могут гулять по другим локациям, то без наличия соответствующих маршрутов/проходов - ты все одно будешь получать подобные вылеты (когда они будут получать работу на др.локациях). Тогда уж запрети своим заспавненным вообще гулять, снабдив их работой на данной локации или привязав к определенной точке/зоне. Добавлено через 5 мин.: _zero_cool_, во первых, лично не нуждаюсь в ответе на не мною заданный вопрос, поэтому потрудись адресатов не путать. Во-вторых, твой ответ - пример, когда именно недостаток информации в вопросе порождает подобные предполагалки, и именно поэтому такие вопросы впредь буду метить, дабы и автор вопроса понял свое упущение и толкователи ... В-третьих, строка лога: "! Cannot build GAME path! (object gar_stalker_general_default320754)" - говорит о бессмысленности твоих потуг толковать "понятный" лог и сваливать на кривой спавн. ;-) P.S. _zero_cool_: Причина этого в том, что А-лайф спавнит их в некотором произвольном радиусе от точки спавна Не нужно вводить других в заблуждение. Спавн происходит именно в точку спавна, если она указана. Если, как в данном случае, спавн через респавнер, то рандомность имеется, но радиус строго определен в параметрах респавнер (или взят дефолтный). Так что отсебятина алайфа ограничена. Ну и если возникает такой кривой спавн - это знак модмейкеру, который удосужился разместить респавнер в неподходящем месте или неправильно выбрал точку спавна объекта.. Изменено 23 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 24 Февраля 2012 wikreznow, используй для физ.объектов: fixed_bones = link - где link имя кости, которую фиксируешь. Для оружия это может быть wpn_body. Ну а чтобы машинки не зависали - после спавна и выхода их в онлайн - дай им небольшой хит или импульс (примеры смотри в модах) и они без тебя будут опускаться на землю. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 1 Марта 2012 (изменено) Zander_driver (и правильно опасаешься, т.к. к скриптам/логике это не имеет никакого отношения) Отметки ставятся движком. Движек читает конфиги детекторов и в зависимости от тамошних параметров выводит и иконки и озвучку. Из скриптов доступа к этому нет. Добавлять типы отметок - в map_spots.xml. Вампир35, давайте стараться поменьше засорять топики неинформативными постами/репликами. Порой лучше промолчать, чем захламлять ... Самому же потом "влом" искать в завалах нужную информацию. Изменено 1 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение
Artos 99 Опубликовано 1 Марта 2012 (изменено) PanaceaRU, "подкинуть" нужный тебе ACDC ты можешь себе сам, заглянув в тему: "Universal ACDC и другие perl-скрипты", почитав там шапку ... И, нередко, инструменты сделанные достаточно давно и в основном для чистой игры не работают с модами. Прими как данность и подбери под свои цели что-то и посвежее и поунверсальнее. По обоим вопросам тебе стОило бы вначале побродить по форуму ... так и тему про инструментарий для модмейкеров может быть встретишь и отпал бы вопрос по ACDC. И, совет напоследок, побольше вначале читай, т.к. поспешные вопросы нередко отнимают больше времени и меньше дают пользы, чем самостоятельные попытки наити ответы ... Также посоветую НЕ ставить папки с играми на "рабочий стол", а устанавливать из на диск и давать по возможности имя/путь покороче и желательно с именами литиницей, а не кирилицей. Изменено 1 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Поделиться этим сообщением Ссылка на сообщение