Причини вильотів гри (розбираємо логи)
Привіт всім! Гра S.T.A.L.K.E.R. а конкретно сам движок X-Ray досить примхливий, і найчастіше як в процесі модифікації, так і під час гри гра «вилітає». Щоб ми знали причину вильоту, движок нам залишає лог вильоту. Лог вильоту можна подивитися декількома способами:
Ну приступимо. Почнемо з простих:
Тут гра не може відкрити звуковий OGG-файл під назвою sound в папці d: \ stalker \ gamedata \ sounds \ music \
Не може знайти текстуру act_corp_monolit з папки textures \ act
Чи не знайдена тривимірна OGF-модель mesh.ogf з папки meshes \ physics.
Чи не знайдена система частинок (партікл) hit_water_00 в директорії hit_fx файлу particles.xr (детально опишу пізніше).
Не вдалося знайти шейдер models \ antigas_glass в бібліотеці шейдеров.
Не вдалося знайти файл шейдера deffer_impl_flat.vs. --Added by Герр. Роммель Та ні. Тут проблема вся в тому, що неправильно закомпілілся шейдер, при компіляції рівня на якості, більш високому ніж Draft. Потрібно завантажувати виправлення шейдеров від товариша Haron. Для ЗП (ЧН) це може ще бути через відсутність thm-ок для текстур террейн рівня!
Брак оперативної пам'яті.
Неправильно налаштовані шейдери. В налаштуваннях шейдера, у вкладці R2-A поставте ту текстуру шейдера, яка вдальнейшем буде накладатися на террейн.
Чи не знайдена змінна ammo_mag_size в секції [wpn_addon_grenade_launcher].
Переповнення стека. Дивимося уважно: lua_error. Помилка, можливо, в скриптах.
Яка то вершина (вейпоінт) шляху sniper_3_walk варто в недозволеному місці (наприклад нема на АІ-сітці). Об'єкт stalker_0002 (в даному випадку сталкер) який нібито рухався по шляху sniper_3_walk потрапив на цю точку, а заодно пішов за АІ-сітку. Цього движок не терпить.
Те ж саме відбудеться якщо координати (вейпоінт) шляху sniper_3_walk співпаде з координатами місця, де НПС заборонено перебувати, будь то рестриктор або аномалія в схемі обходу аномалій. Також цей виліт спостерігається при спробі відправити НПС за межі місця робіт параметр out_rest = "імя_рестріктора" у файлі завантаження робіт гулагу. Спробуйте будь-якого сталкера з табору новачків відправити, припустимо, до зупинки - отримаєте цей самий виліт.
Виникають іноді довільно при смерті непісей. Причина - движок, відпрацьовуючи Лут, зрідка втрачає серверний об'єкт знищується речі, в результаті відбувається виліт.
Проблема виникає при вбивстві НПС \ мутанта. Типовий виліт по нестачі ресурсів. Учасник: Привид - Зустрічається в основному на великих локаціях. Але не на всіх. На болотах з ЧН такий виліт зустрічається, а от з локації aver від Кістки V такого вильоту немає. Однак для даного вильоту є таблетка, у вигляді правленого файлів. Шукати на АМК-форумі.
Неправильний візуал (модель) НПС.
У діалозі esc_dialog немає доступної для відображення фрази (скажімо, все заткнуті інфопоршенамі).
Гра не знайшла в моделі тривимірну анімацію з ім'ям death_init.
Доповнення до статті (Від Fireman3000): Вибачте, якщо я де-небудь неправильно пишу. Чи не народився я Колмогоров :(
Причина вильоту в тому що гра не розуміє значення 0 в danger_ignore.Проще кажучи в логіці якогось персонажа параметр danger_ignore = 0 або в мінусовому значенні. Або його взагалі немає
Не вдалося знайти клас персонажа. Можливо, НПС не прописаний під своїм класом в gamedata \ npc_profile.xml, або в creatures \ spawn_section.ltx, або в gameplay \ character_desc.xml
Гра не може знайти секцію. Це може бути предмет, НПС і багато іншого. Можливо, ви написали назву з помилками. Або коли додавали його в: продаж, скрипт, НПС. випадання з НПС, а в окремих випадках це може бути імунітет чого або (визначити потім важко). Часто таке буває пов'язано з назвою секції.
Чи не знайдена змінна remove_time в секції [vehicle_btr]. А в даному випадку помилка в тому що якщо ви робили предмет як фізичну модель (чи то пак, яку не можна використовувати, говорити і взагалі він схожий на декорації типу дерев, столів та іншого мотлоху) то необхідно вказувати remove_time в його секції.
Метод звернення до грі не передбачений. Можливо, варто переглянути підхід до того чи іншого скрипту.
На мультіплєєрной карті не знайдені точки респавна гравців. У SDK повинен бути червоний пацанчик. Налаштувати Team = 0
Таке іноді буває, коли ти (ГГ) або НПС заряджає дробовик або іншу зброю зі значенням tri_state_reload = true. Це глюк. в грі щось збивається, і коли у дробовика максимальну кількість заряджених патронів скажімо 6, він заряджається за 6 і далі. далі. далі. і так поки не відбудеться виліт з вищевказаним балкою. виліт не значний і рідкісний, але якщо він трапляється занадто часто, можна в конфігах всіх дробовиків і рушниць поміняти значення tri_state_reload = true на tri_state_reload = false.
Такий лог буває коли підключаєш локацію з ТЧ в ЗП. Причина проста - в ЗП рівнях файл рядок bound_rect пишеться в файлі gamedata \ levels \ імя_уровня \ level.ltx, а в ТЧ рядок bound_rect для кожного рівня безпосередньо в файлі gamedata \ config \ game_maps_single.ltx.
Виправити просто, потрібно змінити файл gamedata \ levels \ імя_уровня \ level.ltx в підключеної локації, просто перенести рядок bound_rect з game_maps_single.ltx в level.ltx перед рядком texture.
Трапляється коли одна з dll некоректна. Наприклад такий виліт буває якщо підсунути в ТЧ 1.0004 xrGame від 6 патча.
Виліт зустрічається тільки на 6 патчі при спробі хаванья з трупа. Шукайте, виправлену Kolmogor'om, xrGame.dll в Інтернеті
Даний виліт буває коли у будь-якого з об'єктів встановлено некоректне значення (читав, сам не отримував його) Або ж якщо даний виліт відбувається при виклику класу, то проблема в тому що в методі __init () класу прописано super ()
Виліт відбувається в двох випадках - коли скрипт намагається викликати функцію з неіснуючого файлу або коли в файлі допущена синтаксична помилка.
Відбувається при спробі викликати клас, якого не існує
Невеликий приклад з практики по визначенню помилки в особливих випадках (для початківців): Гра зависла, картинка на екрані не змінюється, на Ctrl + Alt + Delete не реагує. Тільки "Холодна перезавантаження" reset. Але при цьому зазвичай в балці немає запису і звичайним Ctrl + V помилку не помітити. Я користуюся програмою Punto Switcher. Є в ній опція "щоденник", вона веде запис всіх натискань клавіш і після натискання сполучень клавіш вміст пам'яті може записувати в щоденник. тепер коли гра зависла і картинка на екрані не змінюється, натискаєте Ctrl + Alt + Delete. Зовні нічого не зміниться, але ОС буде реагувати на клавіші, натискаєте поєднання клавіш "записати в щоденник". Робите перезавантаження, відкриваєте щоденник - Ваша помилка записана. "дядько Сашко"
Виліт, при якому лог відсутня. Причини такого вильоту:
Це тільки одна (не сильно ймовірна) причина безлогового вильоту. якщо ви знаєте ще одну причину, будь ласка напишіть тут.
2. Друга причина неправильно вказано назву шляху в логіці НПС або він повністю відсутній в файлі way_ all.spawn. Вилітати буде коли дійде час до спавна цього НПС. (ДС)
3. Також, безлоговие вильоти відбуваються через помилки в діалогах.
Expression: error handler is invoked! Function: invalid_parameter_handler File: D: \ prog_repository \ sources \ trunk \ xrCore \ xrDebugNew.cpp Line: 815 Description:
Виліт закінчується рядком, то що вище не вказую ролі не грає, тут роль грає тільки "bad argument # 3"
Якщо це з'явилося значить у Вас помилка у файлі з розширенням .ltx (звертаю увагу, не плутати з файлами .script), яка знаходиться між [. ] Квадратними дужками в файлі. Це може бути секція предмета, секція логіки, секція шляху файлу way_, тобто там де присутні квадратні дужки. (ДС)