Navigation

Anti camp gsc script.

Justin

Member

Some script to force people to keep moving in your mod

//to be threaded by a player on spawn.
main()
{
if(getdvarint("scr_anticamp" == 0)
return;
wait 5; //spawn wait
self thread AntiCamp();
}

AntiCamp()
{
level endon( "game_ended" );
self endon( "disconnect" );
self endon( "joined_spectators" );
self endon ( "death" );

DefaultCampTime = getdvarint("scr_maxcamptime" //10
MaxCampTime = DefaultCampTime;
MinCampTime = getdvarint("scr_mincamptime" //6
CampDistance = getdvarint("scr_campdistance" //50
CampPunishTime = getdvarint("scr_camppunishtime" //5
CampResetTime = (getdvarint("scr_campresettime" - 1) * 1000; //16
LastCampTime = 0;

if(!isdefined(self.pers["camppunishment"]))
self.pers["camppunishment"] = 0;

L = 0;
s = 0;

for(c=0;;c++)
{
old = self.origin;
wait 1;
new = self.origin;

L = (distance(new,old));

if (L > CampDistance)
c = 0;
else if(s > (CampPunishTime - 1))
{
self.pers["camppunishment"]++;
//some punishment based on how much times already got punished?
self punish();
s = 0;
c = 0;
}
if(c > (MaxCampTime - 1))
{
if(s < CampPunishTime)
{
iprintln(self, " is Camping!"
//ping him on radar?
self iprintlnbold( "^1Stop Camping!" );
self iprintlnbold( "^1" + (CampPunishTime - s) + "^7 seconds remaining before punishment" );
}
LastCampTime = gettime();
s++;
}
else
s = 0;
if(s == 1 && MaxCampTime > MinCampTime)
MaxCampTime--;
if( MaxCampTime != DefaultCampTime && ( getTime() - LastCampTime ) > CampResetTime )
{
//reset
MaxCampTime = DefaultCampTime;
}
}
}


isInSpace(front, right, left, rear, bottom, ceiling)
{
if( isdefined( bottom ) && isdefined( ceiling ))
if(self.origin[1] < front && self.origin[1] > rear && self.origin[0] > right && self.origin[0] < left && self.origin[2] < ceiling && self.origin[2] > bottom )
return true;
if(self.origin[1] < front && self.origin[1] > rear && self.origin[0] > right && self.origin[0] < left )
return true;
return false;
}

punish()
{
level endon( "game_ended" );
self endon( "disconnect" );
self endon( "joined_spectators" );
self endon ( "death" );

originX = self.origin[0];
originY = self.origin[1];
camparea = getdvarint( "scr_camparea" ); //120

up = originY + camparea;
right = originX - camparea;
left = originX + camparea;
down = originY - camparea;

self iprintlnbold( " " );
self iprintlnbold( " " );
self iprintlnbold( " " );
self iprintlnbold( "Move out of your camp area!" );
self iprintlnbold( "^1Your weapons are disabled while inside." );
self disableweapons();
while( self isInSpace(up, right, left, down) )
wait .05;
self enableweapons();
self iprintlnbold( " " );
self iprintlnbold( " " );
self iprintlnbold( " " );
}



Posted on 21.08.2011 / 10:49 - Edited by Justin on 21.08.2011 / 11:32

REPLIES

bartez

Member

Justin - you should Disable Smileys


Posted on 21.08.2011 / 11:18

Justin

Member

Just a shame the tabs got deleted. Will be fixed soon.


Posted on 21.08.2011 / 14:08

zolikoko

Member

BETTER,SMALLER,WITH HUD

watch_anti_camp()
{
self endon("disconnect"
self endon("death"
self endon("joined_spectators"
level endon("game_ended"
if(getintdvar("scr_anticamp"!=1)
return;
self.camping = 0;
if(!isDefined(self.bar))
{
self.bar = self maps\mp\gametypes\_hud_util::createBar((1,1,1), 64, 8);
self.bar maps\mp\gametypes\_hud_util::setPoint("CENTER", undefined, 0, 230);
}
while(isAlive(self))
{
oldorg = self.origin;
wait .03;
if(distance(oldorg, self.origin) < 3.5)
self.camping += 0.005;
else
self.camping -= 0.0055;
if(self.camping > 1)
self.camping = 1;
else if(self.camping < 0)
self.camping = 0;
self.bar maps\mp\gametypes\_hud_util::updateBar(self.camping);
if(self.camping == 1)
{
self iprintlnbold("^9Move or you will be killed!"
oldorg = self.origin;
wait 2;
if(distance(oldorg, self.origin) < 150)
{
self suicide();
}
}
}
}


@4D1 EMZ

Posted on 05.07.2012 / 18:20 - Edited by zolikoko on 05.07.2012 / 18:21

arifrezza

Member

How to run this script in promodlive cod4?
Sorry for being noob.


asr

Posted on 24.06.2013 / 11:44

Post reply

ONLY USERS CAN POST REPLIES.