Hello!
So, here is my script. (I know it is a peace of poo-poo, because i can't understand some part of the code.)
Code:
init()
{
precachemodel("xmodel/sentry_gun_4pod");
precachemodel("xmodel/caspi_minigun_head");
level.effects["large_bark"]=loadfx("fx/impacts/large_woodhit.efx");
level.effects["large_brick"]=loadfx("fx/impacts/large_brick.efx");
level.effects["large_carpet"]=loadfx("fx/impacts/default_hit.efx");
level.effects["large_cloth"]=loadfx("fx/impacts/cloth_hit.efx");
level.effects["large_concrete"]=loadfx("fx/impacts/large_plaster.efx");
level.effects["large_dirt"]=loadfx("fx/impacts/large_dirt.efx");
level.effects["large_flesh"]=loadfx("fx/impacts/flesh_hit.efx");
level.effects["large_foliage"]=loadfx("fx/impacts/small_foliage.efx");
level.effects["large_glass"]=loadfx("fx/impacts/large_glass.efx");
level.effects["large_grass"]=loadfx("fx/impacts/small_grass.efx");
level.effects["large_gravel"]=loadfx("fx/impacts/large_gravel.efx");
level.effects["large_ice"]=loadfx("fx/impacts/small_snowhit.efx");
level.effects["large_metal"]=loadfx("fx/impacts/large_metalhit.efx");
level.effects["large_mud"]=loadfx("fx/impacts/large_mud.efx");
level.effects["large_paper"]=loadfx("fx/impacts/default_hit.efx");
level.effects["large_plaster"]=loadfx("fx/impacts/large_plaster.efx");
level.effects["large_rock"]=loadfx("fx/impacts/large_rock.efx");
level.effects["large_sand"]=loadfx("fx/impacts/large_dirt.efx");
level.effects["large_snow"]=loadfx("fx/impacts/small_snowhit.efx");
level.effects["large_water"]=loadfx("fx/impacts/large_waterhit.efx");
level.effects["large_wood"]=loadfx("fx/impacts/large_woodhit.efx");
level.effects["large_asphalt"]=loadfx("fx/impacts/large_rock.efx");
level.effects["large_default"]=loadfx("fx/impacts/default_hit.efx");
level.effects["small_bark"]=loadfx("fx/impacts/large_woodhit.efx");
level.effects["small_brick"]=loadfx("fx/impacts/small_brick.efx");
level.effects["small_carpet"]=loadfx("fx/impacts/default_hit.efx");
level.effects["small_cloth"]=loadfx("fx/impacts/cloth_hit.efx");
level.effects["small_concrete"]=loadfx("fx/impacts/small_concrete.efx");
level.effects["small_dirt"]=loadfx("fx/impacts/small_dirt.efx");
level.effects["small_flesh"]=loadfx("fx/impacts/flesh_hit.efx");
level.effects["small_foliage"]=loadfx("fx/impacts/small_foliage.efx");
level.effects["small_glass"]=loadfx("fx/impacts/small_glass.efx");
level.effects["small_grass"]=loadfx("fx/impacts/small_grass.efx");
level.effects["small_gravel"]=loadfx("fx/impacts/small_gravel.efx");
level.effects["small_ice"]=loadfx("fx/impacts/small_snowhit.efx");
level.effects["small_metal"]=loadfx("fx/impacts/small_metalhit.efx");
level.effects["small_mud"]=loadfx("fx/impacts/small_mud.efx");
level.effects["small_paper"]=loadfx("fx/impacts/default_hit.efx");
level.effects["small_plaster"]=loadfx("fx/impacts/small_concrete.efx");
level.effects["small_rock"]=loadfx("fx/impacts/small_rock.efx");
level.effects["small_sand"]=loadfx("fx/impacts/small_dirt.efx");
level.effects["small_snow"]=loadfx("fx/impacts/small_snowhit.efx");
level.effects["small_water"]=loadfx("fx/impacts/small_waterhit.efx");
level.effects["small_wood"]=loadfx("fx/impacts/large_woodhit.efx");
level.effects["small_asphalt"]=loadfx("fx/impacts/small_concrete.efx");
level.effects["small_default"]=loadfx("fx/impacts/default_hit.efx");
}
/*
fordul()
{
min=-1;
player=getentarray("player","classname");
for(i=0;i<player.size;i++)
{
time = 0.2;
dst=distance(self._sentryhead.origin,player[i].origin);
ve = vectorNormalize(player[i].origin - self._sentryhead.origin);
angles = vectorToAngles(ve);
fw=maps\mp\_utility::vectorScale(anglestoforward(angles),dst);
trace=bullettrace(self._sentryhead.origin,self._sentryhead.origin+fw,true,self._sentryhead);
if((dst<min || min<0) && player[i].pers["team"]=="axis" && player[i].pers["team"]!="spectator" && trace["fraction"]<1 && trace["entity"]==player[i] && isPlayer(trace["entity"]))
{
self._sentryhead rotateTo(player[i].origin,2); //elfordítja nemtommi nemtomhova (még)
self._sentryhead rotateTo (vectortoangles(player[i].origin - self._sentryhead.origin), 2); //elforgatja 'time' idő alatt
wait 2; //megvárja a time-t
self._sentryhead.angles = vectortoangles(player[i].origin - self._sentryhead.origin);
thread lo();
}
wait 0.2;
}
}
lo()
{
min=-1;
founded = undefined;
player=getentarray("player","classname");
for(i=0;i<player.size;i++)
{
dst=distance(self._sentryhead.origin,player[i].origin);
ve = vectorNormalize(player[i].origin - self._sentryhead.origin);
angles = vectorToAngles(ve);
fw=maps\mp\_utility::vectorScale(anglestoforward(angles),dst);
trace=bullettrace(self._sentryhead.origin,self._sentryhead.origin+fw,true,self._sentryhead);
if((dst<min || min<0) && player[i].pers["team"]=="axis" && player[i].pers["team"]!="spectator" && trace["fraction"]<1 && trace["entity"]==player[i] && isPlayer(trace["entity"]))
{
min=dst;
founded=player[i];
player[i] finishPlayerDamage(player[i], self, 5, 1, "MOD_RIFLE_BULLET", "springfield_mp", (0,0,0), (0,0,0), "none",0);
self playlocalsound("weap_mp44_fire_plr");
}
}
if(min<0)
return -1;
else
return founded;
}
celratart()
{
player=getentarray("player","classname");
for(i=0;i<player.size;i++)
self rotateTo( vectortoangles( player[i].origin - self._sentryhead.origin ), 2 ); // ez meg az alsó akkor kell ha már célra tart a sentry
wait 2;
}
lockedon()
{
player=getentarray("player","classname");
for(i=0;i<player.size;i++)
self rotateTo( vectortoangles( player[i].origin - self._sentryhead.origin ), 2 );
wait 2; //ez a 2 meg "lock on"-kor
}
closest()
{
min=-1;
founded = undefined;
player=getentarray("player","classname");
for(i=0;i<player.size;i++)
{
dst=distance(self._sentryhead.origin,player[i].origin);
ve = vectorNormalize(player[i].origin - self._sentryhead.origin);
angles = vectorToAngles(ve);
fw=maps\mp\_utility::vectorScale(anglestoforward(angles),dst);
trace=bullettrace(self._sentryhead.origin,self._sentryhead.origin+fw,true,self._sentryhead);
if((dst<min || min<0) && player[i].pers["team"]=="axis" && player[i].pers["team"]!="spectator" && trace["fraction"]<1 && trace["entity"]==player[i] && isPlayer(trace["entity"]))
{
min=dst;
founded=player[i];
thread fordul();
}
}
if(min<0)
return -1;
else
return founded;
}
sentrygun()
{
players=getentarray("player","classname");
for(i=0;i<players.size;i++)
self endon("disconnect");
self._sentry = spawn( "script_model", self.origin );
self._sentry setModel("xmodel/sentry_gun_4pod");
self._sentry.angles = self.angles;
self._sentryhead=spawn("script_model", self.origin + (0,0,35));
self._sentryhead setModel("xmodel/caspi_minigun_head");
self playsound("minigun");
self playsound("use_sentry");
for(;;)
{
players=getentarray("player","classname");
for(i=0;i<players.size;i++)
{
if(players[i].pers["team"]!=self.pers["team"])
{
thread closest();
}
}
wait 0.2;
}
}