Thread: Range data and an extra - Project Insanity

Results 1 to 2 of 2
  1. #1 Range data and an extra - Project Insanity 
    Registered Member

    Join Date
    May 2012
    Posts
    253
    Thanks given
    5
    Thanks received
    146
    Rep Power
    122
    I've decided to create a basic minigame:

    When a player enters a/the region, he'll be assigned a player (which he must then kill, like Bounty Hunter). If the player doesn't kill the other player within 40 seconds, the player is then teleported back to the default coordinates.
    It's pretty much a basic skeleton: a lot of work needs to be done, and I haven't even tested it. You'll also need to add the integers etcetera yourself (hence it's a snippet).

    Code:
    package server.model.content.minigames;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import server.Server;
    import server.core.World;
    import server.core.tick.Tick;
    import server.model.players.Client;
    import server.util.Misc;
    
    /**
     * According to Deadly Uzi, over-documentation creates bigger java files, delete the documenation if you wish.
     * Thread: http://www.rune-server.ee/runescape-development/rs2-server/informative-threads/396345-note-documentation.html
     * 
     * @author Rhubarb
     *
     */
    public class PlayerDown {
    	
    	/**
    	 * Create our arraylist for the minigame.
    	 */
    	public static List<Integer> enter = new ArrayList<Integer> ();
    	
    	/**
    	 * Enter the minigame (enterRegion).
    	 * @param c
    	 * @param cave
    	 */
    	public void enterRegion(Client c, int cave) {
    		if(!playerRequirements(c)) {
    			return;
    		}
    		switch (cave) {
    
    	case 0:
    		if(c.combatLevel < 40) {
    			c.sendMessage("You need a combat level of 40 to enter Player Down.");
    			break;
    		}
    		
    		/**
    		 * Adds the player to the minigame.
    		 */
    		gameAccepted(c);
    		timer(c);
    		PlayerDown.enter.add(c.playerId);
    		break;
    	}
      }
    
    	/**
    	 * Gets the players requirements to start the minigame.
    	 * @param c
    	 * @return
    	 */
    	private boolean playerRequirements(Client c) {		
    		if(!c.getItems().playerHasItem(995, 1000000)) {
    			c.sendMessage("You need 1,000000 coins to start this minigame.");
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * Accepts the game and teleports them to the following LOCATION {X, Y};
    	 * @param c
    	 */
    	public void gameAccepted(final Client c) {
    
    		final int[][] LOCATION = {
    			{0, 0},
    		};
    		int coord = Misc.random(LOCATION.length);
    		final int x = coord;
    		
    		/**
    		 * Execution method for the array LOCATION.
    		 */
    		World.getWorld().submit(new Tick(4) {
    			@Override
    			public void execute() {
    				c.teleportToX = LOCATION[x][0];
    				c.teleportToY = LOCATION[x][1];
    				c.heightLevel = 0;
    				c.getPA().requestUpdates();
    				this.stop();
    			}
    			
    			/**
    			 * Stop submitted tasks here.
    			 */
    			@Override
    			public void stop() {
    
    			}
    		});
    		//save here
    	}
    	
    	/**
    	 * Changes opponent and moves player if they didn't kill them.
    	 * @param c
    	 */
    	public void chooseOpponent(Client c) {
    		if(Server.region.enter.contains(c.playerId)) {
    			if(Server.region.enter.size() <= 1) {
    				c.sendMessage("There's no one here, target selected soon.");
    				return;
    			}
    		}
    		
    		if(c.opponentTarget > 0) {
    			Client target = (Client) Server.playerHandler.players[c.opponentTarget];
    			String targetUser = Misc.formatPlayerName(target.playerName);
    			c.sendMessage("Kill player "+ targetUser +".");
    			c.getPA().createPlayerHints(10, c.opponentTarget);
    			
    		}
    
    		if(Server.region.enter.contains(c.playerId)) {
    			c.region = Server.region.enter.get(Misc.random(Server.region.enter.size()));
    		}
    	}
    	
    	/**
    	 * 40 second timer delay. Wouldn't use currentTimeMillis, maybe a new execution.
    	 * @param c
    	 * @return
    	 */
    	public boolean timer(Client c) {
     		if (System.currentTimeMillis() - c.timerDelay >= 40000 && c.playerDead == true) {
     	   		c.timerDelay = System.currentTimeMillis();
     	   		c.getPA().movePlayer(0, 0, 0);
     	   		System.out.println("You didn't kill your target, therefore you've been teleported away.");
    		return true;	
    	}
    		return false;
    	}
    }
    Also I've taken the liberty to retrieve accurate range special(s):

    Code:
    		/**
    		 * Lucky lightning range special. 
    		 */
    			case 9236:
    				createCombatGFX(c, i, 749, false);
    				c.crossbowDamage = 1.25;
    				break;
    				
    				/**
    				 * Earth's fury range special.
    				 */
    			case 9237: 
    				createCombatGFX(c, i, 755, false);
    				break;
    				
    				/**
    				 * Sea curse range special.
    				 */
    			case 9238:
    				createCombatGFX(c, i, 750, false);
    				c.crossbowDamage = 1.10;
    				break;
    				
    				/**
    				 * Down to earth range special.
    				 */
    			case 9239:
    				createCombatGFX(c, i, 757, false);
     				if(c.playerIndex > 0) {
    					p.playerLevel[6] -= 2;
    					p.getPA().refreshSkill(6);
    					p.sendMessage("Your magic has been lowered!");
    				}
    				break;
    				
    				/**
    				 * Clear mind range special.
    				 */
    			case 9240:
    				createCombatGFX(c, i, 751, false);
    				if(c.playerIndex > 0) {
    					p.playerLevel[5] -= 2;
    					p.getPA().refreshSkill(5);
    					p.sendMessage("Your prayer has been lowered!");
    					c.playerLevel[5] += 2;
    					if(c.playerLevel[5] >= c.getPA().getLevelForXP(c.playerXP[5])) {
    						c.playerLevel[5] = c.getPA().getLevelForXP(c.playerXP[5]);
    					}
    					c.getPA().refreshSkill(5);
    				}
    				break;
    				
    				/**
    				 * Magical posion range special.
    				 */
    			case 9241: 
    				createCombatGFX(c, i, 752, false);
    				if(c.playerIndex > 0) {
    					p.getPA().appendPoison(6);
    				}
    				break;
    				
    				/**
    				 * Blood forfit range special.
    				 */
    			case 9242:
    				createCombatGFX(c, i, 754, false);
    
    				if(c.playerLevel[3] - c.playerLevel[3]/20 < 1) {
    					break;
    				}
    				c.handleHitMask(c.playerLevel[3]/20);
    				c.dealDamage(c.playerLevel[3]/20);
    				if(c.npcIndex > 0) {
    					n.handleHitMask(n.HP/10);
    					n.dealDamage(n.HP/10);
    				} else if(c.playerIndex > 0) {
    					p.handleHitMask(c.playerLevel[3]/10);
    					p.dealDamage(c.playerLevel[3]/10);
    				}
    				break;
    				
    				/**
    				 * Armour piercing range special.
    				 */
    			case 9243:
    				createCombatGFX(c, i, 758, true);
    				c.crossbowDamage = 1.15;
    				c.ignoreDefence = true;
    				break;
    				
    				/**
    				 * Dragon's breah range special.
    				 */
    			case 9244:
    				createCombatGFX(c, i, 756, false);
    				if(c.playerEquipment[c.playerShield] != 1540 || c.playerEquipment[c.playerShield] != 11283
    					|| c.playerEquipment[c.playerShield] != 11284) {
    						c.crossbowDamage = 1.45;
    				}
    				break;
    				
    				/**
    				 * Life leech range special.
    				 */
    			case 9245:
    				createCombatGFX(c, i, 753, false);
    				c.crossbowDamage = 1.15;
    				c.playerLevel[3] += c.boltDamage/25;
    				if(c.playerLevel[3] >= 112) {
    					c.playerLevel[3] = 112;
    				}
    				c.getPA().refreshSkill(3);
    				break;
    Best to add in a switch-statement, like I did.


    Over documentation thread: [Only registered and activated users can see links. ]

    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  2. #2  
    Community Veteran

    Dexter Morgan's Avatar
    Join Date
    Nov 2008
    Age
    16
    Posts
    4,364
    Thanks given
    1,027
    Thanks received
    703
    Discord
    View profile
    Rep Power
    2991
    I made the enchanted bolts.
    [Only registered and activated users can see links. ]
    Quote Originally Posted by UberNation View Post
    Did you update the quantum network sockets to match the polarity of the wilderness counter levels in the Boolean that divides the wilderness level by zero?
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Replies: 46
    Last Post: 03-08-2012, 07:34 AM
  2. [Project] Client Launcher - Extra features inside
    By TheAmmoBandit in forum Projects
    Replies: 10
    Last Post: 12-31-2011, 12:19 AM
  3. Replies: 22
    Last Post: 08-27-2011, 02:58 AM
  4. Replies: 15
    Last Post: 07-05-2011, 05:55 AM
  5. Replies: 0
    Last Post: 07-19-2010, 11:28 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •