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

Plutonium

  1. Home
  2. BO2 Modding Support & Discussion
  3. [Support] Move Slide Care Package to new Position?

[Support] Move Slide Care Package to new Position?

Scheduled Pinned Locked Moved BO2 Modding Support & Discussion
22 Posts 8 Posters 1.4k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Soccer1978undefined Soccer1978

    Ducxy how? and is there a code for deleting them for in the mod menu

    Rynoxarundefined Offline
    Rynoxarundefined Offline
    Rynoxar
    Contributor
    wrote on last edited by
    #8

    Soccer1978 said in Move Slide Care Package to new Position?:

    Ducxy how? and is there a code for deleting them for in the mod menu

    yeah dont know how 😄

    1 Reply Last reply
    0
    • Soccer1978undefined Soccer1978

      Ducxy how? and is there a code for deleting them for in the mod menu

      Ducxyundefined Offline
      Ducxyundefined Offline
      Ducxy
      wrote on last edited by
      #9

      Soccer1978 heres my entire script ```
      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;
      

      }

      this goes onplayerconnect

      player.slidecount = 3;
      
      Sassundefined Soccer1978undefined 2 Replies Last reply
      0
      • Ducxyundefined Ducxy

        Soccer1978 heres my entire script ```
        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;
        

        }

        this goes onplayerconnect

        player.slidecount = 3;
        
        Sassundefined Offline
        Sassundefined Offline
        Sass
        Plutonium Staff
        wrote on last edited by
        #10

        Ducxy This still doesn't move or replace the first crate, which is literally the question that was asked. But I guess you can go this way.

        1 Reply Last reply
        0
        • Rynoxarundefined Rynoxar

          How I can move my Slide Care Package to a new Position or delete the old Slide and Create a new one. So no one can abuse the Create Slide command?

          Radonundefined Offline
          Radonundefined Offline
          Radon
          wrote on last edited by
          #11

          @NOXSYS said in Move Slide Care Package to new Position?:

          How I can move my Slide Care Package to a new Position or delete the old Slide and Create a new one. So no one can abuse the Create Slide command?

          Just make a delete function which deletes the model and kills the thread. Then let the player spawn in a new one:

          self addTextOption(<menu>, "Bounce", self.hasBounce ? "^1Delete" : "^2Spawn", ::<functions>);
          

          Something like that

          1 Reply Last reply
          0
          • Ducxyundefined Ducxy

            Soccer1978 heres my entire script ```
            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;
            

            }

            this goes onplayerconnect

            player.slidecount = 3;
            
            Soccer1978undefined Offline
            Soccer1978undefined Offline
            Soccer1978
            wrote on last edited by
            #12

            Ducxy this code doesnt seem to work for me

            1 Reply Last reply
            0
            • Sassundefined Offline
              Sassundefined Offline
              Sass
              Plutonium Staff
              wrote on last edited by
              #13

              I came up with a new script. It's basically a "Create/Move Slide" function; it will spawn a slide the first time you use it, and move it if you use the function again. Slides spawns/moves wherever you place your crosshair. There's no delete function, but you can just move it out of the map if you want it off the way.

              • Call manageSlides in your menu.
              • Copy the following in your file :
              manageSlides()
              {
                  self endon("death");
                  self endon("disconnect");
              
                  start = self getTagOrigin("tag_eye");
                  end = anglestoforward(self getPlayerAngles()) * 1000000;
                  slidePos = BulletTrace(start, end, true, self)["position"] + (0,0,15);
                  slideAng = self getPlayerAngles();
              
                  if(!isDefined(self.slide))
                  {
                      self.slide = spawn("script_model", slidePos);
                      self.slide.angles = (0, slideAng[1] - 90, 70);
                      self.slide setModel("t6_wpn_supply_drop_trap");
                  }
                  else
                  {
                      self.slide RotateTo((0, slideAng[1] - 90, 70), 0.1, 0, 0 );
                      self.slide MoveTo(slidePos, 0.1, 0, 0 );
                      self.slide notify("restartSlideThink"); // Killing thread so it doesn't duplicate
                  }
                  
                  self.slide thread slideThink(slidePos,slideAng);
              }
              
              slideThink(origin, angles)
              {
                  self endon("restartSlideThink");
              	
                  for(;;)
                  {
                      foreach(player in level.players)
                      {
                          if( distance(player.origin, origin) < 100 && player meleeButtonPressed() && player isMeleeing() && length(anglesXY(player getPlayerAngles() - angles)) < 90)
                          {
                              vec = anglesToForward(player.angles);
                              for(i = 0; i < 10; i++)
                              {
                                  player setVelocity(player getVelocity() + ( vec[0]*(50) , vec[1]*(50), 200 ));
                                  wait .01;
                              }
                          }
                      }
                      wait .1;
                  }
              }
              
              anglesXY(angles)
              {
                  return (angles[0], angles[1], 0);
              }
              
              Soccer1978undefined Rynoxarundefined kalazh441undefined 3 Replies Last reply
              0
              • Sassundefined Sass

                I came up with a new script. It's basically a "Create/Move Slide" function; it will spawn a slide the first time you use it, and move it if you use the function again. Slides spawns/moves wherever you place your crosshair. There's no delete function, but you can just move it out of the map if you want it off the way.

                • Call manageSlides in your menu.
                • Copy the following in your file :
                manageSlides()
                {
                    self endon("death");
                    self endon("disconnect");
                
                    start = self getTagOrigin("tag_eye");
                    end = anglestoforward(self getPlayerAngles()) * 1000000;
                    slidePos = BulletTrace(start, end, true, self)["position"] + (0,0,15);
                    slideAng = self getPlayerAngles();
                
                    if(!isDefined(self.slide))
                    {
                        self.slide = spawn("script_model", slidePos);
                        self.slide.angles = (0, slideAng[1] - 90, 70);
                        self.slide setModel("t6_wpn_supply_drop_trap");
                    }
                    else
                    {
                        self.slide RotateTo((0, slideAng[1] - 90, 70), 0.1, 0, 0 );
                        self.slide MoveTo(slidePos, 0.1, 0, 0 );
                        self.slide notify("restartSlideThink"); // Killing thread so it doesn't duplicate
                    }
                    
                    self.slide thread slideThink(slidePos,slideAng);
                }
                
                slideThink(origin, angles)
                {
                    self endon("restartSlideThink");
                	
                    for(;;)
                    {
                        foreach(player in level.players)
                        {
                            if( distance(player.origin, origin) < 100 && player meleeButtonPressed() && player isMeleeing() && length(anglesXY(player getPlayerAngles() - angles)) < 90)
                            {
                                vec = anglesToForward(player.angles);
                                for(i = 0; i < 10; i++)
                                {
                                    player setVelocity(player getVelocity() + ( vec[0]*(50) , vec[1]*(50), 200 ));
                                    wait .01;
                                }
                            }
                        }
                        wait .1;
                    }
                }
                
                anglesXY(angles)
                {
                    return (angles[0], angles[1], 0);
                }
                
                Soccer1978undefined Offline
                Soccer1978undefined Offline
                Soccer1978
                wrote on last edited by
                #14

                Sass Thanks, works great! Do u maybe know how i make the slides stronger?

                Sassundefined 1 Reply Last reply
                0
                • Soccer1978undefined Soccer1978

                  Sass Thanks, works great! Do u maybe know how i make the slides stronger?

                  Sassundefined Offline
                  Sassundefined Offline
                  Sass
                  Plutonium Staff
                  wrote on last edited by
                  #15

                  Soccer1978 You'll have to edit this line. Change both "50" to something higher :

                  player setVelocity(player getVelocity() + ( vec[0]*(50), vec[1]*(50), 200 ));

                  1 Reply Last reply
                  0
                  • Sassundefined Sass

                    I came up with a new script. It's basically a "Create/Move Slide" function; it will spawn a slide the first time you use it, and move it if you use the function again. Slides spawns/moves wherever you place your crosshair. There's no delete function, but you can just move it out of the map if you want it off the way.

                    • Call manageSlides in your menu.
                    • Copy the following in your file :
                    manageSlides()
                    {
                        self endon("death");
                        self endon("disconnect");
                    
                        start = self getTagOrigin("tag_eye");
                        end = anglestoforward(self getPlayerAngles()) * 1000000;
                        slidePos = BulletTrace(start, end, true, self)["position"] + (0,0,15);
                        slideAng = self getPlayerAngles();
                    
                        if(!isDefined(self.slide))
                        {
                            self.slide = spawn("script_model", slidePos);
                            self.slide.angles = (0, slideAng[1] - 90, 70);
                            self.slide setModel("t6_wpn_supply_drop_trap");
                        }
                        else
                        {
                            self.slide RotateTo((0, slideAng[1] - 90, 70), 0.1, 0, 0 );
                            self.slide MoveTo(slidePos, 0.1, 0, 0 );
                            self.slide notify("restartSlideThink"); // Killing thread so it doesn't duplicate
                        }
                        
                        self.slide thread slideThink(slidePos,slideAng);
                    }
                    
                    slideThink(origin, angles)
                    {
                        self endon("restartSlideThink");
                    	
                        for(;;)
                        {
                            foreach(player in level.players)
                            {
                                if( distance(player.origin, origin) < 100 && player meleeButtonPressed() && player isMeleeing() && length(anglesXY(player getPlayerAngles() - angles)) < 90)
                                {
                                    vec = anglesToForward(player.angles);
                                    for(i = 0; i < 10; i++)
                                    {
                                        player setVelocity(player getVelocity() + ( vec[0]*(50) , vec[1]*(50), 200 ));
                                        wait .01;
                                    }
                                }
                            }
                            wait .1;
                        }
                    }
                    
                    anglesXY(angles)
                    {
                        return (angles[0], angles[1], 0);
                    }
                    
                    Rynoxarundefined Offline
                    Rynoxarundefined Offline
                    Rynoxar
                    Contributor
                    wrote on last edited by
                    #16

                    Sass said in Move Slide Care Package to new Position?:

                    I came up with a new script. It's basically a "Create/Move Slide" function; it will spawn a slide the first time you use it, and move it if you use the function again. Slides spawns/moves wherever you place your crosshair. There's no delete function, but you can just move it out of the map if you want it off the way.

                    • Call manageSlides in your menu.
                    • Copy the following in your file :
                    manageSlides()
                    {
                        self endon("death");
                        self endon("disconnect");
                    
                        start = self getTagOrigin("tag_eye");
                        end = anglestoforward(self getPlayerAngles()) * 1000000;
                        slidePos = BulletTrace(start, end, true, self)["position"] + (0,0,15);
                        slideAng = self getPlayerAngles();
                    
                        if(!isDefined(self.slide))
                        {
                            self.slide = spawn("script_model", slidePos);
                            self.slide.angles = (0, slideAng[1] - 90, 70);
                            self.slide setModel("t6_wpn_supply_drop_trap");
                        }
                        else
                        {
                            self.slide RotateTo((0, slideAng[1] - 90, 70), 0.1, 0, 0 );
                            self.slide MoveTo(slidePos, 0.1, 0, 0 );
                            self.slide notify("restartSlideThink"); // Killing thread so it doesn't duplicate
                        }
                        
                        self.slide thread slideThink(slidePos,slideAng);
                    }
                    
                    slideThink(origin, angles)
                    {
                        self endon("restartSlideThink");
                    	
                        for(;;)
                        {
                            foreach(player in level.players)
                            {
                                if( distance(player.origin, origin) < 100 && player meleeButtonPressed() && player isMeleeing() && length(anglesXY(player getPlayerAngles() - angles)) < 90)
                                {
                                    vec = anglesToForward(player.angles);
                                    for(i = 0; i < 10; i++)
                                    {
                                        player setVelocity(player getVelocity() + ( vec[0]*(50) , vec[1]*(50), 200 ));
                                        wait .01;
                                    }
                                }
                            }
                            wait .1;
                        }
                    }
                    
                    anglesXY(angles)
                    {
                        return (angles[0], angles[1], 0);
                    }
                    

                    I LOVE YOU 😍

                    1 Reply Last reply
                    0
                    • Sassundefined Sass

                      I came up with a new script. It's basically a "Create/Move Slide" function; it will spawn a slide the first time you use it, and move it if you use the function again. Slides spawns/moves wherever you place your crosshair. There's no delete function, but you can just move it out of the map if you want it off the way.

                      • Call manageSlides in your menu.
                      • Copy the following in your file :
                      manageSlides()
                      {
                          self endon("death");
                          self endon("disconnect");
                      
                          start = self getTagOrigin("tag_eye");
                          end = anglestoforward(self getPlayerAngles()) * 1000000;
                          slidePos = BulletTrace(start, end, true, self)["position"] + (0,0,15);
                          slideAng = self getPlayerAngles();
                      
                          if(!isDefined(self.slide))
                          {
                              self.slide = spawn("script_model", slidePos);
                              self.slide.angles = (0, slideAng[1] - 90, 70);
                              self.slide setModel("t6_wpn_supply_drop_trap");
                          }
                          else
                          {
                              self.slide RotateTo((0, slideAng[1] - 90, 70), 0.1, 0, 0 );
                              self.slide MoveTo(slidePos, 0.1, 0, 0 );
                              self.slide notify("restartSlideThink"); // Killing thread so it doesn't duplicate
                          }
                          
                          self.slide thread slideThink(slidePos,slideAng);
                      }
                      
                      slideThink(origin, angles)
                      {
                          self endon("restartSlideThink");
                      	
                          for(;;)
                          {
                              foreach(player in level.players)
                              {
                                  if( distance(player.origin, origin) < 100 && player meleeButtonPressed() && player isMeleeing() && length(anglesXY(player getPlayerAngles() - angles)) < 90)
                                  {
                                      vec = anglesToForward(player.angles);
                                      for(i = 0; i < 10; i++)
                                      {
                                          player setVelocity(player getVelocity() + ( vec[0]*(50) , vec[1]*(50), 200 ));
                                          wait .01;
                                      }
                                  }
                              }
                              wait .1;
                          }
                      }
                      
                      anglesXY(angles)
                      {
                          return (angles[0], angles[1], 0);
                      }
                      
                      kalazh441undefined Offline
                      kalazh441undefined Offline
                      kalazh441
                      wrote on last edited by
                      #17

                      Sass Thanks alot <333

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

                        Sass how can i mind it bec when i do this it works but when they die they cant do it again

                        buttonMonitorSlides()
                        {
                            self endon("death");
                            self endon("disconnect");
                            
                            for(;;)
                            {
                                if(self getStance() != "prone" && self actionslotthreebuttonpressed())
                                    self manageSlides();
                                wait .05;
                            }
                        } 
                        
                        Cahzundefined 1 Reply Last reply
                        0
                        • Duui YTundefined Duui YT

                          Sass how can i mind it bec when i do this it works but when they die they cant do it again

                          buttonMonitorSlides()
                          {
                              self endon("death");
                              self endon("disconnect");
                              
                              for(;;)
                              {
                                  if(self getStance() != "prone" && self actionslotthreebuttonpressed())
                                      self manageSlides();
                                  wait .05;
                              }
                          } 
                          
                          Cahzundefined Offline
                          Cahzundefined Offline
                          Cahz
                          VIP
                          wrote on last edited by
                          #19

                          Duui YT said in [Support] Move Slide Care Package to new Position?:

                          self endon("death");

                          self endon("death");

                          self endon("death");

                          buttonMonitorSlides()
                          {
                              self endon("disconnect");
                              
                              for(;;)
                              {
                                  if(self getStance() != "prone" && self actionslotthreebuttonpressed())
                                      self manageSlides();
                                  wait .05;
                              }
                          }
                          

                          Literally one line of code dude. Please read the code before posting on the forums 😞

                          Duui YTundefined Sassundefined 2 Replies Last reply
                          0
                          • Cahzundefined Cahz

                            Duui YT said in [Support] Move Slide Care Package to new Position?:

                            self endon("death");

                            self endon("death");

                            self endon("death");

                            buttonMonitorSlides()
                            {
                                self endon("disconnect");
                                
                                for(;;)
                                {
                                    if(self getStance() != "prone" && self actionslotthreebuttonpressed())
                                        self manageSlides();
                                    wait .05;
                                }
                            }
                            

                            Literally one line of code dude. Please read the code before posting on the forums 😞

                            Duui YTundefined Offline
                            Duui YTundefined Offline
                            Duui YT
                            wrote on last edited by Duui YT
                            #20

                            Cahz is it possible to make it spawn next to you intend at cross hair i cant finger it out

                            1 Reply Last reply
                            0
                            • Cahzundefined Cahz

                              Duui YT said in [Support] Move Slide Care Package to new Position?:

                              self endon("death");

                              self endon("death");

                              self endon("death");

                              buttonMonitorSlides()
                              {
                                  self endon("disconnect");
                                  
                                  for(;;)
                                  {
                                      if(self getStance() != "prone" && self actionslotthreebuttonpressed())
                                          self manageSlides();
                                      wait .05;
                                  }
                              }
                              

                              Literally one line of code dude. Please read the code before posting on the forums 😞

                              Sassundefined Offline
                              Sassundefined Offline
                              Sass
                              Plutonium Staff
                              wrote on last edited by
                              #21

                              The self endon("death"); is intentional. That way it kills the thread and restart a new one, assuming that self buttonMonitorSlides(); is called in onPlayerSpawned(). This prevents the function to restart over and over again.

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

                                Sass
                                so this (50) changes how for you go add this how high you go 200 but it dose not do anything when i make it higher or lower is there a different way to make it send me higher up

                                player setVelocity(player getVelocity() + ( vec[0]*(50) , vec[1]*(50), 200 )); 
                                
                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • 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