try this, works fine for me...
Quote:

TEXTURE entSkin1; //Blendmap1
TEXTURE entSkin2; //Blendmap1
TEXTURE entSkin3; //Blendmap1
TEXTURE entSkin4; //Shadowmap

TEXTURE mtlSkin1;
TEXTURE mtlSkin2;
TEXTURE mtlSkin3;
TEXTURE mtlSkin4;

matrix matMtl;

technique ffp_terrain_tex
{

pass P0
//////////////////////////////////////////////////////
//// Lets lay the first TEXTURE down. no alpha work
//// This will tile across the entire HMP
//////////////////////////////////////////////////////
{

LIGHTING = false;
AlphaBlendEnable=false;

zenable=true;
zwriteenable=true;
AlphaTestEnable=False;

cullmode = ccw;
Fillmode = Solid;

//////////////////////////////////////
//Stage 0
/////////////////////////////////////

TEXTURE[0] = <mtlSkin4>;

magFilter[0]=linear;
minFilter[0]=linear;
mipFilter[0]=linear;

TEXTURETransformFlags[0] = Count2;
TEXTURETransform[0] = <matMtl>;
texcoordindex[0]=1;

COLORARG1[0] = TEXTURE;
ColorOp[0] = MODULATE;
ALPHAARG1[0] = CURRENT | ALPHAREPLICATE;
alphaop[0]=disable;

//////////////////////////////////////
//stage 1
//////////////////////////////////////

colorop[1]=disable;
alphaop[1]=disable;

}

pass P1
//////////////////////////////////////////////////////
//// Now we blend another TEXTURE using an alphamap
//// This TEXTURE will be blended
//////////////////////////////////////////////////////
{

//////////////////////////////////////
// Stage 0 - Setup the alphamap
//////////////////////////////////////
zenable=true;
zwriteenable=true;
AlphaTestEnable=False;

// We need to enable alphablending
LIGHTING = false;
alphablendenable=true;
srcblend=srcalpha;
destblend=invsrcalpha;

// AlphaTestEnable uses the AlphaRef and AlphaFunc to
// determine which pixels get drawn.
// In this case, anything greater that 0 will be drawn.
alpharef=0x00000000; //Reference Value
alphafunc=Greater; //Comparison Function

TEXTURE[0] = <entSkin1>;

magFilter[0]=linear;
minFilter[0]=linear;
mipFilter[0]=linear;

//
// We don't want the alphamap to tile
//
TEXTURETransformFlags[0] = disable;

texcoordindex[0]=0;

COLORARG1[0] = CURRENT;
ColorOp[0] = SELECTARG1;
ALPHAARG1[0] = TEXTURE | ALPHAREPLICATE;
alphaop[0]=selectarg1;

//////////////////////////////////////////////
// Stage 1 -- This is the TEXTURE to splat
//////////////////////////////////////////////

TEXTURE[1] = <mtlSkin1>;


// Zenable is supposed to default to true.
// This enables depth testing to determine what pixels
// are visible to the viewer

magFilter[1]=linear;
minFilter[1]=linear;
mipFilter[1]=linear;

TEXTURETransformFlags[1] = Count2;
TEXTURETransform[1] = <matMtl>;
texcoordindex[1]=1;

COLORARG1[1] = TEXTURE;
ColorOp[1] = MODULATE;
ALPHAARG1[1] = CURRENT | ALPHAREPLICATE;
alphaop[1]=disable;

///////////////////////////////////////////////
// Stage 2
///////////////////////////////////////////////
colorop[2]=disable;
alphaop[2]=disable;


}

pass P2
////////////////////////////////////////////////////
//// A ditto of Pass p1 but with different a different
//// TEXTURE and alphamap
///////////////////////////////////////////////////
{

zenable=true;
zwriteenable=true;
AlphaTestEnable=False;

////////////////////////////////////////
// Stage 0
////////////////////////////////////////
LIGHTING = false;
alphablendenable=true;
srcblend=srcalpha;
destblend=invsrcalpha;
alpharef=0x00000000;
alphafunc=Greater;

TEXTURE[0] = <entSkin2>;

magFilter[0]=linear;
minFilter[0]=linear;
mipFilter[0]=linear;


TEXTURETransformFlags[0] = disable;

texcoordindex[0]=0;

COLORARG1[0] = CURRENT;
ColorOp[0] = selectarg1;
ALPHAARG1[0] = TEXTURE | ALPHAREPLICATE;
alphaop[0]=selectarg1;

/////////////////////////////////////////
// Stage 1
/////////////////////////////////////////
TEXTURE[1] = <mtlSkin2>;

magFilter[1]=linear;
minFilter[1]=linear;
mipFilter[1]=linear;


TEXTURETransformFlags[1] = Count2;
TEXTURETransform[1] = <matMtl>;
texcoordindex[1]=1;

COLORARG1[1] = TEXTURE;
ColorOp[1] = modulate;
ALPHAARG1[1] = CURRENT | ALPHAREPLICATE;
alphaop[1]=disable;

////////////////////////////////////////
// Stage 2
////////////////////////////////////////
colorop[2]=disable;
alphaop[2]=disable;

} // End of Pass P2


pass P3
////////////////////////////////////////////////////
//// A ditto of Pass p1 but with different a different
//// TEXTURE and alphamap
///////////////////////////////////////////////////
{

zenable=true;
zwriteenable=true;
AlphaTestEnable=False;
////////////////////////////////////////
// Stage 0
////////////////////////////////////////

LIGHTING = false;
alphablendenable=true;
srcblend=srcalpha;
destblend=invsrcalpha;
alpharef=0x00000000;
alphafunc=Greater;

TEXTURE[0] = <entSkin3>;

magFilter[0]=linear;
minFilter[0]=linear;
mipFilter[0]=linear;


TEXTURETransformFlags[0] = disable;

texcoordindex[0]=1;

COLORARG1[0] = CURRENT;
ColorOp[0] = selectarg1;
ALPHAARG1[0] = TEXTURE | ALPHAREPLICATE;
alphaop[0]=selectarg1;

/////////////////////////////////////////
// Stage 1
/////////////////////////////////////////
TEXTURE[1] = <mtlSkin3>;

magFilter[1]=linear;
minFilter[1]=linear;
mipFilter[1]=linear;


TEXTURETransformFlags[1] = Count2;
TEXTURETransform[1] = <matMtl>;
texcoordindex[1]=0;

COLORARG1[1] = TEXTURE;
ColorOp[1] = modulate;
ALPHAARG1[1] = CURRENT | ALPHAREPLICATE;
alphaop[1]=disable;

////////////////////////////////////////
// Stage 2
////////////////////////////////////////
colorop[2]=disable;
alphaop[2]=disable;

} // End of Pass P3

pass p4
{
zenable=true;
zwriteenable=true;
AlphaTestEnable=False;

LIGHTING = false;
srcblend=zero;
destblend=srccolor;

ditherenable=true;

AlphaBlendEnable=True;

COLORARG1[0] = DIFFUSE;
ColorOp[0] = Modulate2x;
ColorArg2[0] = Current;
alphaop[0]=disable;

Texture[1] = <entSkin4>;
magFilter[1]=linear;
minFilter[1]=linear;
mipFilter[1]=linear;
COLORARG1[1] = TEXTURE;
ColorOp[1] = Modulate2x;

TexCoordIndex[1]=0;
TextureTransformFlags[1]=Count2;
TextureTransform[1]=
{
1.0,0.0,0.0,0.0,
0.0,1.0,0.0,0.0,
0.0,0.0,0.0,0.0,
0.0,0.0,0.0,0.0
};
}

} // End of Technique




well as a game programmer you should be able to open the file with any text editor, make changes and save it back to the file...