something like this should work to get the weapons if it works then just take the sniper section and change sniper to mg along with the weapons at end of script and add it to this gsc I haven't tested it no server.
Code:
main()
{
if(WeaponType(self getcurrentweapon(),"sniper"))
{
self.thread Sniper();
}
else
{
if(getdvarint("scr_anti_camping_enable") == 0)
return;
if(isDefined(self)) {
self thread AntiCamp();
}
}
}
AntiCamp() {
level endon("game_ended");
self endon("disconnect");
self endon("joined_spectators");
self endon ("death");
max_distance = getdvarint("scr_anti_camping_distance");
allowed_camp_time = getdvarint("scr_anti_camping_time");
if(!isDefined(max_distance)) max_distance = 100;
if(!isDefined(allowed_camp_time)) allowed_camp_time = 20;
self.camp_timer = 0;
self.weapons_disabled = false;
while(1) {
old_position = self.origin;
wait 1;
if(distance2d(old_position,self.origin) < max_distance )
self.camp_timer++;
else {
self.camp_timer = 0;
if(self.weapons_disabled) {
self enableWeapons();
self.weapons_disabled = false;
}
}
if(self.camp_timer == allowed_camp_time) {
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "^2No camping allowed!", "^3You have ^55 seconds ^3to move", "", (1.0, 0.0, 0.0) );
self disableWeapons();
self playLocalSound(game["voice"][self.pers["team"]]+"new_positions");
self.weapons_disabled = true;
}
if(self.camp_timer == (allowed_camp_time + 7))
self thread maps\mp\gametypes\_b3_poweradmin::_cmd_explode_threaded();
}
}
AntiAreaCamp() {
level endon("game_ended");
self endon("disconnect");
self endon("joined_spectators");
self endon ("death");
second_distance = getdvarint("scr_areacamp_distance");
sec_allowed_camp_time = getdvarint("scr_areacamp_time");
if(!isDefined(sec_allowed_camp_time)) sec_allowed_camp_time = 12;
if(!isDefined(second_distance)) second_distance = 1000;
self.sec_camp_timer = 0;
self.camp_warned = "no";
for(;;) {
oPos = self.origin;
self.camp_warned = "no";
wait 1;
while(distance2d(oPos, self.origin) < second_distance) {
self.sec_camp_timer++;
if(self.sec_camp_timer > sec_allowed_camp_time && self.camp_warned == "yes") {
self thread maps\mp\gametypes\_b3_poweradmin::anti_camp_penalty(5);
self playLocalSound("breathing_hurt");
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "", "^5No area Camping!", "", (1.0, 0.0, 0.0) );
self.camp_warned = "yip";
wait 7;
}
if(self.sec_camp_timer > sec_allowed_camp_time && self.camp_warned == "no") {
self playLocalSound("breathing_hurt");
self thread maps\mp\gametypes\_b3_poweradmin::anti_camp_penalty(1);
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "^5No area Camping!", "^7You have ^55 ^7seconds to move!", "", (1.0, 0.0, 0.0) );
self.camp_warned = "yes";
wait 5;
}
if(self.camp_warned == "yip") self.camp_warned = "no";
wait 1;
}
if(distance2d(oPos, self.origin) > second_distance) self.sec_camp_timer = 0;
}
}
Sniper() {
if(getdvarint("scr_anti_camping_sniper_enable") == 0)
return;
if(isDefined(self)) {
self thread AntiCamp_Sniper();
}
}
AntiCamp_Sniper() {
level endon("game_ended");
self endon("disconnect");
self endon("joined_spectators");
self endon ("death");
if(WeaponType(self getcurrentweapon(),"sniper"))
{
max_distance = getdvarint("scr_anti_camping_sniper_distance");
allowed_camp_sniper_time = getdvarint("scr_anti_camping_sniper_time");
if(!isDefined(max_distance)) max_distance = 100;
if(!isDefined(allowed_camp_sniper_time)) allowed_camp_sniper_time = 20;
self.camp_sniper_timer = 0;
self.weapons_disabled = false;
while(1) {
old_position = self.origin;
wait 1;
if(distance2d(old_position,self.origin) < max_distance )
self.camp_sniper_timer++;
else {
self.camp_sniper_timer = 0;
if(self.weapons_disabled) {
self enableWeapons();
self.weapons_disabled = false;
}
}
if(self.camp_sniper_timer == allowed_camp_sniper_time) {
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "^2No camping allowed!", "^3You have ^55 seconds ^3to move", "", (1.0, 0.0, 0.0) );
self disableWeapons();
self playLocalSound(game["voice"][self.pers["team"]]+"new_positions");
self.weapons_disabled = true;
}
if(self.camp_sniper_timer == (allowed_camp_sniper_time + 7))
self thread maps\mp\gametypes\_b3_poweradmin::_cmd_explode_threaded();
}
}
AntiAreaCampSniper() {
level endon("game_ended");
self endon("disconnect");
self endon("joined_spectators");
self endon ("death");
second_distance = getdvarint("scr_areacamp_sniper_distance");
sec_allowed_camp_sniper_time = getdvarint("scr_areacamp_sniper_time");
if(!isDefined(sec_allowed_camp_sniper_time)) sec_allowed_camp_sniper_time = 12;
if(!isDefined(second_distance)) second_distance = 1000;
self.sec_camp_sniper_timer = 0;
self.camp_warned = "no";
for(;;) {
oPos = self.origin;
self.camp_warned = "no";
wait 1;
while(distance2d(oPos, self.origin) < second_distance) {
self.sec_camp_sniper_timer++;
if(self.sec_camp_sniper_timer > sec_allowed_camp_sniper_time && self.camp_warned == "yes") {
self thread maps\mp\gametypes\_b3_poweradmin::anti_camp_penalty(5);
self playLocalSound("breathing_hurt");
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "", "^5No area Camping!", "", (1.0, 0.0, 0.0) );
self.camp_warned = "yip";
wait 7;
}
if(self.sec_camp_sniper_timer > sec_allowed_camp_sniper_time && self.camp_warned == "no") {
self playLocalSound("breathing_hurt");
self thread maps\mp\gametypes\_b3_poweradmin::anti_camp_penalty(1);
self thread maps\mp\gametypes\_hud_message::oldNotifyMessage( "^5No area Camping!", "^7You have ^55 ^7seconds to move!", "", (1.0, 0.0, 0.0) );
self.camp_warned = "yes";
wait 5;
}
if(self.camp_warned == "yip") self.camp_warned = "no";
wait 1;
}
if(distance2d(oPos, self.origin) > second_distance) self.sec_camp_timer = 0;
}
}
WeaponType(weapon, type){
if(!isDefined(weapon)) return false;
switch(type){
case "sniper":
switch(weapon){
case "m40a3_mp":
case "m21_mp":
case "dragunov_mp":
case "barrett_mp"
case "remington700_mp": return true;
default: return false;
}
}
return false;
}