Участник
Пользователь
- Сообщения
- 57
- Реакции
- 155
- Помог
- 1 раз(а)
ReGameDLL предоставляет довольно широкий инструментарий для создания и модификации карт, однако не всем и всегда известно об этом функционале. Предлагаю делиться здесь полезной информацией и наработками.
Начнём с тех entity, которые могут быть использованы без необходимости в установке редактора карт или каких-либо обширных познаний. Достаточно установить значение CVar'а sv_use_entity_file 2 в server.cfg и использовать .ent файлы из папки cstrike/maps для внесения изменений.
Небольшой пример: добавив в .ent файл карты строки ниже, будем видеть некий текст через 10 секунд после старта раунда.
game_team_master позволяет активировать объекты только членам определённой команды. Он может работать в двух "режимах": в первом случае для game_team_master нужно задать имя и индекс команды, которой позволено активировать объект, а самому объекту (кнопке, триггеру, двери и т.п.) задать key "master", значением которого будет выступать имя game_team_master. Во втором "режиме" можно активировать чем-либо game_team_master, который, в свою очередь, активирует другую цель, если индекс команды активирующего игрока совпадает со значением ключа "teamindex" этой entity. game_team_master можно использовать для того, чтобы нажатие кнопок, открытие дверей, активация триггеров, выдача оружия и т.п. работали для конкретной команды.
Пример: добавляем это в .ent файл и получаем "HNS"/"Маньяка" для "бедных" без использования плагинов. Выдаём разную экипировку двум командам и затемняем экран только террористам.
game_team_set при его активации назначает указанной в поле "target" энтити game_team_master индекс команды активатора. Придумать самостоятельный рабочий пример для любой карты без использования кнопок и дверей, поэтому он будет несколько сумбурным.
Оружие в начале раунда получает та команда, игрок которой умер последним:
game_player_team также работает в паре с game_team_master и позволяет перемещать игроков без убийства за указанную в конкретном game_team_master команду. Флаги 2 и 4 позволяют перемещать игрока за команду, убив его или разорвав на куски.
Сумбурный пример — переводим всех заспавнившихся за CT:
Добавить на карту можно так, заменив значения поля "origin" на нужные координаты:
Разбор других энтити trigger_setorigin, trigger_random требует отдельного поста. Использование вышеописанных инструментов в связке с плагинами или даже вместо некоторых из них в определённых ситуациях может облегчить работу, однако минусом подобных модификаций карт является отсутствие совместимости с оригинальным gamedll.
Начнём с тех entity, которые могут быть использованы без необходимости в установке редактора карт или каких-либо обширных познаний. Достаточно установить значение CVar'а sv_use_entity_file 2 в server.cfg и использовать .ent файлы из папки cstrike/maps для внесения изменений.
- trigger_auto & trigger_once
Небольшой пример: добавив в .ent файл карты строки ниже, будем видеть некий текст через 10 секунд после старта раунда.
Код:
{
"classname" "trigger_auto"
"triggerstate" "1"
"delay" "10"
"target" "show_text"
}
{
"classname" "game_text"
"targetname" "show_text"
"message" "PLACEHOLDER TEXT"
"spawnflags" "1"
"channel" "1"
"fxtime" "0.25"
"holdtime" "1.2"
"fadeout" "0.5"
"fadein" "1.5"
"color2" "240 110 0"
"color" "100 100 100"
"effect" "0"
"y" "-1"
"x" "-1"
}
- game_team_master, game_team_set, game_player_team
game_team_master позволяет активировать объекты только членам определённой команды. Он может работать в двух "режимах": в первом случае для game_team_master нужно задать имя и индекс команды, которой позволено активировать объект, а самому объекту (кнопке, триггеру, двери и т.п.) задать key "master", значением которого будет выступать имя game_team_master. Во втором "режиме" можно активировать чем-либо game_team_master, который, в свою очередь, активирует другую цель, если индекс команды активирующего игрока совпадает со значением ключа "teamindex" этой entity. game_team_master можно использовать для того, чтобы нажатие кнопок, открытие дверей, активация триггеров, выдача оружия и т.п. работали для конкретной команды.
Пример: добавляем это в .ent файл и получаем "HNS"/"Маньяка" для "бедных" без использования плагинов. Выдаём разную экипировку двум командам и затемняем экран только террористам.
Код:
{
"target" "fade_T"
"targetname" "game_playerspawn"
"delay" "0"
"triggerstate" "2"
"teamindex" "1"
"classname" "game_team_master"
}
{
"targetname" "fade_T"
"duration" "1"
"holdtime" "15"
"renderamt" "255"
"rendercolor" "0 0 0"
"spawnflags" "5"
"classname" "env_fade"
}
{
"master" "master_T"
"weapon_knife" "1"
"classname" "game_player_equip"
}
{
"targetname" "master_T"
"delay" "0"
"triggerstate" "0"
"teamindex" "1"
"classname" "game_team_master"
}
{
"targetname" "master_CT"
"delay" "0"
"triggerstate" "0"
"teamindex" "2"
"classname" "game_team_master"
}
{
"weapon_smokegrenade" "1"
"weapon_flashbang" "2"
"master" "master_CT"
"classname" "game_player_equip"
}
Оружие в начале раунда получает та команда, игрок которой умер последним:
Код:
{
"master" "equipment_team_master"
"weapon_knife" "1"
"weapon_usp" "1"
"classname" "game_player_equip"
}
{
"targetname" "equipment_team_master"
"delay" "0"
"triggerstate" "0"
"teamindex" "-1"
"classname" "game_team_master"
}
{
"target" "equipment_team_master"
"targetname" "game_playerdie"
"delay" "0"
"classname" "game_team_set"
}
Сумбурный пример — переводим всех заспавнившихся за CT:
Код:
{
"targetname" "moveto_master"
"teamindex" "2"
"classname" "game_team_master"
}
{
"targetname" "game_playerspawn"
"target" "moveto_master"
"classname" "game_player_team"
}
- item_airbox
Добавить на карту можно так, заменив значения поля "origin" на нужные координаты:
Код:
{
"origin" "0 0 0"
"sprite_model" "sprites/blueflare2.spr"
"renderfx" "0"
"rendermode" "0"
"renderamt" "255"
"rendercolor" "0 0 0"
"item" "0"
"count" "1"
"angles" "0 0 270"
"avelocity" "0 -150 0"
"flyup" "3"
"delay" "0"
"sprite_renderfx" "0"
"sprite_rendermode" "5"
"sprite_renderamt" "255"
"sprite_rendercolor" "0 0 0"
"sprite_scale" "1.0"
"sprite_framerate" "10"
"classname" "item_airbox"
}