Сповіщення
Очистити все

Нові монстри. Виліт №2


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Виліт під час вбивства

Це знаменита помилка:

Arguments : LUA error: e:\stalker\gamedata\scripts\_g.script:20 ........

Найпростіше і неправильне рішення - закоментувати 20-й рядок скрипта _g.script, виліт зникне, але помилка нікуди не подінеться. Я не можу сказати з упевненістю, чого ігнорування цього факту може призвести, оскільки виправляв причину, а не слідство.

Шляхом нехитрих логічних роздумів рішення знайшли. Точніше тупим перебором всього, що стосувалося справи, криками на форумах, биттям головою об стінку... Потім прийшло осяяння, разом із сакраментальним питанням "що відбувається після смерті?" А відбувається додавання до статистики вбитого об'єкта (монстра, нпс-а). Тому ліземо в скрипт xr_statistic.script . На самому початку бачимо оголошення змінної

local killCountProps = {...}

у якій кішок немає. Тому додаємо їх туди (наприклад, наприкінці), для нарахування очок досвіду:

cat_weak = 1, cat_normal = 2, cat_strong = 3,

Хоча ми зробили лише cat_weak , але на майбутнє додамо й інших. Потім йде перелік використовуваних класів монстрів:

monster_classes = {

кішок немає і тут, додаємо:

[clsid.cat_s] = "cat",

Дивимося далі, бачимо функцію addKillCount(npc) , яка визначає співтовариство (community) убитого. Функція викликає getNpcType(npc) , що у тому ж скрипті. А там йде звернення до функції IsStalker(npc) , і повертає співтовариство та ранг убієнного.

Але тут про мострів ні слова, а отже, йдемо далі. Функція IsStalker(npc) виявляється у скрипті _g.script . Переглядаючи його виявляємо наступні функції, що нас цікавлять:

  • is_object_monster(obj)

кішок немає, додаємо поруч із собаками:

otype == clsid.cat or
  • IsMonster (object, class_id)

кішки є, нічого не чіпаємо.

Для страховки перевіримо ще один файл, class_registrator.script . Знаходимо у ньому рядок

cs_register (object_factory, "CCat", "se_monster.se_monster", "SM_CAT_S", "cat_s")

і заспокоюємось на цьому. Запускаємо, вбиваємо, підходимо, намагаємося обшукати – вилітаємо. Тому що трапився


   
Цитата