- Регистрация
- 12 Янв 2024
- Сообщения
- 76
- Реакции
- 10
- Баллы
- 8
Удобно когда все персональные скины лежат в 1 пакете и управляются 1 мутатором
Ибо проблему большого количества пакетов/мутаторов вы все помните, я надеюсь)
Собственно вот
Все скины складируются в один пакет. Мутатор управляет сразу всеми скинами
Настройки:
VipSkinsList=(PlayerName="Мистер Фостер",PlayerID="76561111111111111",Skin="VipSkinsMut.SPMRFoster")
Ну в общем то всё тут понятно
Полный путь к скину прописывается в Skin
ID игрока прописывается в PlayerID
А в PlayerName можете писать что угодно. Это поле добавлено просто для удобства, чтобы ясно что это за человек тут с этим ID
Код с комментариями:
Ссылка 1 или Ссылка 2
VipSkinsMut.VipSkinsMut
Кроме самого мутатора я кинул в пакет 2 как бы персональных скина - VipSkinsMut.SPMRFoster и VipSkinsMut.SPMRsFoster
Соответственно это стим панк мистер и миссис Фостеры
Просто чтобы комфортнее было начинать работу с мутатором
Ну то есть какая последовательность действий
Берёте свой мутатор со скином, копируете Mod составляющую (То есть всё кроме мутатора) и правите пути, если надо на VipSkinsMut.
Замечание. Для тех, кто использует удалённую базу.
Поправьте период срабатывания таймера. Сейчас там стоит 0.1 - вам этого может не хватить и скин не поменяется.
Напишите так, например
Замечание2. Для тех, кто принудительно выставляет Custom скины игрокам (bForceCustomChars=true)
Поправьте строчку в
вместо
напишите
Автор Flame.
Ибо проблему большого количества пакетов/мутаторов вы все помните, я надеюсь)
Собственно вот
Все скины складируются в один пакет. Мутатор управляет сразу всеми скинами
Настройки:
VipSkinsList=(PlayerName="Мистер Фостер",PlayerID="76561111111111111",Skin="VipSkinsMut.SPMRFoster")
Ну в общем то всё тут понятно
Полный путь к скину прописывается в Skin
ID игрока прописывается в PlayerID
А в PlayerName можете писать что угодно. Это поле добавлено просто для удобства, чтобы ясно что это за человек тут с этим ID
Код с комментариями:
Код:
class VipSkinsMut extends Mutator Config(VipSkinsMut);
struct VipSkinsStruct
{
var config string PlayerName; //в коде не используется. добавлена только для удобства работы с ини файлом
var config string PlayerID; //ID игрока
var config string Skin; //скин игрока
};
var config array<VipSkinsStruct> VipSkinsList;
var array<PlayerController> PendingPlayers;
//Создаём инишник и добавляем наши вип скины в массив AvailableChars. Если не добавим - не сможем получить к ним доступа
function PostBeginPlay()
{
SaveConfig();
AddAvailableVipSkins();
}
//Здесь и добавляем. При этом следим, чтобы один и тот же скин не был добавлен больше 1 раза
function AddAvailableVipSkins()
{
local int i,N;
for(i=0;i<VipSkinsList.Length;i++)
{
N=Class'KFGameType'.Default.AvailableChars.Length;
if(!SkinAlreadyAdded(VipSkinsList.Skin))
Class'KFGameType'.Default.AvailableChars[N] = VipSkinsList.Skin;
}
}
//Тут вот и проверяем есть ли уже такой скин в массиве или нет
function bool SkinAlreadyAdded(string Skin)
{
local int i;
for(i=0;i<Class'KFGameType'.Default.AvailableChars.Length;i++)
{
if(Class'KFGameType'.Default.AvailableChars~=Skin)
return true;
}
return false;
}
//Отлавливаем всех игроков при заходе на сервер (контроллеры ловим)
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
if(PlayerController(Other)!=None)
{
PendingPlayers[PendingPlayers.Length] = PlayerController(Other);
SetTimer(0.1,false);
}
return true;
}
//Прошла 0.1 секунда и переменные контроллера инициализированы. Можем с ними работать
//Собственно тут мы и пытаемся нацепить скин на игрока
function Timer()
{
local int i;
for(i=0;i<PendingPlayers.Length;i++)
{
if(PendingPlayers!=None)
TryToPutSkinOn(PendingPlayers);
}
PendingPlayers.Length = 0;
}
//Проверяем - есть ли игрок в вип списке и если есть - ставим ему его скин
function TryToPutSkinOn(PlayerController PC)
{
local int i;
local string hash;
hash=PC.GetPlayerIDHash();
for(i=0;i<VipSkinsList.Length;i++)
{
if(VipSkinsList.PlayerID~=hash)
PC.SetPawnClass("",VipSkinsList.Skin);
}
}
defaultproperties
{
VipSkinsList(0)=(Skin="VipSkinsMut.SPMRFoster",PlayerID="76561111111111111",PlayerName="Мистер Фостер")
VipSkinsList(1)=(Skin="VipSkinsMut.SPMRsFoster",PlayerID="76562222222222222",PlayerName="Миссис Фостер")
VipSkinsList(2)=(Skin="VipSkinsMut.SPMRFoster",PlayerID="76563333333333333",PlayerName="И опять Мистер Фостер")
bAddToServerPackages=True
GroupName="KF-VipSkins"
FriendlyName="VipSkinsMut"
Description="VipSkinsMut"
bAlwaysRelevant=True
}
Ссылка 1 или Ссылка 2
VipSkinsMut.VipSkinsMut
Кроме самого мутатора я кинул в пакет 2 как бы персональных скина - VipSkinsMut.SPMRFoster и VipSkinsMut.SPMRsFoster
Соответственно это стим панк мистер и миссис Фостеры
Просто чтобы комфортнее было начинать работу с мутатором
Ну то есть какая последовательность действий
Берёте свой мутатор со скином, копируете Mod составляющую (То есть всё кроме мутатора) и правите пути, если надо на VipSkinsMut.
Замечание. Для тех, кто использует удалённую базу.
Поправьте период срабатывания таймера. Сейчас там стоит 0.1 - вам этого может не хватить и скин не поменяется.
Напишите так, например
Код:
SetTimer(1.0,false);
Замечание2. Для тех, кто принудительно выставляет Custom скины игрокам (bForceCustomChars=true)
Поправьте строчку в
Код:
TryToPutSkinOn
Код:
PC.SetPawnClass("",VipSkinsList.Skin);
напишите
Код:
PC.PlayerReplicationInfo.SetCharacterName(VipList.Skin);
Автор Flame.
Последнее редактирование: