- Регистрация
- 12 Янв 2024
- Сообщения
- 76
- Реакции
- 10
- Баллы
- 8
В СleanMapMut.ini можно задать список классов, объекты которых мы хотим удалить до начала или во время игры.
Переменные настройки мутатора
TimerEnabled = true / false (хотим ли мы чтобы объекты удалялись во время игры или нет)
TimerInterval = 5 (как часто с карты удаляются объекты, если TimerEnabled == true)
ActorsForDestroy=KFMod.KFAmmoPickup (указание на класс объекты которого мы хотим удалить)
таких ActorsForDestroy может быть сколько угодно
Например, при таких настройках
TimerEnabled=True
TimerInterval=5
ActorsForDestroy=KFMod.KFAmmoPickup
ActorsForDestroy=KFMod.SinglePickup
ActorsForDestroy=KFMod.KnifePickup
мы удаляем перед стартом все разбросанные по карте пистолеты 9мм, ножи и патроны и потом, каждые 5 секунд, удаляем эти объекты, если они появляются на карте (кто то умирает с ножом в руке или выкидывает пистолет)
Так как указывать можно любые классы, то мутатор можно использовать для удаления, например, оружия из рук игроков, или каких-то монстров, или проджектайлов (например, можно убирать все мины или светящиеся палочки)
В общем тут всё зависит от воображения...
Код простой
Замечания:
1. Можно ещё добавить проверку if(!a.bStatic), чтобы избежать вылетов при случайном указании на не динамический объект
2. Всегда надо задавать полный путь. Если задать не Engine.Pickup, а Pickup - ничем хорошим это не закончится...
Файл можно получить по ссылке:
CleanMapMut.zip
https://disk.yandex.ru/d/wxI9xWZdl0PbeA
Добавлять в виде CleanMapMut.CleanMapMut
Ну и те частные 3 варианта мутатора, из-за которых и возникла темка
1. Удаляет всё что валяется на карте перед началом карты (заново больше не спавнится ничего)
то же самое, что общий мутатор при след. параметрах
ActorsForDestroy=Engine.Pickup
TimerEnabled=false;
2. Всё удаляет кроме брони
3. Удаляет только ящики с патронами
то же самое, что общий мутатор при след. параметрах
ActorsForDestroy=KFMod.KFAmmoPickup
TimerEnabled=false;
Переменные настройки мутатора
TimerEnabled = true / false (хотим ли мы чтобы объекты удалялись во время игры или нет)
TimerInterval = 5 (как часто с карты удаляются объекты, если TimerEnabled == true)
ActorsForDestroy=KFMod.KFAmmoPickup (указание на класс объекты которого мы хотим удалить)
таких ActorsForDestroy может быть сколько угодно
Например, при таких настройках
TimerEnabled=True
TimerInterval=5
ActorsForDestroy=KFMod.KFAmmoPickup
ActorsForDestroy=KFMod.SinglePickup
ActorsForDestroy=KFMod.KnifePickup
мы удаляем перед стартом все разбросанные по карте пистолеты 9мм, ножи и патроны и потом, каждые 5 секунд, удаляем эти объекты, если они появляются на карте (кто то умирает с ножом в руке или выкидывает пистолет)
Так как указывать можно любые классы, то мутатор можно использовать для удаления, например, оружия из рук игроков, или каких-то монстров, или проджектайлов (например, можно убирать все мины или светящиеся палочки)
В общем тут всё зависит от воображения...
Код простой
Class CleanMapMut extends Mutator config(CleanMapMut);
var() globalconfig array<string> ActorsForDestroy;
var() globalconfig bool TimerEnabled;
var() globalconfig int TimerInterval;
function PreBeginPlay()
{
SaveConfig();
CleanMap();
if(TimerEnabled) SetTimer(TimerInterval,true);
Super.PreBeginPlay();
}
function Timer()
{
CleanMap();
}
function CleanMap()
{
local class<Actor> aClass;
local Actor a;
local int i;
for(i=0;i<ActorsForDestroy.Length;i++)
{
aClass = class<Actor>(DynamicLoadObject(ActorsForDestroy[I], class'Class'));
foreach AllActors(aClass, a)
{
a.Destroy();
}
}
}
defaultproperties
{
ActorsForDestroy(0)="Engine.Pickup"
TimerEnabled=true;
TimerInterval=5;
GroupName="KF-CleanMap"
FriendlyName="CleanMapMut"
Description="Wipes actors from the map"
bAddToServerPackages=True
}
Замечания:
1. Можно ещё добавить проверку if(!a.bStatic), чтобы избежать вылетов при случайном указании на не динамический объект
2. Всегда надо задавать полный путь. Если задать не Engine.Pickup, а Pickup - ничем хорошим это не закончится...
Файл можно получить по ссылке:
CleanMapMut.zip
https://disk.yandex.ru/d/wxI9xWZdl0PbeA
Добавлять в виде CleanMapMut.CleanMapMut
Ну и те частные 3 варианта мутатора, из-за которых и возникла темка
1. Удаляет всё что валяется на карте перед началом карты (заново больше не спавнится ничего)
то же самое, что общий мутатор при след. параметрах
ActorsForDestroy=Engine.Pickup
TimerEnabled=false;
[I]function PreBeginPlay()
{
local Pickup p;
foreach AllActors(class'Pickup', p)
p.Destroy();
Super.PreBeginPlay();
}[/I]
2. Всё удаляет кроме брони
[I]function PreBeginPlay()
{
local Pickup p;
foreach AllActors(class'Pickup', p)
{
if ( Vest(p)==None )
p.Destroy();
}
Super.PreBeginPlay();
}[/I]
3. Удаляет только ящики с патронами
то же самое, что общий мутатор при след. параметрах
ActorsForDestroy=KFMod.KFAmmoPickup
TimerEnabled=false;
[I]function PreBeginPlay()
{
local KFAmmoPickup p;
foreach AllActors(class'KFAmmoPickup', p)
p.Destroy();
Super.PreBeginPlay();
}
[/I]
Последнее редактирование: