powerservermod afk funktion umschreiben zu anticamping

clutzi
hi,
hab nen cod2 1.0 server der mit dem powerserver 0.98mod laufen tut. in diesen mod gibt es leider kein anticamping tool. es gibt aber ne funktion das inaktive spieler nach ner gewissen ziet gekickt bzw. in den zuschauerraum geschickt werden.
jetz die frage: kann man diese tool um schreiben zu einen anticampingtool mit fest eingestllten bewegungsradius? es funzt ja so aber so bald man die maus bewegt wird der timer für die inaktivität zurück gesetzt man müßte theoretisch es um einen bewegungsradius erweitern das der timer erst abgeschaltet wird wenn man auserhalb diese radiuses ist. da ich keine ahnung hab vom modden frag ich hier nach.

ich hoffe hier kann mir jemand helfen

das is die afk-monitor.gsc

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
 
Init()
{
	if (getcvar("scr_afk_limit") == "" || getcvarint("scr_afk_limit") < 0)
		setcvar("scr_afk_limit", 0);
	level.afk_timer = getcvarint("scr_afk_limit");

	level thread onPlayerConnect();
 }

onPlayerConnect()
{
	for(;;)
	{
		level waittill("connecting", player);

		player thread onPlayerSpawned();
		player thread onJoinedSpectators();
	}
}

onPlayerSpawned()
{
	self endon("disconnect");
	
	for(;;)
	{
		self waittill("spawned_player");
		self notify("stop_afk_monitor");

		wait .1;

		if (level.afk_timer)
			self thread AFK_Monitor();
	}
}

onJoinedSpectators()
{
	self endon("disconnect");
	
	for(;;)
	{
		self waittill("joined_spectators");
		self notify("stop_afk_monitor");
	}
}

AFK_Monitor()
{
	self endon("disconnect");
	self endon("killed_player");
	self endon("stop_afk_monitor");

	level.afk_timer = getcvarint("scr_afk_limit");
	if (level.afk_timer < 0)
		level.afk_timer = 0;

	if (level.afk_timer == 0)
		return;

	old_origin = self.origin;
	afk_limit = level.afk_timer * 2;
	afk_time = 0;

	while (1)
	{
		wait 0.5;

		if (self.sessionstate != "playing" || 
			(isDefined(self.healing) && self.healing) || 
			(isDefined(self.beinghealed) && self.beinghealed ) ||
			(isDefined(self.bomb_interraction) && self.bomb_interraction ) )

		{
			afk_time = 0;
			wait 5;
			continue;
		}

		new_origin = self.origin;

		if (old_origin == new_origin)
			afk_time++;
		else
		{
			old_origin = new_origin;
			afk_time = 0;
			continue;
		}

		if (afk_time >= afk_limit)
		{
			thisPlayerNum = self getEntityNumber();
			setcvar("g_switchspec", thisPlayerNum);
			self iprintlnbold("^3You were moved to Spec for being AFK");
			return;
		}
		if (afk_time == afk_limit - 20)
		{
			self iprintlnbold("^3Warning, you seem to be AFK due to lack of movement");
			self iprintlnbold("^3Soon you will be moved into Spec if you don't start moving");
		}
	}
}