В очередной раз переглядывал код мода Survival. Вспомнил про такую штуку там - своя система настройки песочницы. До монстр конфига не дотягивает, но в принципе лучше обычной песочницы. Инишник там выглядит примерно так: Спойлер [ServerPerksXMut.SRZombieList] bCustomMonsterCollection=true Monster=(Letter="A",MClass="Survival.SZombieClot") Monster=(Letter="B",MClass="Survival.SZombieCrawler") Monster=(Letter="C",MClass="Survival.SZombieGoreFast") Monster=(Letter="D",MClass="Survival.SZombieStalker") Monster=(Letter="E",MClass="Survival.SZombieScrake") Monster=(Letter="F",MClass="Survival.SZombieFleshpound") Monster=(Letter="G",MClass="Survival.SZombieBloat") Monster=(Letter="H",MClass="Survival.SZombieSiren") Monster=(Letter="I",MClass="Survival.SZombieHusk") Monster=(Letter="J",MClass="Survival.SZombieMiniScrake") Monster=(Letter="K",MClass="Survival.SZombieRocketHusk") Monster=(Letter="L",MClass="Survival.SZombieMegaPound") Monster=(Letter="M",MClass="Survival.SZombieSnatch") Monster=(Letter="N",MClass="Survival.SZombieSmoker") Monster=(Letter="O",MClass="Survival.SZombieGhost") Monster=(Letter="P",MClass="Survival.SZombieHalfBreed") Monster=(Letter="Q",MClass="Survival.SZombieArachna") BossMonster="Survival.SHardPat" FallbackMonster="Survival.SZombieStalker" Squad=(SquadName="FodderWeak1",Zeds="3A1M") Squad=(SquadName="FodderWeak2",Zeds="4A1M") Squad=(SquadName="FodderMedium1",Zeds="2A2M1G") Squad=(SquadName="FodderMedium2",Zeds="3A1M2G") Squad=(SquadName="FodderStrong1",Zeds="1A2M1C1J1Q") Squad=(SquadName="FodderStrong2",Zeds="2A2M1C1G") Squad=(SquadName="AttackWeak",Zeds="2M4C") Squad=(SquadName="AttackMedium",Zeds="2M3C1J1H") Squad=(SquadName="AttackStrong",Zeds="1M3C2J1H1N") Squad=(SquadName="CrawlerWeak",Zeds="2B1Q") Squad=(SquadName="CrawlerMedium",Zeds="3B3Q1P") Squad=(SquadName="CrawlerStrong",Zeds="1B4Q2P") Squad=(SquadName="StalkerWeak",Zeds="3D") Squad=(SquadName="StalkerMedium",Zeds="3D1O") Squad=(SquadName="StalkerStrong",Zeds="3D3O1H1Q") Squad=(SquadName="CrawlerApocalypse",Zeds="9B9B9Q4P") Squad=(SquadName="BloatHusk",Zeds="2G1I1H1A1C") Squad=(SquadName="BloatHuskScreen",Zeds="3G2I1H1N1A") Squad=(SquadName="HuskScreen",Zeds="2I1N2C") Squad=(SquadName="Husk",Zeds="1I") Squad=(SquadName="RangedWeak",Zeds="1H1I1G1C") Squad=(SquadName="RangedMedium",Zeds="2H1I1N") Squad=(SquadName="RangedStrong",Zeds="2H1I1K1N") Squad=(SquadName="RocketScreen",Zeds="2K1N2H") Squad=(SquadName="MiniScrakes",Zeds="3J2C") Squad=(SquadName="ScrakeFodderWeak",Zeds="1E2A2C1H") Squad=(SquadName="ScrakeFodderMedium",Zeds="1E2M2C1J1H1N") Squad=(SquadName="ScrakeFodderStrong",Zeds="1E2M1G2J1N1K") Squad=(SquadName="ScrakeFamily",Zeds="2E4J") Squad=(SquadName="BulletSponge1",Zeds="1E2G1P1N") Squad=(SquadName="BulletSponge2",Zeds="1E3G1H1N") Squad=(SquadName="BulletSponge3",Zeds="2E2G1K1N") Squad=(SquadName="Pounder",Zeds="1F") Squad=(SquadName="DoublePounder",Zeds="2F") Squad=(SquadName="TriplePounder",Zeds="3F") Squad=(SquadName="ScreamCity",Zeds="4H1N") Squad=(SquadName="HardAttack",Zeds="3C3O1P2Q") Squad=(SquadName="Megapound",Zeds="1L") bOverrideInvasionSquads=true bOverrideInvasionWaves=true SquadSet=(SetName="Starters",Squads=("FodderWeak1","FodderWeak2","FodderMedium1","AttackWeak","StalkerWeak")) SquadSet=(SetName="StrongFodder",Squads=("AttackMedium","FodderStrong2","FodderStrong1")) SquadSet=(SetName="MediumFodder",Squads=("FodderMedium1","FodderMedium2")) SquadSet=(SetName="Attack",Squads=("AttackMedium","AttackStrong")) SquadSet=(SetName="StartersOpener",Squads=("FodderStrong1","CrawlerMedium")) SquadSet=(SetName="CrawlerSet",Squads=("CrawlerStrong","CrawlerMedium")) SquadSet=(SetName="CrawlerStalkerSet",Squads=("CrawlerStrong","StalkerMedium")) SquadSet=(SetName="CrawlerApocalypse",Squads=("CrawlerApocalypse")) SquadSet=(SetName="SirenMix",Squads=("RangedMedium","StalkerStrong")) SquadSet=(SetName="GhostMix",Squads=("StalkerStrong","HardAttack")) SquadSet=(SetName="BossHelpers",Squads=("FodderStrong1","StalkerMedium","MiniScrakes")) SquadSet=(SetName="HardFodder",Squads=("AttackStrong","CrawlerStrong","StalkerMedium")) SquadSet=(SetName="ScrakeWeak",Squads=("ScrakeFodderWeak")) SquadSet=(SetName="ScrakeMedium",Squads=("ScrakeFodderMedium")) SquadSet=(SetName="ScrakeHard",Squads=("ScrakeFodderStrong")) SquadSet=(SetName="ScrakeFamily",Squads=("ScrakeFamily")) SquadSet=(SetName="WeakPounder",Squads=("Pounder","FodderWeak")) SquadSet=(SetName="TwoPoundOpener",Squads=("DoublePounder","AttackMedium","BloatHusk")) SquadSet=(SetName="BulletSponges",Squads=("BulletSponge1","BulletSponge2","BulletSponge3")) SquadSet=(SetName="MegaPoundOpener",Squads=("MegaPound")) SquadSet=(SetName="UltraHard",Squads=("TriplePounder","Pounder","ScreamCity","RocketScreen","ScrakeFamily","CrawlerApocalypse")) SquadSet=(SetName="WeakRanged",Squads=("Husk","HuskScreen","RangedWeak")) SquadSet=(SetName="StrongRanged",Squads=("HuskScreen","RangedMedium","RangedStrong")) SquadSet=(SetName="RocketMix",Squads=("RangedStrong","BloatHusk","RocketScreen")) SquadSet=(Setname="LateWaveFodder",Squads=("BulletSponge1","HardAttack","RangedStrong")) SquadSet=(SetName="RocketOpener",Squads=("RocketScreen","BloatHusk","ScreamCity")) Wave=(WaveName="Wave1",Sets=("Starters"),OpeningSet="StartersOpener") Wave=(WaveName="Wave2",Sets=("CrawlerStalkerSet","Attack"),Squads=("Husk"),OpeningSet="CrawlerStalkerSet") Wave=(WaveName="Wave3",Sets=("MediumFodder","Attack","GhostMix","SirenMix"),Squads=("Husk"),OpeningSet="CrawlerApocalypse") Wave=(WaveName="Wave4",Sets=("ScrakeWeak","SirenMix","CrawlerStalkerSet","MediumFodder"),OpeningSet="ScrakeMedium") Wave=(WaveName="Wave5",Sets=("ScrakeWeak","ScrakeMedium","CrawlerSet","StrongFodder","WeakRanged"),Squads=("RangedWeak"),OpeningSet="ScrakeFamily") Wave=(WaveName="Wave6",Sets=("StrongFodder","SirenMix","WeakRanged","CrawlerStalkerSet","ScrakeHard","ScrakeWeak"),OpeningSet="WeakPounder") Wave=(WaveName="Wave7",Sets=("HardFodder","MediumFodder","SirenMix","ScrakeMedium","ScrakeHard","WeakRanged"),OpeningSet="WeakPounder") Wave=(WaveName="Wave8",Sets=("ScrakeFamily","StrongRanged","ScrakeMedium","WeakPounder","StrongFodder","HardFodder"),Squads=("BulletSponge1"),OpeningSet="RocketOpener") Wave=(WaveName="Wave9",Sets=("Pounder","ScrakeFamily","RocketMix","StrongFodder","ScrakeWeak","LateWaveFodder","CrawlerSet"),OpeningSet="TwoPoundOpener") Wave=(WaveName="Wave10",Sets=("GhostMix","SirenMix","ScrakeFamily","ScrakeHard","BulletSponges","StrongRanged","LateWaveFodder","MediumFodder","Attack"),OpeningSet="MegaPoundOpener") Wave=(WaveName="London10",Sets=("UltraHard"),OpeningSet="MegaPoundOpener") Wave=(WaveName="BossHelpers",OpeningSet="BossHelpers") GlobalWaves=(WaveNum=1,Short="Wave1",Normal="Wave1",Long="Wave1") GlobalWaves=(WaveNum=2,Short="Wave3",Normal="Wave3",Long="Wave2") GlobalWaves=(WaveNum=3,Short="Wave5",Normal="Wave4",Long="Wave3") GlobalWaves=(WaveNum=4,Short="Wave9",Normal="Wave6",Long="Wave4") GlobalWaves=(WaveNum=5,Normal="Wave7",Long="Wave5") GlobalWaves=(WaveNum=6,Normal="Wave9",Long="Wave6") GlobalWaves=(WaveNum=7,Normal="Wave10",Long="Wave7",NumZeds=40) GlobalWaves=(WaveNum=8,Long="Wave8",NumZeds=45) GlobalWaves=(WaveNum=9,Long="Wave9",NumZeds=48) GlobalWaves=(WaveNum=10,Long="Wave10",NumZeds=50) GlobalWaves=(WaveNum=0,Short="BossHelpers",Normal="BossHelpers",Long="BossHelpers") MapWaves=(MapName="KF-WestLondon",WaveNum=10,Long="London10",MinDifficulty=4,NumZeds=30) bOverrideStorySquads=true StorySquadReplacements=(ReplaceClass="Survival.SZombieSnatch",ZedTypeToReplace="clot",PercentReplaced=0.5) StorySquadReplacements=(ReplaceClass="Survival.SZombieHalfBreed",ZedTypeToReplace="crawler",PercentReplaced=0.25) StorySquadReplacements=(ReplaceClass="Survival.SZombieGhost",ZedTypeToReplace="stalker",PercentReplaced=0.40) StorySquadReplacements=(ReplaceClass="Survival.SZombieRocketHusk",ZedTypeToReplace="husk",PercentReplaced=0.35) StorySquadReplacements=(ReplaceClass="Survival.SZombieMiniScrake",ZedTypeToReplace="scrake",PercentReplaced=0.20) StorySquadAdditions=(SpawnsWithClass="Survival.SZombieSnatch",SpawnClass="Survival.SZombieMiniScrake",NumToSpawn=1,PercentChance=0.5) StorySquadAdditions=(SpawnsWithClass="Survival.SZombieScrake",SpawnClass="Survival.SZombieMiniScrake",NumToSpawn=2,PercentChance=0.8) StorySquadAdditions=(SpawnsWithClass="Survival.SZombieHusk",SpawnClass="Survival.SZombieSmoker",NumToSpawn=1,PercentChance=0.8) StorySquadAdditions=(SpawnsWithClass="Survival.SZombieFleshpound",SpawnClass="Survival.SZombieRocketHusk",NumToSpawn=1,PercentChance=0.8) ;StorySquadAdditions=(SpawnsWithClass="Survival.SZombieFleshpound",SpawnClass="Survival.SZombieMegaPound",NumToSpawn=1,PercentChance=0.2) StorySquadAdditions=(SpawnsWithClass="Survival.SZombieRocketHusk",SpawnClass="Survival.SZombieSmoker",NumToSpawn=1,PercentChance=0.8) Если хотите, могу эту систему вытащить из мода и сделать как отдельный мутатор. Будет альтернатива монстр конфигу без замены гейм тайпа. Вообще, у меня закралась мыслишка сделать версию монстр конфига, которая бы не заменяла гейм тайп. Но это делать буду уже попозже, если всё таки решусь.
Да он функциональный, но там свой геймтайп. В принципе если выпилят этот геймтайп, то и я буду пользоваться монстр конфигом.
Я кстати над этим задумываюсь. Появляется понимание что это реально сделать и без гейм тайпа. Так что возможно сделаю такой мутатор.
А есть ли мутатор, который кикает за мат? Например, написал я в чат "хуй", и меня автоматически выкинуло с сервера на одну карту. Причем хотелось бы, чтобы можно было редактировать список слов, за которые тебе дается session.
Мне казалось я выкладывал такой мутатор ) Года 2 назад На основе этой фильтрации чата ) Там правда не кикало вроде, а просто мат заменяло на любое слово ( [censored] по-умолчанию ), но прикрутить кикалку эт дело 20 секунд Ну ща пороюсь на форуме Хм. Чот не видно. Вроде обсуждал я эт гдет. И словарь мата использовал. Ладно. Надо будет тогда улучшить мутатор и закинуть тож сюда "Пните если забуду" (c) У себя я отказался от мутатора Ибо игроки очень любят проверять является ли слово запрещённым или нет) Да и при каждом напечатанном тексте гонять цикл по всему словарю матов... Ресурсы эт жрёт всёж Так что тут проблема Если большой словарь, то долгая проверка, если мелкий словарь, то народ заменяет в матерных словах один из символов или ещё как-то обходят мутатор Если же банить набор корней слов, то многие невинные слова так же считаются матом, приходится добавлять исключения и опять словарь увеличивается
Цензура это еще нормально , а если кикать то можно народ распугать. Зашел человек впервые , написал что нибудь в чат матерное - кик на сессию , ушел на другой серв.
Будем очень благодарны, не хватает людей которые выкладывают уже сделанный контент который висит на трипах, а особенно тот который есть только в воркжопе (конечно если контент перезалит с воркжопа на файлоообменники).
Всё будет сделано по высшему качеству!И на хорошие фаилообменники :smile: если кому то пригледелать тема на трипах или воркжопе а руки сделать тему не доходят пишите мне. Сделаю