САЙТ В ПРОЦЕССЕ РАЗРАБОТКИ
Главное меню сайта
Делаем сами
настройки игры
качаем общие файлы
качаем для клиента
качаем для сервера
качаем проги и др.
трюки
разное
урок 13.4 как узнать устройство и изменить карту без декомпиляции. декомпиляция 


Узнай устройство карты без декомпиляции
В этой статье мы рассказываем о том, как можно узнать устройство какого-либо события на карте, которая не декомпилируется. Под событием мы подразумеваем систему взаимосвязанных объектов, которые создают какой-то один эффект, например, летающая птица на De_Survivor или авиаудар на De_Torn.
Для опытных декомпиляторщиков не секрет, что некоторые карты не декомпилируются :) Возможно, это происходит из-за каких-то ограничений внутри программ-декомпиляторов, потому как не декомпилируются, в основном, большие по размеру карты.
Мы не будем декомпилировать карты, а узнаем ее устройство более цивильным методом. Возмем, к примеру, авиаудары на карте De_Torn. Как они сделаны? (Если Вы не знаете, о каких авиаударах идет речь, то можете прочитать об этом в статье из раздела «Секреты».
Консольная команда: developer 2
Загружаем интересующую нас карту карту и вводим в консоли: developer 2. Теперь у нас на экране будут отображаться сообщения обо всех события на карте (активации объектов, где что нажалось, какой звук проигрался и т.д.).
Бегая по карте, мы обнаружили, что активируется некий объект jetmulti. Им оказался multi_manager. При этом на экране появилась строчка:
Found: multi_manager Firing: jetmulti
Затем мы открыли карту (de_torn.bsp) во втроенном редакторе менеджера FAR (можно использовать и TotalCom) и, так как информация об энтити-объектах хранится внутри карт в чистом виде, то можно отыскать объект по имени jetmulti, что мы и сделали. В свойствах multi_manager'а мы нашли имена всех объектов, которые он активирует в игре. Это были и самолеты (которые на поверку оказались обычными дверями, которые func_door :), и звуки, и прочие объекты. Дальше мы составили схему работы всего авиаудара — «кто» «кого» и когда активирует.
Подобным же образом можно определить устройство объектов и на других картах.

Изенение карты без компиляции
В этой статье мы рассмотрим быстрый и довольно удобный способ внесения изменений в готовую откомпилированную карту без запуска компиляции. Таким способом можно вносить изменения в любые карты, даже не имея их исходников.
Прежде всего, необходимо, чтобы у Вас была в наличии официальная версия утилит ZHLT 2.5.3. Сами компиляторы нам не понадобятся, но вместе с ними, в архиве, находится утилита Ripent (ripent.exe), которую мы будем использовать.
В каких случаях полезна утилита Ripent?
Если Вы хотите поменять прозрачность стекла, воды, других объектов
Указать правильный угол открытия двери
Изменить скорость движения машины
Сделать объект невидимым
Подправить или добавить места рождения игроков
Изменить название картинки неба
... и так далее, примеров можно привести огромное множество.
Представьте ситуацию, когда Вы компилируете карту в течении 2-3 часов, и совершенно случайно в ее свойствах забыли указать название картинки неба. Это означает, что на карте будет использовано стандартное небо (desert), вместо того, какое хотели использовать Вы.
Чтобы не компилировать карту заново, можно воспользоваться утилитой Ripent и дописать в нужном месте название неба.
Как это работает?
Информация об энтити-объектах в готовых картах (файлах BSP) содержится в простом текстовом виде. Вы и сами можете в этом убедится, открыв любую BSP карту в текстовом редакторе, например, во встроенном редакторе файлового менеджера FAR или TotalCom. После нескольких тысяч строк, состоящих из непонятных нам символов, начнется текстовое описание всех энтити-объектов, используемых на карте.
Наша задача, а, точнее, задача утилиты Ripent заключается в изъятии всей текстовой информации из BSP-файла и обратное внесение измененных данных.
Описание энтитей любой карты начинается так:
"wad" "c:\games\hl\valve\halflife.wad;c:\games\hl\valve\liquids.wad;"
"mapversion" "220"
"classname" "worldspawn"
"MaxRange" "8192"
"skyname" "dm3hackd_"
"message" ""
"classname" "worldspawn"
Более подробно о значении этих и других параметров мы рассказываем в конце статьи.
Применяем Ripent
Ripent — утилита, работающая из командной строки, не имеющая своего графического интерфейса.
Извлекаем текстовую информацию об энтити-объектах
Скопируйте готовую BSP-карту в папку, где находится утилита Ripent
Выберите команду «Пуск -> Выполнить...» («Start -> Run...»)
Нажав кнопку «Обзор» («Browse»), укажите путь к утилите Ripent
В конце пути после кавычек допишите след. параметры: -export -texdata 1 имя_карты
Строка запуска программы для карты de_dust будет выглядеть так:

Буквально через несколько мгновений в директории с утилитой и картой появится новый файл, в нашем случае это был бы de_dust.ent, а в общем случаем имя_карты.ent.
Не смотря на расширение, это обычный текстовый файл, который можно отредактировать в любом текстовом редакторе, например, Блокноте. Единственное, не забудьте после внесения изменений сохранить файл с расширением *.ent, а не txt.
Вносим измененную информацию обратно в BSP-карту
Давайте сразу же посмотрим, как проделывается обратная операция по внесению измененных данных в карту.
Выполняем первые 3 пункта, как описано выше, но теперь вместо -export пишем -import (см. рис. ниже).

В этом случае вся информация из файла имя_карты.ent будет внесена в откомпилированную BSP-карту. Изменения Вы сможете увидеть уже при следующей загрузке карты. Файл *.ent можно удалить.
Свойства энтити-объектов внутри BSP-файла
Внешний вид свойств энтити-объектов внутри BSP-файла несколько отличается от того, что мы привыкли видеть в редакторе. Например, вместо параметра Name используется запись в виде "targetname", вместо флагов (small radius, start on, toggle и т.д.) используются цифровой код и т.д. Чтобы Вы могли найти и правильно изменить нужную информацию, необходимо знать соответствия между этими параметрами.
Ниже мы приводим таблицу, где представлены основные свойства энтити-объектов в том виде, как они отображаются в редакторе и внутри BSP-карты.

Таким образом, если нам требуется изменить название картинки неба, мы находим в файле *.ent строку со словом "skyname" и после этого слова точно также в кавычках вписываем название неба.
     Например: "skyname" "desert".
Чтобы изменить степень прозрачности стекла (например, func_breakable с именем glass1), необходимо в файле *.ent найти объект с "targetname" "glass1" и изменить параметр "renderamt" "". Точно также изменяются и все остальные свойства энтити-объектов.
После того, как все необходимые изменения будут внесены, сохраняем *.ent файл и запускаем утилиту Ripent с параметром -import.
Недостатки Ripent
Достоинства Ripent очевидны — не нужно повторять многочасовую компиляцию, если допущена незначительная ошибка в свойствах энтити-объектов. Но есть и свои недостатки.
Используя Ripent, Вы должны помнить, что исходник карты в формате RMF или MAP не обновляется! Обновляется лишь готовая BSP-карта. Соответственно, если затем Вы будете повторно компилировать карту, то сделанные изменения в свойствах энтити-объектов просто пропадут, т.к. исходники карты не меняются! Поэтому или используйте Ripent для внесения незначительных изменений (исправления досадных ошибок и пр.) в окончательный вариант карты, или же записывайте все сделанные изменения и затем в редакторе правьте исходник карты.
Несколько интересных фактов
Думаем Вам интересно будет узнать, что список свойств энтити-объектов каждый раз передается клиенту при подключении к серверу.
Благодаря Ripent мы можем изменить свойства энтити-объектов на любых BSP-картах. Можно, например, сделать мост на De_Aztec (из CS 1.5) прозрачным. Для этого нужно найти объект func_illusionary, отвечающий за изображение моста и выставить параметры: "rendermode" "2" и "renderamt" "0" (в редакторе это выглядело бы как: Render Mode: "Texture" и FX Amount "0"). Мост «исчезнет». Правда, найти нужный func_illusionary, который и является мостом, довольно трудно, т.к. на Ацтеке этих объектов (func_illusionary) несколько.
Помните одно — при подключении к игровому серверу с нормальным Ацтеком, ваш мост НЕ будет прозрачным, т.к. на сервере обычная карта с неизмененными энтити-объектами. Также необходимо знать, что такие параметры, как цвет источника света (light; light_spot; light_environment) менять бесполезно, т.к. освещение просчитывается при компиляции. Ну, а такие параметры, как степень прозрачности объектов, режимы их отображения (texture; solid; additive и т.д.), скорость движения машины, время до автоматического закрытия двери, список объектов внутри multi_manager, просто имена объектов, поле target, название неба и некоторые другие параметры можно менять.
Так что Ripent довольно забавная и полезная штука, если знать как ее использоваться. Ну, а Вы уже знаете :)

О декомпиляции карт
Из этой статьи Вы узнаете, что такое декомпиляция карты, какими программами она осуществляется, и какие ошибки при этом появляются.
Что такое декомпиляция?
Декомпиляция — процесс обратный компиляции, т.е. это преобразование карты из формата BSP в формат MAP. Декомпиляция осуществляется специальными программами, которые мы рассмотрим чуть ниже.
Цели декомпиляции
Декомпиляция карт осуществляется с двумя целями:
Посмотреть устройство карты, как сделан тот или иной объект, узнать его свойства
На основе оригинальной карты сделать свою версию
Что касается первого пункта, то в этом случае декомпиляция весьма полезна в особенности для начинающего маппера. Есть мапперы, которым легче прочитать статью, чтобы узнать, например, как сделать лестницу, а есть такие, которым интереснее самим посмотреть устройство и свойства объектов. Кстати, мы считаем, что мапперы-самоучки гораздо быстрее начинают разбираться что к чему в маппинге и лучше запоминают свойства объектов. Поэтому декомпиляция с этой стороны вещь чрезвычайно полезная.
Немало и тех, кто хочет «малой кровью» создать свою карту. Они просто берут декомпилируют de_dust, добавляют повсюду ящики, строят новые проходы и называют свою карту de_dust7500 или de_dust_best_forever... Чтож, остается только посочувствовать таким «мапперам». Жаль, что у них не хватает собственных мыслей, чтобы придумать интересную карту, хотя желание создавать есть, а значит еще не все потеряно :)
Мы надеемся, что знания, полученные на нашем сайте, помогут Вам стать настоящим маппером, имеющим свой узнаваемый стиль в создании карт; маппером, на картах которого с удовольствием будут играть многие люди. А когда это произойдет мы вместе с Вами скажем: «Долой плагиат!» :)
Программы для декомпиляции
Нам известны две программы для декомпиляции карт: WinBSPC и BSP2MAP. Хочется только заметить, что работают они одинаково и никакой разницы в качестве получаемой декомпилированной карты нет (а качество весьма низкое, об этом ниже).
Качество декомпилированных карт
Большое количество битых, неправильной формы брашей
Ошибки LEAK, т.е. дырки на карте
Невыровненные текстуры
Отсутствие оригинальных CLIP-брашей
Различные глюки с брашевыми энтити-объектами
Всего выше перечисленного сполна хватает, чтобы навсегда отпало желание декомпилировать карты с целью создания новых версий известных хитов.
Почему не декомпилируются некоторые карты?
Этот вопрос интересует многих начинающих мапперов. Опытные же мапперы, создающие свои карты, интересуются наоборот тем, как защитить свое творение от чужих рук, как бы сделать карту недекомпилируемой?
К сожалению, а может и, к счастью, мы не знаем ответов на эти вопросы. Однако было замечено, что не декомпилируются большие по размеру карты. Из известных не декомпилируются: de_torn и de_survivor, однако это не помешало узнать нам устройство авиудара и летающей птицы на этих картах (статьи об этом Вы можете найти в разделе «Продвинутый маппинг»). Действительно, если Вы прочитаете статью о том, как узнать устройство карты без декомпиляции, то поймете, что карту необязательно декомпилировать.

Форма входа
Поиск по сайту
Наш опрос
Оцените наш сайт
Всего ответов: 14
Мини-чат
Статистика

Онлайн всего: 8
Гостей: 8
Пользователей: 0
qwertys © 2025
Сделать бесплатный сайт с uCoz