• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

Custom character: How to Add

Code:
NewPlayers[0].SetPawnClass("","Fostermod");
Where is the Fostermod mutator?

Code:
NewPlayers[0].PlayerReplicationInfo.CharacterName~="Corporal_Lewis"
This is replacement by skin. Replacement by ID is at post #34

Code:
if( NewPlayers[1]!=None && NewPlayers[1].Player!=None ){
                if(NewPlayers[1].PlayerReplicationInfo.CharacterName~="Corporal_Lewis")
                {
                NewPlayers[1].SetPawnClass("","KFARGGirlAA");
                }
        }
        if( NewPlayers[2]!=None && NewPlayers[2].Player!=None ){
                if(NewPlayers[2].PlayerReplicationInfo.CharacterName~="Corporal_Lewis")
                {
                NewPlayers[2].SetPawnClass("","KFARGGirlAA");
                }
        }
This is unnecessary.
 
Upvote 0
1.I create <KF root>\FosterWhiteMod\Classes\FosterWhiteMod.uc file with code:
Code:
class FosterWhiteMod extends Object;
// este es un hack by nanomo :D, no borrar
defaultproperties
{
}
And another <KF root>\FosterWhiteMod\Classes\FosterWhite.uc file with:
Code:
class FosterWhite extends PlayerRecordClass;
#exec OBJ LOAD FILE=..\textures\FosterWhiteTex.utx

defaultproperties
{
     Species=Class'KFMod.SoldierSpecies'
     MeshName="KF_Soldier_Trip.Officeworker_Soldier"
     BodySkinName="FosterWhiteTex.utx.Uniforms.officeworker_diff"
     FaceSkinName="FosterWhiteTex.utx.Uniforms.officeworker_diff"
     Portrait=Texture'KFPortraits.MRFoster_Portrait'
     TextName="XPlayers.Default"
     VoiceClassName="KFMod.KFVoicePack"
     Sex="Male"
     Menu="SP"
     Skeleton="KFSoldiers.Soldier"
     Ragdoll="British_Soldier1"
}
2.Correctly?:confused:
Code:
function Timer()
{
    while( NewPlayers.Length>0 )
    {
        if( NewPlayers[0]!=None && NewPlayers[0].Player!=None && ShouldSkin(NewPlayers[0].GetPlayerIDHash()) )
            NewPlayers[0].SetPawnClass("","Fostermod");
        NewPlayers.Remove(0,1);
    }
}
3.This code replaces the skin for three girls.I do not know how to do differently:(
 
Upvote 0
the magic is in this: SetPawnClass("","Fostermod"); so, you must code the conditions to get what players will be recieving the new skins, in this thread and this one we discusse about changing with the character name or the hashid, can be changed depending of the palyers name, Again, you must code the conditions that will make to apply the new skin to one palyer and not the others.
 
Upvote 0
I understand you correctly?
Code:
class KFARGGirlA extends Mutator;

var array<xPlayer> NewPlayers;
var config array<string> PlayerIDs;

function PreBeginPlay()
{ 
    AddToPackageMap("KFARGGirlAAMod");
    AddToPackageMap("KFCharacters");
    AddToPackageMap("KF_Soldier_Trip_T");
    AddToPackageMap("TraderPlayer");
    class'KFGameType'.default.AvailableChars[Class'KFGameType'.Default.AvailableChars.Length] = "KFARGGirlAA";
    AddToPackageMap("FosterWhiteMod");
    AddToPackageMap("KFCharacters");
    AddToPackageMap("KF_Soldier_Trip");
    class'KFGameType'.default.AvailableChars[Class'KFGameType'.Default.AvailableChars.Length] = "FosterWhiteMod";
}

function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
    if( xPlayer(Other)!=None )
    {
        NewPlayers[NewPlayers.Length] = xPlayer(Other);
        SetTimer(0.1,false);
    }
    return true;
}
function Timer()
{
    while( NewPlayers.Length>0 )
    {
        if( NewPlayers[0]!=None && NewPlayers[0].Player!=None ){
                if(NewPlayers[0].PlayerReplicationInfo.CharacterName~="Corporal_Lewis")
                {
                NewPlayers[0].SetPawnClass("","KFARGGirlAA"); //skin for all girls
                }
        }
        if( NewPlayers[2]!=None && NewPlayers[2].Player!=None ){
                if(NewPlayers[2].PlayerReplicationInfo.CharacterName~="Agent_Wilkes")
                {
                NewPlayers[2].SetPawnClass("","FosterWhiteMod"); //skin for ME
                }
        }
        NewPlayers.Remove(0,1);
    }
}

defaultproperties
{
     PlayerIDs(0)="76561199309454430" // GIRL 1 ID
     PlayerIDs(0)="76561200053416110" // GIRL 2 ID - ERROR HIRE
     PlayerIDs(0)="76561201528834970" //  GIRL 3 ID -AND HIRE
     PlayerIDs(2)="76561200057131316" // My ID
     bAddToServerPackages=True
     GroupName="KFARGGirlA"
     FriendlyName="KFARGGirlA"
     Description="Coporal Lewis to Trader :D"
     bAlwaysRelevant=True
}
 
Last edited:
Upvote 0
So, letme understand what you want...

1a. You want that all palyers with corporal_lewis apply the girltrader skins? OR
1b. You want that all players with corporal_lewis and PlayerIDs(0), 1, 2 has the girltrader skin?

2. For you, you want to apply the foster skin trough ID or trough the character Agent_Wilkes?

I must ask the before, becouse the code is a mix of thing that doesn't let see what is the goal! adn has a lot of errors too, to first clarify what is the goal and then both will be review the code ;)
 
Upvote 0
Anyone knows whats going on?
I managed to compile and everything, but i still am not able to use the skin.

Code:
class KFARGGirlB extends Mutator;
var array<xPlayer> NewPlayers;
var() config array<string> PlayerIDs; 

function PreBeginPlay()
{
    AddToPackageMap("KFARGGirlMod");
    AddToPackageMap("KFCharacters");
    AddToPackageMap("KF_Soldier_Trip_T");
    AddToPackageMap("TraderPlayer");
    class'KFGameType'.default.AvailableChars[Class'KFGameType'.Default.AvailableChars.Length] = "KFARGGirl";
    SetTimer(1.0,false);
}

function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
    if( xPlayer(Other)!=None )
    {
        NewPlayers[NewPlayers.Length] = xPlayer(Other);
        SetTimer(0.1,false);
    }
    return true;
}
function Timer()
{
    while( NewPlayers.Length>0 )
    {
        if( NewPlayers[0]!=None && NewPlayers[0].Player!=None && ShouldSkin(NewPlayers[0].GetPlayerIDHash()) )
            NewPlayers[0].SetPawnClass("","KFARGGirl");
        NewPlayers.Remove(0,1);
    }
}
final function bool ShouldSkin( string ID )
{
    local int i;

    for( i=(PlayerIDs.Length-1); i>=0; --i )
        if( PlayerIDs[i]==ID )
            return true;
    return false;
}



defaultproperties
{
PlayerIDs(0)="76561198006227760"
     bAddToServerPackages=True
     GroupName="KFARGGirlB"
     FriendlyName="KFARGGirlB"
     Description="!girl by NANOMO, assigns the trader character, visit http://www.killingfloorarg.com"
     bAlwaysRelevant=True
}
 
Upvote 0
Is it your own steam id?

What about code extends player record class?

Yes that is my own SteamID, when i enable it in solo i don't spawn with trader skin.

Here is the PlayerRecordClass code

Its the exact same one KFArg did, i just decompiled it.

Code:
class KFARGGirl extends PlayerRecordClass;
/*
#exec OBJ LOAD FILE=KFCharacters.utx
#exec OBJ LOAD FILE=KFSoldiers.ukx
*/
#exec OBJ LOAD FILE=..\animations\TraderPlayer.ukx
#exec OBJ LOAD FILE=..\textures\KF_Soldier_Trip_T.utx

defaultproperties
{
     Species=Class'KFMod.SoldierSpecies'
     MeshName="TraderPlayer.TraderP"
     BodySkinName="KF_Soldier_Trip_T.Uniforms.shopkeeper_diff"
     FaceSkinName="KF_Soldier_Trip_T.heads.chris_head_diff"
     Portrait=Texture'KFPortraits.Trader_portrait'
     TextName="XPlayers.Default"
     VoiceClassName="KFMod.KFVoicePackTwo"
     Sex="Female"
     Menu="SP"
     Skeleton="KFSoldiers.Soldier"
     Ragdoll="British_Soldier1"
}

Code:
class KFARGGirlMod extends Object;
// este e sun hack by nanomo :D, no borrar

defaultproperties
{
}
 
Last edited:
Upvote 0
Okay great, now when adding another character, it doesn't work.

The person with the SteamID still spawns with the trader skin instead of the Clone skin..

Anyone know why?

Code:
class KFARGGirlB extends Mutator;
var array<xPlayer> NewPlayers;
var() config array<string> PlayerIDs; 

function PreBeginPlay()
{
    AddToPackageMap("KFARGGirlMod");
    AddToPackageMap("KFCharacters");
    AddToPackageMap("KF_Soldier_Trip_T");
    AddToPackageMap("TraderPlayer");
    class'KFGameType'.default.AvailableChars[Class'KFGameType'.Default.AvailableChars.Length] = "KFARGGirl";
    AddToPackageMap("CloneMod");
    AddToPackageMap("Clone");
    AddToPackageMap("Clone_T");
    class'KFGameType'.default.AvailableChars[Class'KFGameType'.Default.AvailableChars.Length] = "Clone";    
}

function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
    if( xPlayer(Other)!=None )
    {
        NewPlayers[NewPlayers.Length] = xPlayer(Other);
        SetTimer(0.1,false);
    }
    return true;
}
function Timer()
{
    while( NewPlayers.Length>0 )
    {
        if( NewPlayers[0]!=None && NewPlayers[0].Player!=None && ShouldSkin(NewPlayers[0].GetPlayerIDHash()) )
            NewPlayers[0].SetPawnClass("","KFARGGirl");

        if( NewPlayers[1]!=None && NewPlayers[1].Player!=None && ShouldSkin(NewPlayers[1].GetPlayerIDHash()) )
            NewPlayers[1].SetPawnClass("","Clone");
        NewPlayers.Remove(0,1);
    }
}
final function bool ShouldSkin( string ID )
{
    local int i;

    for( i=(PlayerIDs.Length-1); i>=0; --i )
        if( PlayerIDs[i]==ID )
            return true;
    return false;
}

defaultproperties
{
     PlayerIDs(0)="76561198029937191"
     PlayerIDs(1)="76561197988488453"
     bAddToServerPackages=True
     GroupName="KFARGGirlB"
     FriendlyName="KFARGGirlB"
     Description="!girl by NANOMO, assigns the trader character, visit http://www.killingfloorarg.com"
     bAlwaysRelevant=True
}
 
Upvote 0
ok, this mut isn't always working correctly? sometimes you have to restart the map to see the character change. any ideas?

also, how can I cange 2 characters to 2 different models in one mutator?

ie Corporal_lewis to the stif and
Agent_wilkes to the trader

Any help would be very appreciated, thanks in advance.

p.s. have tried the separate mutator suggestion and I have to change the map every time to see a new model, both mods will not work at the same time.
 
Upvote 0