Удаление/изменение параметров энтити в скомпилированных картах

Сообщения
1,536
Реакции
2,319
Помог
39 раз(а)
Автор статьи: AndrewZ

Приветствую!
В моей жизни часто бывали ситуации, когда было необходимо удалить лишнюю лестницу, дверь, ящик, звук или же что угодно из уже скомпилированной карты. Самые главные преимущества этого способа: всё происходит без вмешательства amxx, и игрокам не нужно перекачивать карту заново. К сожалению, полностью карту изменить нельзя, однако, многое поддается редактированию.
Можно изменить любые параметры любых энтити на карте, а также, добавить свои (исключение — брашевые энтити, их добавить нельзя).


Удаление энтити
Рассмотрим удаление на простом примере: удалим звук дождя и сам дождь со стандартной карты de_aztec.
Берем любой редактор, лично мне нравится EntEd.zip

Интерфейс программы чрезвычайно прост. В левой части находится список всех энтити на карте, а в правой их подробные параметры:
KbYd.png

1. Убираем звук дождя.
Открываем с помощью чудесной программы карту, и ищем (встроенным поиском, либо вручную) нужную нам энтити. Звуки, как правило, воспроизводит ambient_generic. В параметрах указано "message" "ambience/rain.wav", а это как раз и есть звук дождя.
tUAU.png
На скрине я выделил все параметры одной из ambient_generic.

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

2. Убираем сам дождь.
И так, после первой части туториала вы стали профессионалом в этом деле, поэтому процесс удаления самого дождя будет для вас не труден.
Дождь создается на карте с помощью env_rain.
Находим её, и удаляем аналогично звукам.
zLB9.png

Готово! Осталось сохранить карту (File->Save As..) и залить её на ваш сервер с заменой старой.
  • Таким же образом можно удалить и брашевые энтити, например, воду (func_water).



Редактирование энтити

1. Редактирование точечных энтити.
Допустим, вы решили не удалять звук дождя, а вставить вместо него великолепный звук Оперы из карты cs_italy, чтобы порадовать ушки ваших любимых игроков.
Находим нужную вам ambience_generic, и просто заменяем значение параметра "message" на "ambience/Opera.wav".
было
Z1Y0.png

стало
76ri.png

Вот и всё! (Не забудьте сохранить и перезаписать )
  • Нельзя редактировать параметры солнца и лампочек (light_environment, light..). Точнее, редактировать-то их можно, но всё освещение на карте просчитывается во время компиляции карты, поэтому изменить выйдет лишь освещение моделей.

2. Редактирование брашевых энтити.

Окей, а можно ли вращающуюся дверь на карте cs_assault сделать разрушаемой? — Да запросто! (Шучу, немного сложнее). И она перестанет открываться.
Открываем карту cs_assault с помощью EntEd, и находим func_door_rotating — эта энтити определяет вращающуюся дверь.
ehM9.png

Теперь нам нужно поменять все эти параметры на те, что соответствуют энтити func_breakable — она определяет разрушаемый объект, типа решетки вентиляции или стёкол внутри склада. Найдем их в этой же карте, чтобы нам было проще их копировать.
Внимание! Никогда НЕ изменяйте первый параметр "model", т.к именно он указывает на то, какой "браш" будет иметь данные свойства.

Я не использовал никакие просмотрщики карт, а просто пробежался по списку и нашел такие параметры:
Код:
{
"model" "*61"
"rendermode" "0"
"renderfx" "0"
"explodemagnitude" "0"
"spawnobject" "0"
"explosion" "0"
"material" "1"
"health" "25"
"delay" "0"
"rendercolor" "0 0 0"
"renderamt" "0"
"classname" "func_breakable"
}


Судя по всему, это разрушаемая деревянная табличка на карте. Об этом говорит "material" "1", так как 1 — означает дерево (подробнее смотрите в параметрах func_breakable), ну а больше деревянных вещей на карте нет. Ну и замечательно для примера. Возьмем и сделаем параметры func_door_rotating точно такими же (кроме параметра "model"!)
было

B9UU.png

стало
6Lj9.png

По желанию, можете изменить параметр "material", например, на 2 — металл, и параметр "health" — здоровье, на любое количество, которое хотите. И вообще, всё что угодно можете менять, только вначале разберитесь, что к чему

Готово!
  • Редактировать можно любые параметры любых энтити, главное, это понимать, что выделаете. В этом деле вам поможет список (почти)всех энтити и их параметров.
  • Для легкого, точного и быстрого поиска нужного объекта, рекомендую использовать программы типа BSPViewer.
 

Download all Attachments

Сообщения
2,288
Реакции
1,737
Помог
31 раз(а)
а на dust2 нельзя что ли ящики деревянные отредактировать?
 
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
Pokemoshka, многие объекты на картах не являются entity. Являются частью карты - типа: брашевые (brush-based).
cs-mapper.com написал(а):
  • Энтити-объекты внешне могут походить на обычные браши или же могут совершенно быть незаметны в игре (не иметь формы). Отсюда мы имеем разделение энтитей на два типа: брашевые (brush-based) и точечные (point-based). Например, открывающаяся дверь — это брашевый энтити-объект, его видно при игре; а вот, например, источник света — точечный энтити (его игроки в игре не видят, но он есть

    Параметры энтити-объектов подробно расписаны в отдельном разделе сайта: «Энтити».
Вот вводная информация о картах.
http://cs-mapper.com/tutorials/t1terms_main32.shtml
 
Сообщения
15
Реакции
19
Не могу найти полный список entity. Ссылки выше уже не работают. И даже Valve по адресу developer.valvesoftware.com/wiki/List_of_entities сейчас (5 июля 2018, в 13:00) пишет "undergoing maintenance".

1. Меня интересует можно ли с помощью редактирования entity изменить параметры зоны покупки? То есть, зона покупки это entity или что-то другое? И если entity, то какое именно? В частности можно ли редактированием entity разрешить покупку, если она запрещена? То есть, сама зона покупки на карте есть, и я могу открыть меню покупки, но при попытке купить мне пишут, что покупать нельзя.

2. Можно лис помощью редактирования entity совсем убрать зону покупки? В смысле не столько убрать её, сколько сделать так чтобы даже меню покупки просто не появлялось.

3. На некоторых картах невозможно ничего купить, но при этом игроку сразу дают оружие и броню, но они не лежат на земле, а кажется опускаются на игрока сверху (например, на карте aim_umx_2). Это тоже entity? То есть, например, я хочу изменить оружие, которое даётся таким образом. В смысле мне нужно, чтобы не на земле оружие лежало, а именно давалось игроку принудительно.

4. Говорят, что существуют такие entity, которые могут забрать у игрока определённое оружие. Подскажите какие именно, то есть, их название и параметры, кроме тех параметров, которые у всех entity встречаются.
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
Не могу найти полный список entity.
Список энтити я кинул в архив.

То есть, зона покупки это entity или что-то другое? И если entity, то какое именно?
Это энтити - func_buyzone.

2. Можно лис помощью редактирования entity совсем убрать зону покупки? В смысле не столько убрать её, сколько сделать так чтобы даже меню покупки просто не появлялось.
Я могу ошибаться, но карта без buyzone будет работать не стабильно или вообще не будет. Точно не знаю.

3. На некоторых картах невозможно ничего купить, но при этом игроку сразу дают оружие и броню, но они не лежат на земле, а кажется опускаются на игрока сверху (например, на карте aim_umx_2). Это тоже entity? То есть, например, я хочу изменить оружие, которое даётся таким образом. В смысле мне нужно, чтобы не на земле оружие лежало, а именно давалось игроку принудительно.
За это отвечает энтити game_player_equip и параметры к ней.

4. Говорят, что существуют такие entity, которые могут забрать у игрока определённое оружие. Подскажите какие именно, то есть, их название и параметры, кроме тех параметров, которые у всех entity встречаются.
Смотрите энтити player_weaponstrip
5 Июл 2018
Новый точечный рисунок.png
 

Download all Attachments

Последнее редактирование:
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
зона покупки это entity или что-то другое?
Это entity-объект. называется func_buyzone
Доступные параметры entity можно найти в fgd файле
можно ли редактированием entity разрешить покупку, если она запрещена?
Можно и даже с помощью простого плагина [#2].
Можно ли с помощью редактирования entity совсем убрать зону покупки?
Можно, однако, лучше делать это плагином. (Причина)
Код:
/*
1) https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/mapinfo.cpp#L64-L65
2) https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/multiplay_gamerules.cpp#L1762
*/

#include <amxmodx>
#include <reapi>

public plugin_init()
{
    register_plugin("Restrict buy on map", "0.0.1b", "wopox1337");

    set_member_game(m_bCTCantBuy, true); // Change when you need it
    set_member_game(m_bCTCantBuy, true); // Change when you need it
}
или изменением keyvalue "buying" у класса "info_map_parameters"
игроку сразу дают оружие и броню, но они не лежат на земле, а кажется опускаются на игрока сверху (например, на карте aim_umx_2). Это тоже entity?
Да, это всё entity-объекты.
player_weaponstrip - отбирает всё оружие у игрока;
game_player_equip - выдаёт игроку набор оружия;
armouty_entity - оружие лежащее на земле.
Если будет интересно - нагуглишь сам.

существуют такие entity, которые могут забрать у игрока определённое оружие.
я таких специальных не встречал. Не могу ответить точно. Возможно, кто-то знает.
 
Последнее редактирование:
Сообщения
702
Реакции
475
Помог
10 раз(а)
Я могу ошибаться, но карта без buyzone будет работать не стабильно или вообще не будет. Точно не знаю.
Если убрать зоны покупок, то после спауна для игрока будет доступно закупочное меню на N секунд(квар) и только там, где он заспаунился. Если блокировать то, задав всем байзонам SOLID_NOT (насчет оффсета ничего не скажу, не пробовал; могут быть свои нюансы)
 
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
не лежат на земле, а кажется опускаются на игрока сверху
Потому-что entity с оружие spawn'ятся на координатах spawn'а игрока. Далее, по коду вызывается физика движения объекта (movetype_toss), а так же собитие Touch при касании игрока.
5 Июл 2018
могут быть свои нюансы
Нюансы эти характерны только для обычного GameDLL от Valve. В ReGameDLL - поправили это.
 
Последнее редактирование:
Сообщения
15
Реакции
19
Всем большое спасибо, но хочу кое-что уточнить.

wopox1337, уточняющий вопрос по поводу "совсем убрать зону покупки". Есть такие карты, на которых при нажатии кнопки для вызова меню покупки, оно не открывается, то есть, игроку не говорят, что покупать запрещено, а просто даже меню покупки не появляется на экране. Мне интересно это сделано удалением зоны покупки или как-то ещё? Возможно, для этой цели лучше сделать точки респауна за пределами зоны покупки? Или это будет серьёзной ошибкой?

По поводу "забрать у игрока определённое оружие" я просто неправильно понял текст вот тут www.joe.to/cstrike/ent. Там тоже о редактировании entity, и написано "to strip weapons from players". Это может означать как "to strip all weapons from players", так и "to strip specific weapons from players". То есть, это я просто попытался угадать и ошибся, но понял, что ошибся только сейчас.
 
Последнее редактирование модератором:
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
Мне интересно это сделано удалением зоны покупки или как-то ещё?
при удалении func_buyzone игрок сможет закупаться из за проверок в GameDLL, так как находится в непосредственной близости от своего spawn entity
Есть такие карты, на которых при нажатии кнопки для вызова меню покупки, оно не открывается, то есть, игроку не говорят, что покупать запрещено, а просто даже меню покупки не появляется на экране.
далеко ходить не нужно, если взглянуть на 35hp_2 карту - там игрок spawn'ится сверху (на Youtube много видео о баге) и далее остаётся в frezetime на земле (в далеке от spawn-entity). Или дайте пример такой карты, я не могу припомнить.
Или же использовать вариант, предложенный BalbuR выше.
 
Последнее редактирование:
Сообщения
702
Реакции
475
Помог
10 раз(а)
wopox1337, уточняющий вопрос по поводу "совсем убрать зону покупки". Есть такие карты, на которых при нажатии кнопки для вызова меню покупки, оно не открывается, то есть, игроку не говорят, что покупать запрещено, а просто даже меню покупки не появляется на экране.
Если блокировать то, задав всем байзонам SOLID_NOT
таким образом вы сделаете объект неосязаемым, где последний не сможет передавать игроку статус байзоны
 
Сообщения
141
Реакции
201
Помог
5 раз(а)
wopox1337, уточняющий вопрос по поводу "совсем убрать зону покупки". Есть такие карты, на которых при нажатии кнопки для вызова меню покупки, оно не открывается, то есть, игроку не говорят, что покупать запрещено, а просто даже меню покупки не появляется на экране. Мне интересно это сделано удалением зоны покупки или как-то ещё? Возможно, для этой цели лучше сделать точки респауна за пределами зоны покупки? Или это будет серьёзной ошибкой?
Скорее всего выносят func_buyzone обеих команд за пределы игрового пространства.
 
Сообщения
107
Реакции
107
Желательно переименовывать карту после внесения изменений? :dirol: А то будут потом в инете 5 разных карт с 1 названием.
 
Последнее редактирование:
Сообщения
2,713
Реакции
2,995
Помог
59 раз(а)
QuakeR, а лучше изменения осуществлять плагином.
 
Сообщения
702
Реакции
475
Помог
10 раз(а)
Желательно переименовывать карту после внесения изменений?
а есть разница? для клиента, насколько я понял, важна только брашевая часть, все остальное он узнает у "сервера". Да, может он и скачает отредактированную карту, но сервер все равно выставит те значения, что есть "на его карте"
 
Сообщения
107
Реакции
107
BalbuR, Вот смотри допустим кому то понравилась карта и он ее видит впервые на сервере. А она исправленая, он же не знает что в ней внесены изменения. И выкладывает скаченный ресурс получается название одинаковое а картишки разные. Конечно не тот пример но можно вспомнить DE_DUST2_2X2_HAMA)))
 
Сообщения
89
Реакции
139
Можно ли плагином управлять entity объектом, который имеет определенный параметр name ?
Например сделать кнопку на карте, с параметром name "restart", чтобы при нажатии на эту кнопку выполнялась команда sv_restartround 1...
 
Сообщения
2,288
Реакции
1,737
Помог
31 раз(а)
Tranquillity Ссылки на cs mapper уже не работают. Обновите пожалуйста
 
Последнее редактирование:
Сообщения
27
Реакции
-1
Добрый день, подскажите, как сделать так, чтобы в руках был 1 нож без пистолетов
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу