• Рекомендуем зарегистрироваться для просмотра контента и скачивания файлов!

Чистка карты

denfil777

Патриарх
Команда форума
Регистрация
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 секунд, удаляем эти объекты, если они появляются на карте (кто то умирает с ножом в руке или выкидывает пистолет)
Так как указывать можно любые классы, то мутатор можно использовать для удаления, например, оружия из рук игроков, или каких-то монстров, или проджектайлов (например, можно убирать все мины или светящиеся палочки)
В общем тут всё зависит от воображения...

Код простой
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]
 
Последнее редактирование:

denfil777

Патриарх
Команда форума
Регистрация
12 Янв 2024
Сообщения
76
Реакции
10
Баллы
8
Это возможное решение нашей проблемы с залагами на сервере? Верно понимаю?
То есть если его на сервер поставить и настроить, то на карте не будет сравниться оружие, бронь, аптечки и т.д.
 

denfil777

Патриарх
Команда форума
Регистрация
12 Янв 2024
Сообщения
76
Реакции
10
Баллы
8
А всякие тела остаточные нет функции там удалять? Зачем оно тогда?:rolleyes::D
Например убрать спавн стандартных/неиспользуемых на сервере пикапов. То есть в магазине нет этой пушки например и она не оптимизирована и не нужна, аналоги есть или наследована другой пушкой.
Или аптечки, бронь заменены, а спавнятся обычные. Да и вообще нужно например убрать все спавны брони или патронов со всех карт..
 
Сверху Снизу