Hello,

You can multiply the texture coords by the scale factor into the shader, and I think that is all what you need.

tiling.fx
Code:
float4x4 matWorld;
float4x4 matWorldViewProj;
float4 vecSkill41;

texture entSkin1;

sampler TexSampler = sampler_state
{
	Texture = <entSkin1>;
	MipFilter = Linear;
	AddressU = Wrap;
	Addressv = Wrap;
};

struct out_tiling
{
	float4 Pos	: POSITION;
	float2 Tex0	: TEXCOORD0;
};

out_tiling vs_20
(
	in float4 inPos	        : POSITION,
	in float2 inTex0	: TEXCOORD0
)
{
	out_tiling Out;
	
	Out.Pos = mul(inPos,matWorldViewProj);
	Out.Tex0 = inTex0;

	return Out;
}
	
float4 ps_20 ( out_tiling In ): COLOR
{
	float2 Coord;
	Coord.x = In.Tex0.x * vecSkill41.x;
	Coord.y = In.Tex0.y * vecSkill41.y;
	
	return tex2D ( TexSampler, Coord );
}

technique TexTile
{
	pass one
	{
		VertexShader = compile vs_2_0 vs_20();
		PixelShader = compile ps_2_0 ps_20();			
	}		
}



main.c
Code:
#include <acknex.h>
#include <default.c>

MATERIAL *mtl_tiling =
{
	effect = "tiling.fx";
}

function main ()
{
	wait (2);
	level_load ( "" );
	wait(3);
	
	camera.x = -500;
	
	you = ent_create ( "cube.mdl", nullvector, NULL );
	you.material = mtl_tiling;
	
	you.skill41 = floatv(2);
	you.skill42 = floatv(2);
	
	while ( !key_esc )
	{
		
		wait(1);
	}
	
	sys_exit ( NULL );
}



Salud!