Автокик за убийство игроков

Тема в разделе "Общего назначения", создана пользователем Flame, 19 мар 2013.

Метки:
  1. Flame

    Flame -Заслуженый кодер форума-

    Попросили тут меня простенький мутатор сделать
    Чтобы, если убито определённое количество игроков - был автоматический кик до конца карты

    Единственная переменная выведена в TeamKillerKickMut.ini файл
    MaxAllowedToKill
    Если в течении карты убито больше MaxAllowedToKill игроков - идёт кик на сессию

    Код:
    Код:
    class TeamKillerKickMut extends Mutator config(TeamKillerKickMut);
    
    struct killerStruct
    {
    	var PlayerController PC;
    	var int killed;
    };
    
    var array<killerStruct> killers;
    var config int MaxAllowedToKill;
    
    function PostBeginPlay()
    {
    	local TKKickGameRules RulesMod;
    	SaveConfig();
    	if( RulesMod==None )
    		RulesMod = Spawn(Class'TKKickGameRules');
    	RulesMod.mut=self;
    	if(KFGameType(Level.Game)==None) Destroyed();
    	SetTimer(1.0,true);
    	Super.PostBeginPlay();
    }
    
    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
    	local killerStruct ks;
    	if( PlayerController(Other)!=None )
    	{
    		ks.PC=PlayerController(Other);
    		killers[killers.Length]=ks;
    	}
    	return true;
    }
    
    function Timer()
    {
    	local int i;
    	for(i=0;i<killers.Length;i++)
    	{
    		if(killers[i].killed>MaxAllowedToKill)
    		{
    			killers[i].killed=0;
    			SessionKick(killers[i].PC);
    		}
    	}
    }
    
    function IncreaseKills(PlayerController PC)
    {
    	local int i;
    	for(i=0;i<killers.Length;i++)
    		if(killers[i].PC==PC)
    			killers[i].killed++;
    }
    
    function SessionKick(PlayerController PC)
    {
    	local AccessControl Manager;
    	if (Level.Game.AccessControl != None)
    		Manager = Level.Game.AccessControl;
    	Manager.BanPlayer(PC, true);
    }
    
    defaultproperties
    {
    	MaxAllowedToKill=5
    	bAddToServerPackages=True
    	GroupName="KF-TeamKillerKickMut"
    	FriendlyName="TeamKillerKickMut"
    	Description="TeamKillerKickMut"
    }
    
    Update(03.04.2014):
    Добавлен массив исключений
    В ini файл добавлять элементы массива, типа
    Код:
    ExceptionList=7656119805137844
    Код:
    Код:
    class TeamKillerKickMut extends Mutator config(TeamKillerKickMut);
    
    struct killerStruct
    {
    	var PlayerController PC;
    	var int killed;
    };
    
    var array<killerStruct> killers;
    var config array<string> ExceptionList;
    var config int MaxAllowedToKill;
    
    function PostBeginPlay()
    {
    	local TKKickGameRules RulesMod;
    	SaveConfig();
    	if( RulesMod==None )
    		RulesMod = Spawn(Class'TKKickGameRules');
    	RulesMod.mut=self;
    	if(KFGameType(Level.Game)==None) Destroyed();
    	SetTimer(1.0,true);
    	Super.PostBeginPlay();
    }
    
    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
    	local killerStruct ks;
    	if( PlayerController(Other)!=None )
    	{
    		ks.PC=PlayerController(Other);
    		killers[killers.Length]=ks;
    	}
    	return true;
    }
    
    function Timer()
    {
    	local int i;
    	for(i=0;i<killers.Length;i++)
    	{
    		if(killers[i].killed>MaxAllowedToKill)
    		{
    			killers[i].killed=0;
    			SessionKick(killers[i].PC);
    		}
    	}
    }
    
    function IncreaseKills(PlayerController PC)
    {
    	local int i;
    	for(i=0;i<killers.Length;i++)
    		if(killers[i].PC==PC)
    			killers[i].killed++;
    }
    
    function SessionKick(PlayerController PC)
    {
    	local AccessControl Manager;
    	if (Level.Game.AccessControl != None)
    		Manager = Level.Game.AccessControl;
    	if(!InList(PC.GetPlayerIDHash()))
    		Manager.BanPlayer(PC, true);
    }
    
    function bool InList(string Hash)
    {
    	local int i;
    	for(i=0;i<ExceptionList.Length;i++)
    	{
    		if(Hash~=ExceptionList[i])
    			return true;
    	}
    	return false;
    }
    
    defaultproperties
    {
    	ExceptionList(0)=121
    	MaxAllowedToKill=5
    	bAddToServerPackages=True
    	GroupName="KF-TeamKillerKickMut"
    	FriendlyName="TeamKillerKickMut"
    	Description="TeamKillerKickMut"
    }
    
    Ссылка 1 или Ссылка 2
    Добавлять в виде TeamKillerKickMut.TeamKillerKickMut
     
    AkycTuk, Папка01, ExEnSpooT и 4 другим нравится это.
  2. Nuton

    Nuton Соучастник

  3. Flame

    Flame -Заслуженый кодер форума-

    Ну он вроде платный )
    Тем более фиг знает как он там реализован. А я накидал простейшую версию, чтобы любой мог по аналогии сделать подобный мутатор в разных вариациях )
     
  4. Nuton

    Nuton Соучастник

    Суть мутатора то одна)
     
  5. 3xzet

    3xzet Мододел "Ы"

    Это свой мутатор с БлэкДжеком и Шлюхами.
     
    BAHO и Папка01 нравится это.
  6. Dr_Killjoy

    Dr_Killjoy Заблокированные

    Сочуствую игрокам тех серверов на которых будет стоять этот мутатор.
     
  7. ЛОХМАТЫЙ

    ЛОХМАТЫЙ •*´¨`*•.,¸¸,.•*´¨`*•.,¸¸,.•*´¨`*•


    [hr]
    Судя по описанию, тут не то что БлэкДжека, а просто самих карт не будет. Не говоря уж о девицах лёгкого поведения. :rolleyes:
    Украл - выпил - в тюрьму Выпил - убил - кик на сессию
     
  8. 3xzet

    3xzet Мододел "Ы"

    Вообще я имел ввиду что ссылки Ньютона тут неуместны.


    Украл - выпил - в тюрьму Выпил - убил - кик на сессию Украл - убил - еби гусей.
     
    LLIePLLIeHb нравится это.
  9. Nuton

    Nuton Соучастник

    С чего бы это, мут то МеталМедведа существует и нормально функцианирует?))
     
  10. epifan

    epifan Новенький

    За 15 баксов? Извините, не настолько богаты. К тому же надо сбивать монополию.
    А вообще-то френдлифайр отключен, если мне не изменяет память.
     
    Папка01 нравится это.
  11. Dr_Killjoy

    Dr_Killjoy Заблокированные

    Включить его, ничто не мешает.
     
    ЛОХМАТЫЙ нравится это.
  12. MaThreeX

    MaThreeX Солдат

    Есть бажек =) но мне он на руку, если чел напишет два раза suicide (ну или сколько стоит в конфиге убийств) то он короче кикается :D ну как я сказал, он мне на руку ибо задолбали накидывать бабло себе =)
     
  13. Flame

    Flame -Заслуженый кодер форума-

    Жестоко там у вас )
    Поправил и обновил ссылки
     
    ЛОХМАТЫЙ и Папка01 нравится это.
  14. kok-s

    kok-s Консильери

    не работает с 1049 поправьте плиз.
     
  15. Flame

    Flame -Заслуженый кодер форума-

    странно эт
    там нет ничего, что может конфликтовать с 1049
    ну чуток поправил и обновил ссылки
    у меня работает...
     
    Atlan, ЛОХМАТЫЙ и kok-s нравится это.
  16. kok-s

    kok-s Консильери

    Вот ща работает спс.
     
  17. Atlan

    Atlan Капо

    О спс,тож не работало.
     
  18. denfil777

    denfil777 Капо

    а можно как то дополнить мут с возможность вносить ID исключения (аля VIP) чтоб не кикало?
     
  19. Dr_Killjoy

    Dr_Killjoy Заблокированные

    Двойные стандарты.
     
  20. denfil777

    denfil777 Капо

    Отнюдь, возможность исключения нужна для модераторов и администрации, ибо кик на сессию лишает возможности модерации. Бывали случаи когда несколько игроков намеренно под прицелом модератора вставали, дабы его кикнуло. :dry: Есть другие предложения кроме "двойного стандарта"?