Results 1 to 9 of 9

Thread: Random player assignment

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Default Random player assignment

    I want to randomly assign all players from each team to an integer 1 up to 12 and send each through a switch.
    It's important the player selection is random so the players are not assigned the same Case every round.

    Allies
    1 - random player to Case 1
    2 - random player to Case 2
    3 - random player to Case 3
    Etc

    Switch
    Case 1
    Case 2
    Case 3
    Etc

    Also important is priority to assigning 1 then 2 then 3 etc

    What's the best way to do that ?

  2. #2

    Default

    The logic for this would be:

    1- Get random number from the total players
    2- Check if that number is already assigned
    3- if it is, create another number
    4 - If not set player with the number:
    $player[local.random_number]

    But for this to work properly you have to store the numbers in a cvar or a file because other way you will lose the numbers when the new round start.
    Last edited by DoubleKill; March 15th, 2023 at 05:23 AM.

  3. #3

    Default

    I have trouble with for statements -
    How do I create a new number without repeating already used numbers?
    Here is what I have so far - so you can better see what Im trying to do.
    Actually, only the first three need to be random as all the following assignments are the same. If that makes it simpler.

    I am working in sorrids state files also - using SH

    Code:
    /* <<<<< Sorridstrokers weapon state >>>>>
    
    	If you want to make any variable accesable after the player has left the server:
    
    		self.listener.your_variable = your value
    
    	Else:
    
    		self.your_variable = your value
    
    */
    
    main local.weapon:
    
    if (self.dmteam == "allies")
       {
    
       local.randomchoice = randomint(self.dmteam.size)+1
    
    	for(local.i=1;local.i<=self.dmteam.size;local.i++)
    		{
    		if(local.randomchoice != self.player[local.i])
    			{
    			self.player[local.i] = local.randomchoice
    			thread allied_squad_assignment local.i local.weapon
    			}
    			else {wtf}
    		}
       }
       else
       {//axis}
    
    end
    
    allied_squad_assignment local.i local.weapon:
    
    switch( local.i )
    	{
            case 1://Lieutenant - SMG SQUAD LEADER
            self takeall
    	if(getcvar SUB_SMGforM1 == "1")
    	  {
    	  self give ("models/weapons/m1_garand.tik")
    	  }
    	  else
    	  {
    	  self give ("models/weapons/thompsonsmg.tik")
    	  }
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass smg
            break
            case 2://Corporal - SNIPER SPECIALIST
            self takeall
    	self give ("models/weapons/svt_rifle.tik")
        	self give ("models/weapons/silencedpistol.tik")
    	self give ("models/weapons/RDG-1_Smoke_grenade.tik")
    	self ammo smokegrenade 2
    	self useweaponclass rifle
            break
    	case 3://Seargent - BAR SPECIALIST
            self takeall
    	if(getcvar SUB_MGforM1 == "1")
    	  {
    	  self give ("models/weapons/m1_garand.tik")
    	  }
    	  else
    	  {
    	  self give ("models/weapons/bar.tik")
    	  }
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self give ("models/weapons/RDG-1_Smoke_grenade.tik")
    	self ammo grenade 1
    	self ammo smokegrenade 1
    	self useweaponclass mg
            break
            default://PRIVATE - RIFLER
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
            break
    }
    end
    Last edited by ViPER; March 15th, 2023 at 06:01 PM. Reason: code

  4. #4

  5. #5

    Default

    I'm not fully understanding arrays in a for statement.

    if i have a team of 6 players, would I be making an array with random integers 1-6 like this -
    Code:
    level.random_pick = makeArray
    1 "5"
    2 "3"
    3 "2"
    4 "4"
    5 "6"
    6 "1"
    endArray
    Do I fill the array with random numbers first then the first player is assigned - 5, second - 3 and so on?

    or am I making the array and assigning the players simultaneously?
    Last edited by ViPER; March 16th, 2023 at 08:57 PM.

  6. #6

    Default

    You might not even need to save those values in a separate file. I think using game.variables or game.arrays (as opposed to local. and level.) can save a player's assignment between levels. But that assumes every player keeps the same entnum between levels too.
    Something like this below may or may not be useful.

    Code:
    NOTE: you might need to add "game.playerassigned[0] = NIL" before running this script. initializing [0] as NIL makes .size = 0 instead of -1.
    
    main: // exec global/thisscript.scr, run this after level waittill spawn.
    
    	while($player.size < 1) { waitframe }
    	local.players = $player.size
    
    	for(local.i = 1; local.i <= $player.size; local.i++)
    	{
    		if($player[local.i] != NULL && ($player[local.i].dmteam == "allies" || $player[local.i].dmteam == "axis"))
    		{
    			if(game.playerassigned[local.i] == NIL || game.playerassigned[local.i] != $player[local.i].assignment)
    			{
    				local.r = randomint(12) + 1
    				while(local.r == $player[local.i].assignment)
    				{
    					local.r = randomint(12) + 1
    					waitframe
    				}
    
    				$player[local.i].assignment = local.r
    				game.playerassigned[local.i] = local.r
    
    				if($player[local.i].dmteam == "allies") { thread allied_squad_assignment local.r }
    				if($player[local.i].dmteam == "axis") { thread axis_squad_assignment local.r }
    			}
    		}
    		if($player[local.i] == NULL) { game.playerassigned[local.i] = NIL }
    	}
    
    	while($player.size <= local.players) { waitframe } // wait until a new player joins, then restart this thread.
    	thread main
    end
    Last edited by Searingwolfe; March 17th, 2023 at 11:31 AM.

  7. #7

    Default

    Thanks for your help everybody, I'm afraid I just couldn't wrap my head around using the array in a for statement. So I had to think of another way.

    I made a cascading switch - players are randomly sent to one of the cases and if its taken they are sent to the next case and so on. if they reach the bottom they are sent to the top.
    Does this seem efficient?

    It seems to work except for this -
    Code:
    self model ("models/player/german_wehrmacht_soldier.tik")
    the axis models don't have team icons and are seen by allies with allied avatars.


    team selector
    Code:
    squad_builder local.weapon:
            self takeall
    
    if (self.dmteam == "allies")
       {
       local.r = randomint(allies.dmteam.size)+1
       local.t = allies.dmteam.size
    /////////////////////////debug////
    //local.r = (int(getcvar test_randomchoice))
    //local.t = (int(getcvar test_teamsize))
    /////////////////////////debug////
    //level.2assigned = 1
       thread allied_squad_assignment local.r local.t local.weapon
       }
       else
       {
       local.r = randomint(axis.dmteam.size)+1
       local.t = axis.dmteam.size
    /////////////////////////debug////
    //local.r = (int(getcvar test_randomchoice))
    //local.t = (int(getcvar test_teamsize))
    /////////////////////////debug////
       thread axis_squad_assignment local.r local.t local.weapon
       }
    end
    allied squad assignments
    Code:
    allied_squad_assignment local.r local.t local.weapon:
    
    switch( local.r )
    	{
            case 1:////////////Lieutenant - SMG SQUAD LEADER////////////
    	if(level.1assigned == 1 )
    		{
    		local.r = 2
    		goto allied_squad_assignment local.r local.t local.weapon
    		}
    	if(level.1assigned == nil)
    		level.1assigned = 1
            self takeall
    	local.sub = (getcvar "SUB_SMGforM1")
    switch( local.sub )
    	{
            case 1:
    	  self give ("models/weapons/m1_garand.tik")
    	  self useweaponclass rifle
    	  //local.rweapon = models/weapons/m1_garand.tik
    	  //thread weapon_check local.rweapon local.weapon
    	  break
            default:
    	  self give ("models/weapons/thompsonsmg.tik")
    	  self useweaponclass smg
    	  //local.rweapon = models/weapons/thompsonsmg.tik
    	  //thread weapon_check local.rweapon local.weapon 
    	  break
    	}
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self model ("models/player/allied_airborne.tik")
    	wait 5
    	self iprint ("You are a Lieutenant - SQUAD LEADER ") 1
            break
            case 2:////////////Corporal - SNIPER SPECIALIST////////////
    	if(level.2assigned == 1 )
    		{
    		if(local.t <= 2)
    		  {
    		  local.r = 1
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 3
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.2assigned == nil)
    		level.2assigned = 1
            self takeall
    	self give ("models/weapons/svt_rifle.tik")
        	self give ("models/weapons/silencedpistol.tik")
    	self give ("models/weapons/RDG-1_Smoke_grenade.tik")
    	self ammo smokegrenade 2
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/svt_rifle.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_pir_soldier.tik")
    	wait 5
    	self iprint ("You are a Corporal - SNIPER SPECIALIST") 1
            break
    	case 3:////////////Seargent - BAR SPECIALIST////////////
    	if(level.3assigned == 1 )
    		{
    		if(local.t <= 3)
    		  {
    		  local.r = 1
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 4
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.3assigned == nil)
    		level.3assigned = 1
    
            self takeall
    	local.sub = (getcvar "SUB_MGforM1")
    switch( local.sub )
    	{
            case 1:
    	  self give ("models/weapons/m1_garand.tik")
    	  self useweaponclass rifle
    	  //local.rweapon = models/weapons/m1_garand.tik
    	  //thread weapon_check local.rweapon local.weapon
    	  break
            default:
    	  self give ("models/weapons/bar.tik")
    	  self useweaponclass smg
    	  //local.rweapon = models/weapons/bar.tik
    	  //thread weapon_check local.rweapon local.weapon 
    	  break
    	}
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self give ("models/weapons/RDG-1_Smoke_grenade.tik")
    	self ammo grenade 1
    	self ammo smokegrenade 1
    	self useweaponclass mg
    	//local.rweapon = models/weapons/bar.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_pir_soldier.tik")
    	wait 5
    	self iprint ("You are a Seargent - BAR SPECIALIST ") 1
            break
            case 4:////////////SPECIALIST RIFLER////////////
    	if(level.4assigned == 1 )
    		{
    		if(local.t <= 4)
    		  {
    		  local.r = 1
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 5
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.4assigned == nil)
    		level.4assigned = 1
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_Pir_scout.tik")
    	wait 5
    	self iprint ("You are a SPECIALIST - RIFLER") 1
            break
            case 5:////////////PRIVATE - RIFLER////////////
    	if(level.5assigned == 1 )
    		{
    		if(local.t <= 5)
    		  {
    		  local.r = 1
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 6
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.5assigned == nil)
    		level.5assigned = 1
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_Pir_scout.tik")
    	wait 5
    	self iprint ("You are a PRIVATE 1ST CLASS - RIFLER") 1
            break
            case 6:////////////PRIVATE - SCOUT////////////
    	if(level.6assigned == 1 )
    		{
    		if(local.local.t <= 6)
    		  {
    		  local.r = 1
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 6
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.6assigned == nil)
    		level.6assigned = 1
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_Pir_scout.tik")
    	wait 5
    	self iprint ("You are a PRIVATE - SCOUT RIFLER") 1
            break
            case 7:////////////PRIVATE - RIFLER////////////
    	if(level.7assigned == 1 )
    		{
    		if(local.t <= 7)
    		  {
    		  local.r = 1
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 8
    		  goto allied_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.7assigned == nil)
    		level.7assigned = 1
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_Pir_scout.tik")
    	wait 5
    	self iprint ("You are a PRIVATE 1st Class - RIFLER") 1
            break
            case 8:////////////PRIVATE - SCOUT RIFLER////////////
    	if(level.8assigned == 1 )
    		{
    		local.r = 1
    		wait .2
    		goto allied_squad_assignment local.r local.t local.weapon
    		}
    	if(level.8assigned == nil)
    		level.8assigned = 1
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_Pir_scout.tik")
    	wait 5
    	self iprint ("You are a PRIVATE - SCOUT RIFLER") 1
            break
            default:////////////PRIVATE - RIFLER////////////
            self takeall
    	self give ("models/weapons/enfield.tik")
        	self give ("models/weapons/colt45.tik")
    	self give ("models/weapons/m2frag_grenade.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/enfield.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/allied_501st_Pir_scout.tik")
    	wait 5
    	self iprint ("You are a PRIVATE - RIFLER") 1
            break
    }
    end
    axis squad assignments
    Code:
    axis_squad_assignment local.r local.t local.weapon:
    
    switch( local.r )
    	{
            case 1://Gruppenführer - SMG SQUAD LEADER
    	if(level.1xassigned == 1 )
    		{
    		local.r = 2
    		goto aaxis_squad_assignment local.r local.t local.weapon
    		}
    	if(level.1xassigned == nil)
    		level.1xassigned = 1
            self takeall
    	self give ("models/weapons/mp40.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass smg
    	//local.rweapon = models/weapons/mp40.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/German_wehrmacht_officer.tik")
    	wait 5
    	self iprint ("You are Gruppenführer - SQUAD LEADER ")
            break
            case 2://Scharfschützin - SNIPER SPECIALIST
    	if(level.2xassigned == 1 )
    		{
    		if(local.t <= 2)
    		  {
    		  local.r = 1
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 3
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.2xassigned == nil)
    		level.2xassigned = 1
            self takeall
    	self give ("models/weapons/g43.tik")
        	self give ("models/weapons/silencedpistol.tik")
    	self give ("models/weapons/RDG-1_Smoke_grenade.tik")
    	self ammo smokegrenade 2
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/g43.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_wehrmacht_soldier.tik")
    	wait 5
    	self iprint ("You are Scharfschützin - SNIPER SPECIALIST ")
            break
    	case 3://M.G.Schütze - MG SPECIALIST
    	if(level.3xassigned == 1 )
    		{
    		if(local.t <= 3)
    		  {
    		  local.r = 1
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 4
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.3xassigned == nil)
    		level.3xassigned = 1
            self takeall
    	self give ("models/weapons/mp44.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self give ("models/weapons/RDG-1_Smoke_grenade.tik")
    	self ammo grenade 1
    	self ammo smokegrenade 1
    	self useweaponclass mg
    	//local.rweapon = models/weapons/mp44.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_wehrmacht_soldier.tik")
    	wait 5
    	self iprint ("You are M.G.Schütze - MG SPECIALIST ")
            break
            case 4://Schützen - RIFLER
    	if(level.4xassigned == 1 )
    		{
    		if(local.t <= 4)
    		  {
    		  local.r = 1
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 5
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.4xassigned == nil)
    		level.4xassigned = 1
            self takeall
    	self give ("models/weapons/kar98.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/kar98.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_Kradshutzen.tik")
    	wait 5
    	self iprint ("You are Schützen - RIFLER ")
            break
            case 5://Schützen - RIFLER
    	if(level.5xassigned == 1 )
    		{
    		if(local.t <= 5)
    		  {
    		  local.r = 1
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 6
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.5xassigned == nil)
    		level.5xassigned = 1
            self takeall
    	self give ("models/weapons/kar98.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/kar98.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_Kradshutzen.tik")
    	wait 5
    	self iprint ("You are Schützen - RIFLER ")
            break
            case 6://Schützen - RIFLER
    	if(level.6xassigned == 1 )
    		{
    		if(local.local.t <= 6)
    		  {
    		  local.r = 1
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 6
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.6xassigned == nil)
    		level.6xassigned = 1
            self takeall
    	self give ("models/weapons/kar98.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/kar98.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_Kradshutzen.tik")
    	wait 5
    	self iprint ("You are Schützen - RIFLER ")
            break
            case 7://Schützen - RIFLER
    	if(level.7xassigned == 1 )
    		{
    		if(local.t <= 7)
    		  {
    		  local.r = 1
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		  else
    		  {
    		  local.r = 8
    		  goto axis_squad_assignment local.r local.t local.weapon
    		  }
    		}
    	if(level.7xassigned == nil)
    		level.7xassigned = 1
            self takeall
    	self give ("models/weapons/kar98.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/kar98.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_Kradshutzen.tik")
    	wait 5
    	self iprint ("You are Schützen - RIFLER ")
            break
            case 8://Schützen - RIFLER
    	if(level.8xassigned == 1 )
    		{
    		local.r = 1
    		wait .2
    		goto axis_squad_assignment local.r local.t local.weapon
    		}
    	if(level.8xassigned == nil)
    		level.8xassigned = 1
            self takeall
    	self give ("models/weapons/kar98.tik") 
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/kar98.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_Kradshutzen.tik")
    	wait 5
    	self iprint ("You are Schützen - RIFLER ")
            break
            default://Schützen - RIFLER
            self takeall
    	self give ("models/weapons/kar98.tik")
        	self give ("models/weapons/p38.tik")
    	self give ("models/weapons/steilhandgranate.tik")
    	self ammo grenade 1
    	self useweaponclass rifle
    	//local.rweapon = models/weapons/kar98.tik
    	//thread weapon_check local.rweapon local.weapon
    	self model ("models/player/german_Kradshutzen.tik")
    	wait 5
    	self iprint ("You are Schützen - RIFLER ")
            break
    }
    end

  8. #8

    Default

    Quote Originally Posted by ViPER View Post
    Code:
    self model ("models/player/german_wehrmacht_soldier.tik")
    Is "model" a SP var ? Is that why it only works properly for allies? Aside from that issue I like that it doesn't change the user's preference so the next map it's back to thier chosen skin.

    I tried
    germanmodel
    germanplayermodel
    dm_germanplayermodel

    Is it possible to remove all the team avatars and detection cross hairs ? This would be a preferred solution, adding realism.

  9. #9

    Default

    @Searingwolfe: The "game" variable dont work on MP, only works properly on SP mode.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •