Thread: Ruse V2 Wilderness Fix

Results 1 to 7 of 7
  1. #1 Ruse V2 Wilderness Fix 
    Jake from State Farm

    FKN Jake's Avatar
    Join Date
    Nov 2013
    Posts
    675
    Thanks given
    45
    Thanks received
    58
    Rep Power
    153
    Client Sided:

    RSInterface.java:

    Add this:
    Code:
    	private static void wildernessInterface() {
    		RSInterface tab = RSInterface.addTabInterface(25347);
    		tab.totalChildren(8);
    		addSpriteLoader(25348, 1190);
    		addText(25349, "Target:", fonts, 0, 0xCCCBCB, true, true);
    		addText(25350, "None", fonts, 0, 0xCCCBCB, true, true);
    		addText(25351, "Wilderness Level:", fonts, 0, 0xCCCBCB, false, true);
    		addText(25352, "18", fonts, 0, 0xCCCBCB, true, true);
    		addText(25353, "Target Percentage:", fonts, 0, 0xCCCBCB, false, true);
    		addText(25354, "99%", fonts, 0, 0xCCCBCB, true, true);
    		addText(25355, "Levels: 114 - 126", fonts, 1, 0xff9040, false, true);
    		tab.child(0, 25348, 334, 2);
    		tab.child(1, 25349, 356, 10);
    		tab.child(2, 25350, 445, 10);
    		tab.child(3, 25351, 340, 28);
    		tab.child(4, 25352, 492, 28);
    		tab.child(5, 25353, 340, 46);
    		tab.child(6, 25354, 492, 46);
    		tab.child(7, 25355, 411, 315);
    	}
    In RSInterface, search for

    Code:
    aClass44 = streamLoader;
    Directly under it add:

    Code:
    wildernessInterface();
    Server Sided:

    Locations.java replace Wilderness.

    Code:
    		WILDERNESS(new int[]{2941, 3392, 2986, 3012, 3653, 3706, 3650, 3653}, new int[]{3523, 3968, 10338, 10366, 3441, 3538, 3457, 3472}, false, true, true, true, true, true) {
    			@Override
    			public void process(Player player) {
    				int x = player.getPosition().getX();
    				int y = player.getPosition().getY();
    				boolean ghostTown = x >= 3650 && y <= 3538;
    				if(ghostTown) {
    					player.setWildernessLevel(60);
    				} else {
    					player.setWildernessLevel(((((y > 6400 ? y - 6400 : y) - 3520) / 8)+1));
    				}
    				player.getPacketSender().sendString(25352, ""+player.getWildernessLevel());
    				player.getPacketSender().sendString(25355, "Levels: "+CombatFactory.getLevelDifference(player, false) +" - "+CombatFactory.getLevelDifference(player, true));
    				BountyHunter.process(player);
    			}
    
    			@Override
    			public void leave(Player player) {
    				if(player.getLocation() != this) {
    					player.getPacketSender().sendString(19000, "Combat level: " + player.getSkillManager().getCombatLevel());
    					player.getUpdateFlag().flag(Flag.APPEARANCE);
    				}
    				PLAYERS_IN_WILD--;
    			}
    
    			@Override
    			public void enter(Player player) {
    				player.getPacketSender().sendInteractionOption("Attack", 2, true);
    				player.getPacketSender().sendWalkableInterface(25347);
    				player.getPacketSender().sendString(19000, "Combat level: " + player.getSkillManager().getCombatLevel());
    				player.getUpdateFlag().flag(Flag.APPEARANCE);
    				PLAYERS_IN_WILD++;
    			}
    
    			@Override
    			public boolean canTeleport(Player player) {
    				if(player.getWildernessLevel() > 20) {
    					if(player.getRights() == PlayerRights.ADMINISTRATOR || player.getRights() == PlayerRights.OWNER || player.getRights() == PlayerRights.DEVELOPER) {
    						player.getPacketSender().sendMessage("@red@You've teleported out of deep Wilderness, logs have been written.");
    						return true;
    					}
    					player.getPacketSender().sendMessage("Teleport spells are blocked in this level of Wilderness.");
    					player.getPacketSender().sendMessage("You must be below level 20 of Wilderness to use teleportation spells.");
    					return false;
    				}
    				return true;
    			}
    
    			@Override
    			public void login(Player player) {
    				player.performGraphic(new Graphic(2000, 8));
    			}
    
    			@Override
    			public boolean canAttack(Player player, Player target) {
    				int combatDifference = CombatFactory.combatLevelDifference(player.getSkillManager().getCombatLevel(), target.getSkillManager().getCombatLevel());
    				if (combatDifference > player.getWildernessLevel() || combatDifference > target.getWildernessLevel()) {
    					player.getPacketSender().sendMessage("Your combat level difference is too great to attack that player here.");
    					player.getMovementQueue().reset();
    					return false;
    				}
    				if(Jail.isJailed(player)) {
    					player.getPacketSender().sendMessage("You cannot do that right now.");
    					return false;
    				}
    				if(Jail.isJailed(target)) {
    					player.getPacketSender().sendMessage("That player cannot be attacked right now.");
    					return false;
    				}
    				if(Misc.getMinutesPlayed(player) < 20) {
    					player.getPacketSender().sendMessage("You must have played for at least 20 minutes in order to attack someone.");
    					return false;
    				}
    				if(Misc.getMinutesPlayed(target) < 20) {
    					player.getPacketSender().sendMessage("This player is a new player and can therefore not be attacked yet.");
    					return false;
    				}
    				return true;
    			}
    		},
    Replace sprites or add 1190 (For Wildy)


    Follow the steps correctly and you will get:

    Attached image


    If you haven't modified any sprites you can use these:
    https://mega.nz/#!VMBBTYLK!cHJvwfBBr..._zNLDZi4VQWXJc
    Reply With Quote  
     

  2. Thankful user:


  3. #2  
    Registered Member

    Join Date
    Jan 2015
    Posts
    313
    Thanks given
    64
    Thanks received
    166
    Rep Power
    186
    nice work
    Reply With Quote  
     

  4. #3  
    Respected Member


    George's Avatar
    Join Date
    Mar 2009
    Posts
    7,099
    Thanks given
    2,226
    Thanks received
    3,146
    Rep Power
    5000
    Quote Originally Posted by jhg023 View Post
    Why are you sending 2 packets every tick in process?

    Edit: You can simply calculate if there's a change in a player's wilderness level, and update their target's interface!
    If I understand what he's saying, he's saying that you can cache the wilderness level the entity is in and than proceed to check where you process the packet, whether or not the wilderness level has changed compared to the cached level.
    Attached image

    Spoiler for Spoilers!:
    Attached image
    Attached image
    Attached image
    Attached image
    Reply With Quote  
     

  5. #4  
    Im an albatraoz

    Nand0's Avatar
    Join Date
    Feb 2010
    Age
    31
    Posts
    948
    Thanks given
    233
    Thanks received
    128
    Rep Power
    241
    there was nothing wrong with it :O



    Looking for blazing fast and affordable vps or web hosting?
    AllGeniusHost



    Reply With Quote  
     

  6. #5  
    Registered Member
    Join Date
    Jul 2012
    Posts
    12
    Thanks given
    1
    Thanks received
    2
    Rep Power
    11
    Quote Originally Posted by Idiot Bird View Post
    If I understand what he's saying, he's saying that you can cache the wilderness level the entity is in and than proceed to check where you process the packet, whether or not the wilderness level has changed compared to the cached level.
    He means change
    Code:
    public void process(Player player) {
    				int x = player.getPosition().getX();
    				int y = player.getPosition().getY();
    				boolean ghostTown = x >= 3650 && y <= 3538;
    				if(ghostTown) {
    					player.setWildernessLevel(60);
    				} else {
    					player.setWildernessLevel(((((y > 6400 ? y - 6400 : y) - 3520) / 8)+1));
    				}
    				player.getPacketSender().sendString(25352, ""+player.getWildernessLevel());
    				player.getPacketSender().sendString(25355, "Levels: "+CombatFactory.getLevelDifference(player, false) +" - "+CombatFactory.getLevelDifference(player, true));
    				BountyHunter.process(player);
    			}
    to

    Code:
    int wildLvl = 0;
    			@Override
    			public void process(Player player) {
    				int x = player.getPosition().getX();
    				int y = player.getPosition().getY();
    				boolean ghostTown = x >= 3650 && y <= 3538;
    				if(ghostTown) {
    					player.setWildernessLevel(60);
    				} else {
    					player.setWildernessLevel(((((y > 6400 ? y - 6400 : y) - 3520) / 8)+1));
    				}
    				if(wildLvl == 0)
    					wildLvl = player.getWildernessLevel();
    				if(wildLvl != player.getWildernessLevel())
    				{
    					player.getPacketSender().sendString(25352, ""+player.getWildernessLevel());
    					player.getPacketSender().sendString(25355, "Levels: "+CombatFactory.getLevelDifference(player, false) +" - "+CombatFactory.getLevelDifference(player, true));
    				}
    				BountyHunter.process(player);
    			}
    I haven't tested this, but basically this just checks server-sided if the players wilderness level has changed, if so, it sends the packets to the client telling it to update the interface

    Quote Originally Posted by Nand0 View Post
    there was nothing wrong with it :O
    This line is commented out in the stock v2 source, I'd say because it was broken lol.
    player.getPacketSender().sendString(25355, "Levels: "+CombatFactory.getLevelDifference(player, false) +" - "+CombatFactory.getLevelDifference(player, true));
    Reply With Quote  
     

  7. #6  
    Registered Member
    Join Date
    Oct 2019
    Posts
    1
    Thanks given
    0
    Thanks received
    0
    Rep Power
    0
    Pretty sure theres nothing wrong with the ruse v2 wilderness interface
    Reply With Quote  
     

  8. #7  
    Extreme Donator


    Join Date
    Aug 2016
    Posts
    597
    Thanks given
    109
    Thanks received
    96
    Rep Power
    254
    Definitely nothing wrong with the original ruse v2 wilderness interface, unless you were using an extremely bad "released" ruse v2 source. Those looks like the bounty hunter id's from ruse v1 and it looks like the tutorial even recommends using RSInterface (ruse v1) instead of using Ruse v2's default CustomInterface class that automatically places them into that method. My guess is that it wasn't working so instead of debugging, then just copy and paste from a v1 client over to v2. If anyone has this same issue and they don't know how to fix it I guess it could be helpful though

    The actual ruse v2 wilderness interface looks like this
    Code:
    private void bountyInterface() {
    		RSInterface rsi = addInterface(42020);
    		RSInterface.addTransparentSprite(42021, 611, 611, 125);
    		RSInterface.addText(42022, "None", 0xD40000, true, true, -1, tda, 0);
    		RSInterface.addText(42023, "5", 0xD40000, false, true, -1, tda, 0);
    		RSInterface.addText(42024, "100%", 0xD40000, false, true, -1, tda, 0);
    		RSInterface.addText(42025, "Target:", Integer.MAX_VALUE, true, true, -1, tda, 0);
    		RSInterface.addText(42026, "Wilderness Level:", Integer.MAX_VALUE, false, true, -1, tda, 0);
    		RSInterface.addText(42027, "Target Percentage:", Integer.MAX_VALUE, false, true, -1, tda, 0);
    		rsi.totalChildren(7);
    		setBounds(42021, 310, 5, 0, rsi);
    		setBounds(42022, 430, 9, 1, rsi);
    		setBounds(42023, 430, 25, 2, rsi);
    		setBounds(42024, 430, 40, 3, rsi);
    		setBounds(42025, 334, 10, 4, rsi);
    		setBounds(42026, 316, 25, 5, rsi);
    		setBounds(42027, 316, 39, 6, rsi);
    	}
    I don't see why you would change the ruse v2 interface when it already works fine unless you added a separate interface that overwrote those id's. Maybe I'm wrong and theres a really bad ruse v2 source floating around though


    Quote Originally Posted by Mee0345 View Post
    This line is commented out in the stock v2 source, I'd say because it was broken lol.
    player.getPacketSender().sendString(25355, "Levels: "+CombatFactory.getLevelDifference(player, false) +" - "+CombatFactory.getLevelDifference(player, true));
    That line doesn't exist in the "stock v2 source". You're most likely talking about Necrotic, which is definitely not "stock" ruse v2, although it is ruse v2
    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. Ruse v2 constructMapPacket fix
    By Metorrite in forum Snippets
    Replies: 8
    Last Post: 12-24-2016, 05:12 AM
  2. [Ruse V2] Map fixes
    By Greg in forum Help
    Replies: 15
    Last Post: 05-29-2016, 05:11 PM
  3. Buying ruse v2 client fix
    By Icefishjj in forum Buying
    Replies: 3
    Last Post: 05-06-2016, 05:15 PM
  4. Ruse v2 Areas Fix
    By Pwn. in forum Snippets
    Replies: 18
    Last Post: 04-15-2016, 01:01 AM
  5. Replies: 10
    Last Post: 03-27-2016, 06:26 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
  •