Пользователь
wellasgood
Кидала, мошенник, вымогатель
- Сообщения
- 1,409
- Реакции
- 182
- Помог
- 2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Здравствуйте!
Хотел бы поделиться своей наработкой, заодно рассказать как добавлять сущности (BSP) на карту Cs1.6
Давно я задался вопросом, как же добавить воду на карту. После долгих поисков так ничего и не нашел.
Позже мне помогали люди с форума, было пару способов, один сложный, другой не очень, его я и выбрал, спасибо: Garey
Минус данного способа, что нужно постоянно редактировать сущности BSP под нужные карты. (если нужно на разных, подгонять размеры)
Плюс данного способа, что не нужно редактировать саму карту, на которой хотим добавить. (получается мы подгружаем BSP в BSP, точно также, если бы мы редактировали карту в ручную, перекомпилировали и игроки бы ее перекачивали)
Вопрос: Как же добавить сущность (BSP) на карту?
Ответ: Очень просто, для этого нужно сделать так:
При добавлении сущности на карту, нужно учитывать её положение на карте (координаты).
BSP сущность можно создать с нуля, иначе отредактировать можно такими программами как J.A.C.K. (прежде декомпилировав например BSP2MAP)
Компилировать отредактированные файлы в BSP можно с помощью ZHLT
И так:
1. у нас есть сущность воды BSP (квадрат), с помощью J.A.C.K. я подогнал размеры и координаты специально под карту de_dust2.
2. так же имеются сущности стен (
Далее нам нужно сделать небольшой плагин, для загрузки на карту сущностей и правильном их функционировании (а также поведения игроков в воде и тп):
Код предоставлен в экспериментальном виде. (так как наработка)
На выходе получаем вот такое:
Бонусом прикрепляю готовые файлы сущностей (вода + стены).
Спасибо за внимание! Хотелось бы развить эту тему!
Хотел бы поделиться своей наработкой, заодно рассказать как добавлять сущности (BSP) на карту Cs1.6
Давно я задался вопросом, как же добавить воду на карту. После долгих поисков так ничего и не нашел.
Позже мне помогали люди с форума, было пару способов, один сложный, другой не очень, его я и выбрал, спасибо: Garey
Минус данного способа, что нужно постоянно редактировать сущности BSP под нужные карты. (если нужно на разных, подгонять размеры)
Плюс данного способа, что не нужно редактировать саму карту, на которой хотим добавить. (получается мы подгружаем BSP в BSP, точно также, если бы мы редактировали карту в ручную, перекомпилировали и игроки бы ее перекачивали)
Вопрос: Как же добавить сущность (BSP) на карту?
Ответ: Очень просто, для этого нужно сделать так:
C++:
public plugin_precache()
{
precache_model("maps/water2.bsp");
}
BSP сущность можно создать с нуля, иначе отредактировать можно такими программами как J.A.C.K. (прежде декомпилировав например BSP2MAP)
Компилировать отредактированные файлы в BSP можно с помощью ZHLT
И так:
1. у нас есть сущность воды BSP (квадрат), с помощью J.A.C.K. я подогнал размеры и координаты специально под карту de_dust2.
2. так же имеются сущности стен (
func_wall : texture glass
), которые были подогнаны под воду (по бокам).Далее нам нужно сделать небольшой плагин, для загрузки на карту сущностей и правильном их функционировании (а также поведения игроков в воде и тп):
C++:
#include <amxmodx>
#include <fakemeta_util>
new WaterEntity;
new const BSP_RESOURCES[][] =
{
"maps/water2.bsp",
"maps/wall_new5.bsp",
"maps/wall_new4.bsp",
"maps/wall_new6.bsp"
};
public plugin_precache()
{
register_plugin("water_room_dd2", "1.0.0", "wellasgood");
new Float:Origin[3];
precache_model(BSP_RESOURCES[0]);
WaterEntity = fm_create_entity("func_water");
fm_set_kvd(WaterEntity,"classname","func_water")
fm_set_kvd(WaterEntity,"rendermode","2")
fm_set_kvd(WaterEntity,"renderamt","130")
fm_set_kvd(WaterEntity,"skin","-3")
fm_set_kvd(WaterEntity,"WaveHeight","5")
fm_entity_set_model(WaterEntity, BSP_RESOURCES[0]);
fm_entity_set_origin(WaterEntity, Origin);
fm_DispatchSpawn(WaterEntity);
fm_drop_to_floor(WaterEntity);
precache_model(BSP_RESOURCES[1]);
new GlassEntities1 = fm_create_entity("func_wall");
fm_set_kvd(GlassEntities1,"classname","func_wall");
fm_set_kvd(GlassEntities1,"rendermode","2");
fm_set_kvd(GlassEntities1,"renderamt","100");
fm_entity_set_model(GlassEntities1, BSP_RESOURCES[1]);
fm_entity_set_origin(GlassEntities1, Origin);
fm_DispatchSpawn(GlassEntities1);
fm_drop_to_floor(GlassEntities1);
precache_model(BSP_RESOURCES[2]);
new GlassEntities2 = fm_create_entity("func_wall");
fm_set_kvd(GlassEntities2,"classname","func_wall");
fm_set_kvd(GlassEntities2,"rendermode","2");
fm_set_kvd(GlassEntities2,"renderamt","100");
fm_entity_set_model(GlassEntities2, BSP_RESOURCES[2]);
fm_entity_set_origin(GlassEntities2, Origin);
fm_DispatchSpawn(GlassEntities2);
fm_drop_to_floor(GlassEntities2);
precache_model(BSP_RESOURCES[3]);
new GlassEntities3 = fm_create_entity("func_wall");
fm_set_kvd(GlassEntities3,"classname","func_wall");
fm_set_kvd(GlassEntities3,"rendermode","2");
fm_set_kvd(GlassEntities3,"renderamt","100");
fm_entity_set_model(GlassEntities3, BSP_RESOURCES[3]);
fm_entity_set_origin(GlassEntities3, Origin);
fm_DispatchSpawn(GlassEntities3);
fm_drop_to_floor(GlassEntities3);
}
public plugin_init()
{
register_clcmd("water+", "pWater");
register_clcmd("water-", "mWater");
}
public mWater(id)
{
new Float:origin[3];
pev(WaterEntity, pev_origin, origin);
origin[2] -= 15.0;
set_pev(WaterEntity, pev_origin, origin);
}
public pWater(id)
{
new Float:origin[3];
pev(WaterEntity, pev_origin, origin);
origin[2] += 15.0;
set_pev(WaterEntity, pev_origin, origin);
}
Код предоставлен в экспериментальном виде. (так как наработка)
На выходе получаем вот такое:
Бонусом прикрепляю готовые файлы сущностей (вода + стены).
Спасибо за внимание! Хотелось бы развить эту тему!
Вложения
-
53.1 KB Просмотры: 33
Последнее редактирование: