Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Donate
Collapse

Plutonium

  1. Home
  2. BO2 Modding Releases & Resources
  3. [Resource] Trickshotting GSC LIST!

[Resource] Trickshotting GSC LIST!

Scheduled Pinned Locked Moved BO2 Modding Releases & Resources
gscblack ops 2slides
25 Posts 16 Posters 9.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • frostyundefined Offline
    frostyundefined Offline
    frosty
    replied to Ioof on last edited by
    #7

    Enki fixed

    :::

    testestestestseteste

    :::

    1 Reply Last reply
    0
    • Ducxyundefined Offline
      Ducxyundefined Offline
      Ducxy
      wrote on last edited by
      #8

      Do you have a working change map script?

      1 Reply Last reply
      0
      • Sassundefined Offline
        Sassundefined Offline
        Sass Plutonium Staff
        replied to frosty on last edited by Sass
        #9

        frosty Just came from another post where the "Save & Load" scripts caused issues, and from reading your snippet, it has some issues that makes them unusable.

        Here's another script I just quickly came up with. Please make sure your script snippets are tested before posting (and if they already are, test them separated from each other).

        Note : I kept the self.snl stuff purely because it can have some purpose (for VIP functions for example) but it's not mandatory.


        Step 1 :
        Put this in onPlayerConnect() : player.snl = true;
        OR
        Put this in onPlayerSpawned() : self.snl = true;

        Step 2 :
        Put this in onPlayerSpawned() : self thread doSaveAndLoad();

        Step 3 :
        Put this anywhere in your file :

        doSaveAndLoad()
        {
            self endon("death");
            self endon("disconnect");
        
            if( self.snl == true )
            {
                self iPrintLn("Crouch and press [{+actionslot 2}] to save");
                self iPrintLn("Crouch and press [{+actionslot 1}] to load");
            }
            
            for(;;)
            {
                if (self actionSlotTwoButtonPressed() && self getStance() == "crouch" && self.snl == true)
                {
                    self.savedOrigin = self.origin;
                    self.savedAngles = self.angles;
                    self iPrintLn("Position saved");
                }
                if (self actionSlotOneButtonPressed() && self getStance() == "crouch" && self.snl == true)
                {
                    self setOrigin(self.savedOrigin);
                    self setPlayerAngles(self.savedAngles);
                    self iPrintLn("Position loaded");
                }
                wait 0.1;
            }
        }
        
        frostyundefined 1 Reply Last reply
        1
        • frostyundefined Offline
          frostyundefined Offline
          frosty
          replied to Sass on last edited by
          #10

          Sass Thanks for posting this. It was tested, but the script is made more for mod menus than being called when the player spawned, hence the reason why there is a toggle for on/off

          1 Reply Last reply
          0
          • Ducxyundefined Offline
            Ducxyundefined Offline
            Ducxy
            wrote on last edited by
            #11

            The slides wont launch me at all. like maybe 10 ft

            1 Reply Last reply
            0
            • roundsgqundefined Offline
              roundsgqundefined Offline
              roundsgq
              wrote on last edited by
              #12

              what is the calling for the platforms?

              1 Reply Last reply
              0
              • Rynoxarundefined Offline
                Rynoxarundefined Offline
                Rynoxar Contributor
                wrote on last edited by
                #13
                This post is deleted!
                1 Reply Last reply
                0
                • R1pzieundefined Offline
                  R1pzieundefined Offline
                  R1pzie
                  wrote on last edited by
                  #14

                  Better Slides

                  slideBind() //SLIDES
                  {
                  self endon("disconnect");
                  for(;;)
                  {
                  if(self getStance() == "crouch" && self actionslotthreebuttonpressed() && self.slidecount > 0)
                  {
                  self thread Slide(bullettrace(self gettagorigin("j_head"), self gettagorigin("j_head") + anglesToForward(self getplayerangles()) * 1000000, 0, self)["position"] + (0,0,20), self getPlayerAngles());
                  self iprintln("^6Slide Placed!");
                  self iprintln("^6Knife the carepackage to get launched!");
                  self.slidecount -= 1;
                  self iprintln("You have ^6"+self.slidecount+"^7 slides left");
                  wait .2;
                  }
                  wait .01;
                  }
                  wait .2;
                  }

                  Slide( slidePosition, slideAngles ) //SLIDES

                  {

                  level endon( "game_ended" );

                  level.slide[level.numberOfSlides] = spawn("script_model", slidePosition);

                  level.slide[level.numberOfSlides].angles = (0,slideAngles[1]-90,60);

                  level.slide[level.numberOfSlides] setModel("t6_wpn_supply_drop_trap");

                  level.numberOfSlides++;

                  for(;;)

                  {

                  foreach(player in level.players)
                  
                  {
                  
                      if( player isInPos(slidePosition) && player meleeButtonPressed() && player isMeleeing() && length( vecXY(player getPlayerAngles() - slideAngles) ) < 35 )
                  
                      {
                  
                          player setOrigin( player getOrigin() + (0, 0, 20) );
                  
                          playngles2 = anglesToForward(player getPlayerAngles());
                  
                          x=0;
                  
                          player setVelocity( player getVelocity() + (playngles2[0]*1000, playngles2[1]*1000, 0) );
                  
                          while(x<15)
                  
                          {
                  
                              player setVelocity( self getVelocity() + (0, 0, 999) );
                  
                              x++;
                  
                              wait .01;
                  
                          }
                  
                          wait 1;
                  
                      }
                  
                  }
                  

                  wait .01;

                  }
                  }

                  vecXY( vec ) //SLIDES

                  {

                  return (vec[0], vec[1], 0);

                  }

                  isInPos( sP ) //SLIDES

                  {

                  if(distance( self.origin, sP ) < 100)

                  return true;
                  

                  return false;
                  }

                  1 Reply Last reply
                  0
                  • Vulgarundefined Offline
                    Vulgarundefined Offline
                    Vulgar
                    wrote on last edited by
                    #15

                    frosty The lowered barriers script just causes me instant suicides on Vertigo

                    frostyundefined 1 Reply Last reply
                    0
                    • frostyundefined Offline
                      frostyundefined Offline
                      frosty
                      replied to Vulgar on last edited by
                      #16

                      Vulgar Go on google and look for a script to remove sky barriers should work after that

                      1 Reply Last reply
                      0
                      • Deicideundefined Offline
                        Deicideundefined Offline
                        Deicide
                        wrote on last edited by Deicide
                        #17

                        Better Change Class Function... Sometimes the original code needs a couple tries to work... i fixed this with some tinkering.

                        ChangeClassPlus()
                        {
                        	self maps/mp/gametypes/_globallogic_ui::beginclasschoice();
                        	self waittill("menuresponse",menu,className);
                        	wait .1;
                        	self maps\mp\gametypes\_class::setClass(self.pers["class"]);
                        	self maps\mp\gametypes\_class::giveLoadout(self.pers["team"],self.pers["class"]);
                        	wait .1;
                        }
                        

                        Good working billcam function... pretty sure this was Loz's code. It's been a while.

                        callBillcam()
                        {
                            if(self.billcamComing == 0)
                            {
                                self.billcamComing = 1;
                        	    self iPrintln("Billcam called by: ^3" + self.name);
                        	    level.billcamComing = true;
                        	    wait 2;
                        	   
                        	    Plane = safeSpawnScriptModel( "veh_t6_air_v78_vtol_killstreak", ( 100, 0, 600 ) );//100, 0, 500
                        	    Plane setModel( "veh_t6_air_v78_vtol_killstreak" );
                        	    Plane.angles = ( 0, 180, 0 );
                        	    Plane MoveTo( self.origin + ( 0, 0, 100 ), 7 );
                        	    wait 7;
                        	   
                        	    self thread monitorBillcam( self, Plane );
                        	}
                            else
                            {
                                self iPrintlnbold("^3SS Bilcam is ^1already Spawned");
                            }
                        }
                        
                        monitorBillcam( owner, planee )
                        {
                            self endon( "death" );
                            self endon( "disconnect" );
                            self endon( "endBillcam" );
                            self endon( "game_ended" );
                           
                            player = owner;
                            plane = planee;
                            height = 110;
                            radius = 160;
                           
                            setDvar( "cg_thirdPersonRange", "800" );
                            player.InPlane = false;
                           
                            for (;;)
                            {       
                                if ( !player.InPlane )
                                {               
                                    if ( Distance( player.origin, plane.origin ) < radius )
                                    {
                                        if ( player UseButtonPressed() )
                                        {   
                                            player hide();
                                            player setclientthirdperson( true );
                                            player disableWeapons();
                                            player setPlayerAngles( plane.angles + ( 0, 0, 0 ) );
                                            player Playerlinkto( plane );
                                            player.InPlane = true;
                                        }
                                    }
                                }
                                else if ( player.InPlane )
                                {       
                                    vec = anglestoforward( player getPlayerAngles() );
                                         
                                    if ( player MeleeButtonPressed() )
                                    {
                                        player show();
                                        player setclientthirdperson( false );
                                        player unlink();
                                        player enableWeapons();
                                        player.InPlane = false;
                                        plane delete();
                                        //player thread savePosition();
                                        safeSpawnFX( level.remote_mortar_fx[ "missileExplode" ], player.origin );
                                        buildPlatform( player.origin, player );
                                        player notify( "endBillcam" );
                                        wait 0.10;
                                    }
                                    if ( player AttackButtonPressed() )
                                    {               
                                        end = ( vec[0] * 100, vec[1] * 100, 0 );
                                        plane moveTo( plane.origin + end, .2 );
                                    }
                                    if ( player FragButtonPressed() )
                                    {
                                        height ++;
                                        plane moveTo( plane.origin + ( 0, 0, height ), .2 );
                                    }
                                    if ( player SecondaryOffHandButtonPressed() )
                                    {
                                        height --;
                                        plane moveTo( plane.origin - ( 0, 0, height ), .2 );
                                    }
                                }
                                else
                                {
                                }
                                wait 0.05;
                            }
                            wait 0.05;
                        }
                        
                        buildPlatform( location, player )
                        {     
                            location = self.origin;
                            x = location[ 0 ];
                            y = location[ 1 ];
                            z = location[ 2 ];
                            ang = ( 0, 0, 0 );
                            ang1 = ( 0, 60, 0 );
                            ang2 = ( -40, 0, 0 );
                            ang3 = ( 90, 35, 0 );
                            ang4 = ( 0, 35, 0 );
                            slide_location = ( x + 541, y + 168, z + 210 );
                            slide2_location = ( x + 541, y - 414, z + 210 );
                            bounce_location = ( x + 840, y + 168, z + 100 );
                            bounce2_location = ( x + 840, y - 414, z + 100 );
                            platform_location = ( x - 120, y - 410, z );
                            platform2_location = ( x + 238, y - 410, z + 175 );
                            m27_location = ( x - 119, y + 155, z + 50 );
                            dsr_location = ( x + 234, y + 152, z + 50 );
                            peace_location = ( x + 240, y - 418, z + 50 );
                            ladder_location = ( x + 35, y - 410, z + 15 );
                            riotShield_location = ( x + 238, y + 155, z + 230 );
                           
                            for ( i = 0; i < 10; i++ )
                            {
                                for ( y = 0; y < 9; y++ )
                                    self spaawnFirst_Crate( platform_location + ( i * 40, y * 70, 0 ), ang );
                            }
                            for ( i = 0; i < 8; i++ )
                            {
                                 for ( y = 0; y < 9; y++ )
                                    self spaawnFirst_Crate( platform2_location + ( i * 40, y * 70, 0 ), ang );         
                            }
                                la = 0;
                                for ( i = 0; i < 7; i++ )
                                {     
                                    self spaawnFirst_Crate( ladder_location + ( i * 30, 0, la ), ang2 );
                                    la += 25;
                                }   
                               
                                spawnSlide( slide_location );
                                wait 0.05;
                                spawnSlide( slide2_location );
                                wait 0.05;
                                spawnBounce( bounce_location, ang );
                                wait 0.05;
                                spawnBounce( bounce2_location, ang );
                                wait 0.05;
                                spawnWeapon( "dsr50_mp+steadyaim", dsr_location, ang );
                                wait 0.05;
                                spawnWeapon( "peacekeeper_mp+sf", peace_location, ang );
                                wait 0.05;
                                spawnWeapon( "hk416_mp+dualoptic", m27_location, ang );
                                wait 0.05;
                                spawnWeapon( "riotshield_mp", riotShield_location, ang3 );
                                wait 0.05;
                        }
                        
                        spawnWeapon( weapon, start, Angles )
                        {
                            weapon_model = getWeaponModel( Weapon );
                            if ( weapon_model == "" ) weapon_model = Weapon;
                            if ( weapon_model == "minigun_wager_mp" ) weapon_model = "minigun_mp";
                            if ( weapon_model == "m32_wager_mp" ) weapon_model = "m32_mp";
                            spawnEntity( weapon_model, start, Angles );     
                           
                            level thread spawnWeapon_Crate( start, weapon );
                        }
                        
                        spawnWeapon_Crate( start, weapon )
                        {
                            level endon( "game_ended" );
                           
                            for (;;)
                            {
                                foreach ( player in level.players )
                                {     
                                    if ( Distance( player.origin, start ) < 60 )
                                    {       
                                        if ( player usebuttonpressed() )
                                        {
                                            safeSpawnFX( level._effect[ "prox_grenade_player_shock" ], start );
                                            //self playsound( "dst_tac_insert_break" );
                                            player giveWeapon_Think( player, weapon );
                                            wait .50;
                                        }
                                    }
                                }
                                wait 0.05;
                            }
                        }
                        
                        giveWeapon_Think( player, weapon )
                        {
                            randomCamo = RandomIntRange( 0 , 44 );
                            player TakeWeapon( player.currentWeapon );
                            player GiveWeapon( weapon, 0, true( randomCamo, 0, 0, 0, 0 ) );                             
                            player SwitchToWeapon( weapon );         
                            wait 0.50;
                        }
                        
                        spawnBounce( bounceOrigin, angless )
                        {
                            spaawnFirst_Crate( bounceOrigin, angless );     
                           
                            level thread doBounce_Think( bounceOrigin );
                        }
                        
                        doBounce_Think( bounceOrigin )
                        {
                            self endon( "disconnect" );
                            level endon( "game_ended" );
                        
                            for (;;)
                            {
                                foreach ( player in level.players )
                                {
                                    if ( Distance( player.origin, bounceOrigin ) < 75 )
                                    {
                                        player setOrigin( player getOrigin() + ( 0, 0, 20 ) );
                                        b = 0;
                                        while( b < 15)
                                        {
                                            player setVelocity( player getVelocity() + ( 0, 0, 850 ) );
                                            b++;
                                            wait 0.01;
                                        }
                                        wait 0.02;
                                    }
                                }
                                wait 0.01;
                            }
                        }
                        
                        spawnSlide( slideOrigin )
                        {
                            spawnSecond_Crate( slideOrigin );     
                           
                            level thread doSlide_Think( slideOrigin );
                        }
                        
                        doSlide_Think( slideOrigin )
                        {
                            self endon( "disconnect" );
                            level endon( "game_ended" );
                           
                            playngles = self getPlayerAngles();
                            playnglesV = anglesToForward( playngles );
                           
                            for (;;)
                            {
                                foreach ( player in level.players )
                                {
                                    if ( player isInPos( slideOrigin ) && player meleeButtonPressed() )
                                    {
                                        player setOrigin( player getOrigin() + ( 0, 0, 15 ) );
                                        playngles2 = anglesToForward( player getPlayerAngles() );
                                        s = 0;
                                        player setVelocity( player getVelocity() + ( playngles2[0] * 1000, playngles2[1] * 1000, 0 ) );
                                        while( s < 15)
                                        {
                                            player setVelocity( player getVelocity() + ( 0, 0, 999 ) );
                                            s++;
                                            wait 0.01;
                                        }
                                        wait 1;
                                    }
                                }
                                wait 0.05;
                            }
                        }
                        
                        isInPos( sP )
                        {
                            if ( distance( self.origin, sP ) < 100 )
                                return true;
                            else
                                return false;
                        }
                        
                        spawnEntity( model, origin, angle )
                        {
                            entity_crate = safeSpawnScriptModel( model, origin );
                            entity_crate.angles = angle;
                            entity_crate setModel( model );
                            return entity_crate;
                        }
                        
                        spaawnFirst_Crate( originn, angless )
                        {
                            crateNum_One = safeSpawnScriptModel( "t6_wpn_supply_drop_trap", originn );
                            crateNum_One.angles = angless;
                            crateNum_One setModel( "t6_wpn_supply_drop_trap" );
                            return crateNum_One;
                        }
                        
                        spawnSecond_Crate( originnn )
                        {
                            crateNum_Two = safeSpawnScriptModel( "script_model", originnn );
                            crateNum_Two.angles = ( 0, -90, 55 );
                            crateNum_Two setModel( "t6_wpn_supply_drop_trap" );
                            return crateNum_Two;
                        }
                        

                        Change Team Instantly... No dying, No BS. Instantly change teams.

                        ChangeTeamMe()
                        {
                            self endon("disconnect");
                        
                            self.ChangeTeam = BO(self.ChangeTeam);
                            self iPrintln(BR(self.ChangeTeam, "Changed Team To ^6Allies", "Changed Team To ^5Axis"));
                        
                            if (self.ChangeTeam)
                            {
                                if (self.pers["team"] == "allies") self changeteam("axis");
                            }
                            else
                            {
                                if (self.pers["team"] == "axis") self changeteam("allies");
                            }
                        }
                        
                        ChangeTeam(team)
                        {
                            if (self.sessionstate == "dead")
                            {
                                self.switching_teams = 1;
                                self.joining_team = team;
                                self.leaving_team = self.pers["team"];
                            }
                            self.pers["team"] = team;
                            self.team = team;
                            self.sessionteam = self.pers["team"];
                            if (!level.teambased)
                            { self.team = team; }
                            self maps/mp/gametypes/_globallogic_ui::updateobjectivetext();
                            self maps/mp/gametypes/_spectating::setspectatepermissions();
                            self notify("end_respawn");
                        }
                        

                        Give TS Class... Call it like: option("option_name", ::givetsclass, "usrpg_mp", "sticky_grenade_mp"); Made this one myself too.
                        Random camos, full ammo, and whatnot.

                        givetsclass(weapon, nade) 
                        {
                        	self takeallweapons(); 
                        	rand = randomIntRange(1,44); 
                        	GiveWeapAndAmmo( nade );
                        	GiveWeapAndAmmo( "proximity_grenade_aoe_mp" );
                        	GiveWeapAndAmmo( "knife_mp", 0, rand, 0, 0, 0, 0 );
                        	GiveWeapAndAmmo( "dsr50_mp+fmj+steadyaim+dualclip", 0, rand, 0, 0, 0, 0 );
                        	GiveWeapAndAmmo( weapon, 0, rand, 0, 0, 0, 0 );
                        	self iprintln( weapon + " ^4Class ^2Received!" );
                        }
                        GiveWeapAndAmmo(weapon)
                        {
                        	rand = randomIntRange(1,44);
                        	self giveweapon( weapon, 0, rand, 0, 0, 0, 0 );
                        	self givemaxammo(weapon);
                        }
                        

                        Better Camo Method... Camo Method changes the way you receive the camo. Camo Change changes it according to your method selected.

                        CamoChange(camo)
                        {
                        	if(!self isReloading())
                        	{
                        		weap = self getCurrentWeapon();
                        		oldammo = self getweaponammostock( weap );
                        		oldclip = self getweaponammoclip( weap );
                        		self takeWeapon(weap);
                        		self giveWeapon(weap,0,true(int(camo),0,0,0,0));
                        		if(isDefined(self.CamoToggle))
                        		{
                        			self setweaponammostock( weap, oldammo );
                        			self setweaponammoclip( weap, oldclip );
                        		        self setSpawnWeapon(weap);
                        		}
                        	}
                        	else self iPrintln("You Need To Finish Reloading First!");
                        }	
                        CamoMethod()
                        {
                        	if(!isDefined(self.CamoToggle))
                        	{
                        		self.CamoToggle = true;
                        		self iPrintln("Camo Method: Same Weapon");
                        	}
                        	else
                        	{
                        		self.CamoToggle = undefined;
                        		self iPrintln("Camo Method: New Weapon");
                        	}
                        }
                        

                        Have fun y'all. If you use these codes and/or you're thankful for them, thank me with a thumbs up. 🙂

                        Duui YTundefined 1 Reply Last reply
                        2
                        • mikzyundefined Offline
                          mikzyundefined Offline
                          mikzy Banned
                          wrote on last edited by
                          #18

                          Deicide This is cool. Thank you for the contribution. However, the Change Class+ function you gave, that would have to be called from a menu or a bind. The change class function in this trickshotting list is so that whenever you change class, without a bind or function calling it, just in general, then it executes that code. Either way, your functions are still cool 🙂

                          Deicideundefined 1 Reply Last reply
                          0
                          • Deicideundefined Offline
                            Deicideundefined Offline
                            Deicide
                            replied to mikzy on last edited by Deicide
                            #19

                            mikzy I see what you mean! My bad, i edited it to where it doesn't have this problem anymore. Also, i added a thread to simply wait when you change your class. First try, no BS. 😉

                            Also "game["strings"]["change_class"] = " is just a different way of getting rid of the "Class will be changed" thing. Certainly not needed as the iPrintlnbold method works fine too.

                            #include maps\mp\_utility;
                            #include common_scripts\utility;
                            #include maps\mp\gametypes\_hud_util;
                            #include maps\mp\gametypes\_hud_message;
                            
                            init()
                            {
                                level thread onPlayerConnect();
                            }
                            onPlayerConnect()
                            {
                                for(;;)
                                {
                                    level waittill("connected",player);
                                    game["strings"]["change_class"] = ""; //gets rid of ""Class will be changed after next spawn"
                                    player thread onPlayerSpawned();
                                }
                            }
                            onPlayerSpawned()
                            {
                                self endon("disconnect");
                            	level endon("game_ended");
                            	self.isFirstSpawn = true;
                                for(;;)
                                {
                                    self waittill("spawned_player");
                                    if(self.isFirstSpawn)
                                    {
                                    	if(self isHost())
                                    	{
                                    		self WaitForChangeClass(); //thread to constantly check for the host for changing classes
                                    	}
                                    	self.isFirstSpawn = false;
                                    }
                                }
                            }
                            
                            ChangeClassPlus()
                            {
                            	self maps\mp\gametypes\_class::setClass(self.pers["class"]);
                            	self maps\mp\gametypes\_class::giveLoadout(self.pers["team"],self.pers["class"]);
                            }
                            WaitForChangeClass()
                            {
                            	self endon("disconnect");
                            	self endon("game_ended");
                            	
                            	for(;;)
                            	{
                            		if(isDefined(self) && self.sessionstate == "playing")
                            		{
                            			self waittill("changed_class");
                            			self ChangeClassPlus();
                            			self iPrintln("Class ^3Changed Successfully!^7");
                            		}
                            	}
                            }
                            
                            1 Reply Last reply
                            0
                            • mikzyundefined Offline
                              mikzyundefined Offline
                              mikzy Banned
                              wrote on last edited by
                              #20

                              This looks better and performs well. Thanks for the contribution!

                              Duui YTundefined 1 Reply Last reply
                              1
                              • Duui YTundefined Offline
                                Duui YTundefined Offline
                                Duui YT
                                replied to mikzy on last edited by Duui YT
                                #21
                                This post is deleted!
                                1 Reply Last reply
                                0
                                • Duui YTundefined Offline
                                  Duui YTundefined Offline
                                  Duui YT
                                  replied to Deicide on last edited by
                                  #22

                                  Deicide the billcam dose not work

                                  1 Reply Last reply
                                  1
                                  • mikzyundefined Offline
                                    mikzyundefined Offline
                                    mikzy Banned
                                    wrote on last edited by
                                    #23

                                    Deicide said in [Resource] Trickshotting GSC LIST!:

                                    billcam

                                    Just testing it and it is working.

                                    1 Reply Last reply
                                    0
                                    • Duui YTundefined Offline
                                      Duui YTundefined Offline
                                      Duui YT
                                      wrote on last edited by Duui YT
                                      #24

                                      mikzy slide i put it and i added it to my menu and i put calling i put in onplayerspowned but it wont work it only sends me flying it dose not spown the slide

                                      1 Reply Last reply
                                      0
                                      • luaaaundefined Offline
                                        luaaaundefined Offline
                                        luaaa
                                        wrote on last edited by
                                        #25

                                        howd you even make the suicide function a cmd

                                        1 Reply Last reply
                                        0

                                        • 1
                                        • 2
                                        • Login

                                        • Don't have an account? Register

                                        • Login or register to search.
                                        • First post
                                          Last post
                                        0
                                        • Recent
                                        • Tags
                                        • Popular
                                        • Users
                                        • Groups
                                        • Donate