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

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


Halford

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

А стОит ли искать черную кошку в темной комнате? (тем более ее там скорее всего и нет!).

 

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

...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

FLIKER

У тебя что для твоего darkscape допускаются координаты [164110.468750][-107479056.000000][274200834650121210000000.000000]?

Если да - то ты действительно 'космическую' локацию сваял ... вот игра и не понимает тебя. ;-)

 

Перепроверяй корректность параметров.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Callisto

Размышления действительно не совсем в ту сторону ...

Файл fsgame.ltx определяет пути до различных папок для игры, и даже позволяет несколько вмешаться в порядок чтения файлов, но не задает порядок распаковки из пак-файлов.

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

$game_data$ = true | false | $fs_root$| gamedata\

- тут 'true' - заставляет игру перечитать папку 'gamedata'.

Однако что же получается ...

1. Игра изначально не предполагает наличие папки 'gamedata'.

2. При запуске приложения (игры) распаковываются из корня игры ($fs_root$) основные пак-файлы 'gamedata.dbN'. Порядок распаковки определяется наличием маски расширения 'db' и алфавитным порядком последующих за маской символов.

3. После распаковки в виртуальную папку основных игровых архивов рекурсивно перечитываются все файлы из папки $fs_root$\gamedata\, что позволяет вносить изменения прямой правкой нужных файлов в этой папке.

4. В последнюю очередь распаковываются в виртуальную папку пак-файлы из папки указанной переменной $mod_dir$ (\mods).

Порядок распаковки аналогичен распаковке 'gamedata.dbN', но(!) тут маской является 'xdb' и имя пак-файлов также подчиняется алфавитному порядку.

Можно заметить, что в данном случае какой-либо возможности поменят порядор распаковки в виртуальную папку с которой и работает игра - невозможно. Можно только удалить *.xdb* файлы (распаковав их при необходимости в папку 'gamedata') или же запаковать в последний по алфавиту *.xdb*-файл свои актуальные правки ...

 

 

Добавлено через 8 мин.:

Bobenich

Покопаайся в '\gamedata\config\creatures\m_stalker.ltx'.

Интересующие параметры смотри в статьях/ФАК'ах (коих немало в сети и на этом сайте).

Изменено пользователем Artos
  • Полезно 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Callisto

Для всех файлов игры действует одно ограничение на размер - его определяет возможность файловой системы твоего диска.

Если игра для себя и имеешь NTFS - хоть все файлы в один db. можешь запаковать.

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

 

В общем, делать пак-файлы по 1 Gb - вполне можно для всех применений.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

CRAZY_STALKER666

Для схемы 'walker' обязательными являются два параметра: path_walk и path_look (читаем туторы!)

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение
alex5773, и оригинальный amk_offline_alife.script из AMK и из НЛЦ 5.08 имеют менее 2000 строк. Что там у тебя надоковырено в нем - только по твоему коду можно сказать. Но скорее всего эта ошибка пока не из-за оружия. Скрипт ругается на отсутствие другого скрипта 'news_main.script' (или же в последнем есть синтаксическая ошибка). Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

alex5773, если ты добавив новых стволов покорежил скрипт, то и при отключении торговли наделаешь еще больше ошибок.

Возьми в топике инструментов для модмейкеров "script Syntax Checker" (by GUN12) и им проверь измененый тобою 'news_main.script'.

Если его не исправишь - то и без торговли от вылетов не избавишься.

 

foxbat21, костюмы, которые пригодны для ГГ, неписями не используются. У них 'костюмы' называются иначе - визуалами (все вместе и лицо и прикид и шнурки на ботинках).

Т.о. все попытки правкой костюмов защитить неписей обречены на неудачу.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Kopcap, не 'смарты' подконтрольны группировкам, а гулаги. В настройках смартов задаются возможные группировки, а в гулагах это все реализуется.

 

Полтергейст, заблуждаешься,что "без модификации скрипта smart_terrain.script и customdata всех смартов в all.spawn - никак".

Если гулаг не из 'general_lager', а из эксклюзивных (а именно такие в основном и интересны в модинге), то несложно для каждого такого гулага в его прекондишенах записывать не набор группировок, а функцию, которая бы разрешала ту или иную группировку в зависимости от доп.усовий.

 

Хотя ... если делать по-серьезному, т.е. не для одиночных случаев, то ты прав, может и стОит озаботиться именно модификацией имеющейся 'штатной' логики.

 

Полтергейст: Возможно ли добавить смарт в рестрикторы неписю? Не будет ли вылета?

Добавить то можно и вылета не будет (в большинстве случаев), вот только ... толку то? Если у многих смартов радиус в 1 метр - толку то от твоего добавления?

Для разрешения иль запрета для неписей того иль иного гулага есть немало штатных средств ...

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

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Max_Plohih, действительно очень глупый вопрос.

Все файлы ты можешь изменять/удалять и т.п.

Ни каких спец.возможностей тут нет, но ... нужны "спец.знания", т.е. просто знания и умение работать с файлами скриптов, абы не вносить глюков/ошибок.

Ну а что "интересного" - это каждый решает в меру своего развития ...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Partisan, в конфигах строки параметров могут повторяться. Это конечно излишне (задавать дважды/трижды/...) и является оплошностью разработчиков, но тем не менее это не критично. Парсер игры, перечитывая строки, просто переприсваивает для одного и того же параметра вновь заданное значение.

Т.о. дублировать не стОит и лишние строки можно поудалять, но и криминала в этом нет (просто 'мусор').

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Partisan, ДА, в строке секции до ее окончания присутствуют символы, которые парсер пытается идентифицировать ...

Движек игры, в подобных ситуациях, научен разрабами игнорировать, но по-хорошему, подобный мусор стОит или комментировать или стирать.

 

Ты сам ответил на вопрос "пока не стрельнишь" ... Если периодически 'встряхивать' животинок тем или иным данджером - гребунов станет поменьше. Но это уже тема для тех, кто хочет заморачиваться на этом.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Полтергейст

Вообще то модмейкерам стОит различать:

release - освобождение

reject - отклонение

destroy - уничтожение

Т.е. то, что модмейкеры ставят в свои скрипты и считают "удалением" - это только(!) команда серверу освободить игровой объект, после чего (по прошествии некоторого времени) этот объет освобождается от 'родителя' (если таковой имеется) и еще через некоторое время - собственно уничтожается.

Также, существует т.н. "сборщик мусора", который периодически или по команде очищает ресурсы игры от 'потеряных объектов' в которых отпала нужда ...

 

То, что в скриптах имеется только два 'штатных' коллбэка - не препятствует тому, чтобы понаделать своих коллбэков в любом ином месте.

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

 

Если в оружии имеются патроны (заряжено), то факт удаления собственно самого оружия не означает единомоментного удаления и патронов в нем. Сработает коллбэк движка, который должен будет очистить игру от объекта патронов бывших в стволе удаленного оружия (приписанных ему).

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Лёха_тц, декомпилируй нужную тебе локацию и там увидишь и названия и пр.

То, о чем ты спрашиваешь, т.е. например вышки - это объекты карт, а не спавн-объекты. Названия этих объектов фигурируют только в SDK и в декомпилированных картах.

Может быть кто-то и подскажет названия, но гораздо проще самому посмотреть ...

Если же тебе для спавна скриптами иль в all.spawn'е - то ничего не выйдет и тебе эти названия ничего не дадут. Только брать готовое из модов иль моделить самому.

 

Добавлено через 24 мин.:

Полтергейст, я привел пример ЕЩЕ одного из возможных ... помимо упомянутых тобою: "По идее, в скриптах есть только 2 коллбека на смерть NPC". Ну а разумно иль расточительно - это уже по контексту ...

Полтергейст: Так при смерти НПС оружие не удаляется. Или как?

Или 'как'!

Ребята, вы совсем уж заговорились ... Один отключает в death_manager лут и удаление - и пишет что у него все удаляется. Другой тоже поковыряв - находит и патроны и пр.

Давайте говорить об исходной игре и о заложенных алгоритмах разработчиками, а не привнесенных еще кем-то/чем-то.

Если отключить работу death_manager'а, то не будет ни лута ни удаления чего бы то ни было. И патроны будут на месте и оружие и пр. Т.е. все то, что было при НПС при его появлении в игре (точнее в момент смерти) - все при нем и останется.

Примечание: За исключением тех патронов (пачки), которыми было заряжено оружие, заспавненное без патронов (вот она связка!).

Если же работает death_manager - то оружие НЕ из слотов - удаляется, а то которое в слотах - разряжается и 'портится'.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Partisan, ищи причину битья твоих сэйвов в ином месте.

 

Строка лога говорит всего лишь о том, что у некоего непися в списке его барахла имеется 'wpn_rg-6' и этот предмет не попадает под продаваемые в оффлфйн-алайф торговле категории (оружие/патроны/жратва/...). Просто напросто этот предмет не будет продан и останется у непися.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Partisan, тебе же достаточно ясно сказал - искать, а значит и лечить, нужно в ином месте!

Толку от того, что ты избавишься от сообщения, что некий предмет не подпадает под категории продаваемых? На-ка-ко-го!

Замазывать зеленкой некую стороннюю царапину врядли стОит.

Разбирайся с битьем сэйва. Может быть именно то, что этот непись с гранатометом распродает свой хабар - и есь причина.

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

 

В общем гадать далее не буду. Выводи в лог дополнительные инфы и ищи по ним.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

SEA_CAT, почитай про 'pstor' и в топиках форума и на вики.

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

Функции сохранения из оригинала: хr_logic.pstor_store , чтения - хr_logic. pstor_retrieve

В АМК для актора есть аналоги : amk.save_variable / amk.load_variable

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

Partisan

(задумайся - стОит ли прыгать выше головы? Если ответ - да, то наверное подразумевается необходимость подтренироваться)

Твоя непись УЖЕ имеет в своем барахле этот гранатомет, а не поднимает его. Лог говорит, что он распродает свое барахло и этот гранатомет НЕ будет продан. Так что он и оставит его себе и не будет продавать - будет болтаться в рюкзаке.

Ну а то, что этот гранатомет не в продаже - банальное объяснение: класс для wpn_rg-6 ни в оригинальной игре, ни в АМК не прописан как класс оружия, (см. в _g.script) поэтому проверка isWeapon(obj) и не распознает в нем оружия.

Рекомендовать вносить глобальную правку по добавления в эту проверку класса гранатомета - не рискну, т.к. может потянуть за собою иные проблемы/коллизии. Да и не даст это ничего, т.к. в 4-й раз повторяю - гранатомет НЕ продается.

Сними шоры и не на эту строку обращай внимание, а ищи в ином месте, может быть связанном с этим НПС (ты даже его имя не узнал).

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

smeh, НЕТ, совершенно все НЕ правильно.

 

Как уже выше сказал KD87, параметр custom_data обязан иметь 'штатные' начало и конец.

Внутри этих отметок можно писать свои данные, но(!) и они должны соответствовать тому формату, который принят в игре.

Помимо 'логики' в custom_data могут быть прописаны и др.параметры, как например встречающийся у тебя [smart_terrains].

Логика может быть прописана 'напрямую', т.е. теми же секциями и параметрами или вынесена в отдельный файл. Тогда этот файл прописывается в

custom_data как:

[logic]

cfg = путь к твоему файлу ...

 

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

boryan67, собственно ты сам же и дал ответ.

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

Не удивляет же тебя, что и имена/описания предметам/объектам заданы заранее, и даже инфопоршни (в ТЧ) можно выдавать только из заранее заготовленного массива.

Исключения составляют только динамические поля (типа журнала сообщений в КПК иль статистики), в которые разрабами было разрешено вставлять текущую информацию.

И даже подмена/изменение файлов (*.ltx *.xml) тут не поможет, т.к. игра, считывая на старте все подобные конфиги уже оперирует с виртуальным кешем, а не в реальными файлами. Ну а доступ из скриптов в подобные кеши - отсутствует.

Возможно после выхода продолжения NLC6 что-то можно будет делать по принципу "artmoney" (подменять в памяти игры), но я бы не стал на подобное сильно расчитывать ... Подмена (байтов) и свободное добавление далеко не равнозначны.

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение

panzyuza, собственно действительно строка лога: 19391 objects are successfully saved - говорит о том, сколько объектов попало в сэйв ...

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

local iCount = 1 --/ ID==0 это актор

function HowManyObjects()
  local sim = alife() --/ кешируем функцию алайфа
  for i=1,65534 do
    if sim:object(i) then
      iCount = iCount +1
    end
  end
  return iCount --/> кол-во объектов в игре
end

 

 

BFG, не существует такого параметра как "задержка на начало атаки сталкеров при боях на Арене".

Хочешь попридержать - придется, например, после их (членов команд) спавна увести в оффлайн и там дожидаться "облета". Естественно это подразумевает изменение оригинальных скриптов/кодов.

 

FANAT, чем отличается труп от раненого иль здорового? Ответ в общем-то очевиден - уровнем здоровья (health).

В приведенном тобою куске кода, заспавненному НПС устанавливаются tbl.health = 0 (уровень здоровья в момент спавна) и tbl.updhealth = 0 (уровень здоровья при следующем апдейте объекта).

Несложно самому догадаться, что поставив, например, обоим параметрам значения 0.3 - ты получишь заспавненного раненым НПС.

Примечание: Следует помнить, что НПС имеет способность регенерации своего здоровья (или даже в модах работать схема самолечения) - так что, заспавненым раненым долго валяться не будет ... (если не принять спец.мер).

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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