На главную | Регестрироваться | Вход Приветствую Вас Гость | RSS


[
Новые сообщения ·
Участники ·
Правила форума ·
Поиск ·
RSS ]

  • Страница 1 из 1
  • 1
Форум » МОДОСТРОЕНИЕ » МОДОСТРОЕНИЕ » Новые монстры
Новые монстры
aleks-dnkey1Дата: Воскресенье, 31.05.2009, 09:36 | Сообщение # 1
Свободный Админ
Группа: Администраторы
Сообщений: 38
Репутация: 1
Статус: Ушёл за Хабаром
Новые монстры
Введение
Многие часто сталкиваются с тем, что при попытке добавления монстров не попавшими в финальную версию игра может вылетать. Попробую рассказать, как это дело можно исправить.
Для примера возьму кошек (уж очень они мне нравятся)
Добавить их можно отредактировать файл all.spawn, либо динамически создать в игре через функцию alife:create().
Вылет при появлении
Обычно сопровождается сообщением в логе:
Arguments : Can't open section 'cat_weak'
Это значит, что монстр у нас не до конца описан. В файле конфигурации идет секция
[m_cat_e]:monster_base
Но для создания разных по силе конфигураций монстров обычно используется такая штука. Создается секция вида
[cat_weak]:m_cat_e
то есть ссылка на основную конфигурацию, а потом указываются параметры, которые отличаются от нее. Например сила, здоровье, угол обзора и тд. Мы пока ограничимся просто добавлением этой секции. В файле config\creatures\m_cat.ltx в конце допишем [cat_weak]:m_cat_e. Запускаем, добавляем кошку, вылетаем с ошибкой:
Arguments : Can't find variable smart_terrain_choose_interval in [cat_weak]
Что ж, добавим и этот параметр. Посмотрим, какой он у собак, и сделаем также:
smart_terrain_choose_interval = 00:15:00
Запускаем, вылетаем с ошибкой:
Arguments : Can't find variable satiety_threshold in [cat_weak]
Вобщем, добавляем параметры, по кошка не станет нормально появлятся. Такие ошибки легко локализуются и исправляются.
Ну, на всякий случай, нужно добавить еще две строчки:
critical_wound_threshold = 0.4
critical_wound_decrease_quant = 0.
После этого кошка появляется, бегает, с 30 метров бежит нас кушать. Мы этого не хотим, стреляем в нее, и у нас происходит
Вылет при убийстве
Это знаменитая ошибка:
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")
и успокаиваемся на этом. Запускаем, убиваем, подходим, пытаемся обыскать - вылетаем. Потому что случился
Вылет при обыске
Ну тут уже проще. Вспоминаем, что у нас показывается в инвентаре убитого? Иконка растерзанного трупа. Проверяем m_cat.ltx - действительно, параметр icon отсутствует. Тут появляется два пути.
Первый - нарисовать новую иконку, вставить ее в файл ui_npc_monster.dds, определить координаты и добавить их в xml-описатель ui_npc_monster.xml. И так для каждого нового монстра.
Второй - использовать общую иконку для всех монстров, у которых отсутствует этот параметр. Мы им и воспользуемся, так как для тестовых целей сойдет, а для серьезного применения все равно необходимо иметь хоть какие-то художественные навыки (если кто видел мой тестовый мод "15 кошек", то помнят тот ужас вместо иконки кошки
Для этого отредактируем файл defines.ltx , так как именно в нём содержится секция monster_base, общая для всех монстров. Открываем, ищем секцию, и вставляем
icon = ui_frame_error_sign_red
Это будет такой красный крест в круге. Запускаем, убиваем, обыскиваем и не вылетаем.
Итак, свежедобавленный монстр бегает, живет, нападает. Однако та же кошка по умолчанию невероятно сильна, убивает с одного удара, поэтому для нормальной жизни необходимо подредактировать секцию атаки.
Внимание!!!
Огромный минус в том, что убитое животное не попадает в статистику, хотя мы вроде все для этого сделали. С этим предлагаю разобраться самим. Подсказка: в энциклопедии кошек тоже нет
 
Форум » МОДОСТРОЕНИЕ » МОДОСТРОЕНИЕ » Новые монстры
  • Страница 1 из 1
  • 1
Поиск:
Статистика Top 5
Последние новости Самые отвечаемые темы Последние статьи Последние сообщения
Открытый плейтес... 17.07.2009
Сергей Григорови... 30.06.2009
"S.T.A.L.K.E.R.:... 11.06.2009
Рецензия S.T.A.L... 02.06.2009
Новые скриншоты ... 01.06.2009
Обсуждения 11
Пожелания и Пред... 7
Бар 6
Новости 3
Методы редактиро... 2
Тема Дата, Время Автор Раздел
А можно как иг... 22.09.2018, 03:18 emgobkokyl">emgobkokyl Другие игры
Методы редакти... 22.09.2018, 03:17 aleks-dnkey1">aleks-dnkey1 МОДОСТРОЕНИЕ
Новости 22.09.2018, 03:15 aleks-dnkey1">aleks-dnkey1 Call of Pripyat / Зов Припяти
Обсуждения 22.09.2018, 03:14 aleks-dnkey1">aleks-dnkey1 Call of Pripyat / Зов Припяти
sZone-online O... 10.04.2013, 04:29 stre_lokkkkk">stre_lokkkkk Другие игры
Шаблоны сталке... 11.02.2012, 20:45 Seo">Seo Моды на сталкера
Внешний вид са... 12.09.2009, 11:28 JOHN">JOHN Пожелания и Предложения
Создание новог... 12.09.2009, 11:11 aleks-dnkey1">aleks-dnkey1 МОДОСТРОЕНИЕ
Бар 12.09.2009, 10:52 aleks-dnkey1">aleks-dnkey1 Бар
Редактирование... 12.09.2009, 10:44 aleks-dnkey1">aleks-dnkey1 МОДОСТРОЕНИЕ
Новые пользователи Активные пользователи Лучшие комментаторы
sava636 0
hesheatshit 0
Voron4Reiha 0
emgobkokyl 4
molevlya 0
aleks-dnkey1 38
nose-anton 5
Санёк 5
JOHN 4
emgobkokyl 4
anton 4
БОВИЧ 4
stalker№1 3
Maskal 3
Klidrak 3
 КТО БЫЛ СЕГОДНЯ НА САЙТЕ


Зарег. на сайте
Всего: 1429
Новых за месяц: 1
Новых за неделю: 0
Новых вчера: 0
Новых сегодня: 0
Из них
Администраторов: 3
Модераторов: 1
Проверенных: 0
Обычных юзеров: 1425
Из них
Парней: 1353
Девушек: 76








Copyright MyCorp © 2020
Конструктор сайтов - uCoz