Thread: barrows chest count not saving

Results 1 to 3 of 3
  1. #1 barrows chest count not saving 
    Registered Member
    Join Date
    Nov 2014
    Posts
    31
    Thanks given
    2
    Thanks received
    0
    Rep Power
    9
    i have created a working barrows chest count. every time the server restarts or updates the chest count is reset. how would i save the chest count as a text file set out like.

    Code:
    {Name} has completed {Chest count number} barrows chest.
    also here is my current barrows.java file if it can easily be done in this file. - thank you

    Code:
    package com.rs.game.player.controlers;
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    
    import com.rs.Settings;
    import com.rs.game.Entity;
    import com.rs.game.ForceTalk;
    import com.rs.game.Hit;
    import com.rs.game.Hit.HitLook;
    import com.rs.game.World;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    import com.rs.game.item.Item;
    import com.rs.game.npc.others.BarrowsBrother;
    import com.rs.game.player.Player;
    import com.rs.game.player.Skills;
    import com.rs.game.tasks.WorldTask;
    import com.rs.game.tasks.WorldTasksManager;
    import com.rs.utils.Utils;
    
    public final class Barrows extends Controler {
    
    	private BarrowsBrother target;
    	private int BarrowCC = 0;
    
    	// they have to be handled by correct order
    	// AHRIM
    	// DHAROK
    	// GUTHAN
    	// KARIL
    	// TORAG
    	// VERAC
    	private static enum Hills {
    		AHRIM_HILL(new WorldTile(3564, 3287, 0), new WorldTile(3557, 9703, 3)), DHAROK_HILL(
    				new WorldTile(3573, 3296, 0), new WorldTile(3556, 9718, 3)), GUTHAN_HILL(
    				new WorldTile(3574, 3279, 0), new WorldTile(3534, 9704, 3)), KARIL_HILL(
    				new WorldTile(3563, 3276, 0), new WorldTile(3546, 9684, 3)), TORAG_HILL(
    				new WorldTile(3553, 3281, 0), new WorldTile(3568, 9683, 3)), VERAC_HILL(
    				new WorldTile(3556, 3296, 0), new WorldTile(3578, 9706, 3));
    
    		private WorldTile outBound;
    		private WorldTile inside;
    
    		// out bound since it not a full circle
    
    		private Hills(WorldTile outBound, WorldTile in) {
    			this.outBound = outBound;
    			inside = in;
    		}
    	}
    
    	public static boolean digIntoGrave(final Player player) {
    		for (Hills hill : Hills.values()) {
    			if (player.getPlane() == hill.outBound.getPlane()
    					&& player.getX() >= hill.outBound.getX()
    					&& player.getY() >= hill.outBound.getY()
    					&& player.getX() <= hill.outBound.getX() + 3
    					&& player.getY() <= hill.outBound.getY() + 3) {
    				player.useStairs(-1, hill.inside, 1, 2,
    						"You've broken into a crypt.");
    				WorldTasksManager.schedule(new WorldTask() {
    					@Override
    					public void run() {
    						player.getControlerManager().startControler("Barrows");
    					}
    				});
    				return true;
    			}
    		}
    
    		return false;
    	}
    
    	@Override
    	public boolean canAttack(Entity target) {
    		if (target instanceof BarrowsBrother && target != this.target) {
    			player.getPackets().sendGameMessage("This isn't your target.");
    			return false;
    		}
    		return true;
    	}
    
    	private void exit(WorldTile outside) {
    		player.setNextWorldTile(outside);
    		leave(false);
    	}
    
    	private void leave(boolean logout) {
    		if (target != null)
    			target.finish(); // target also calls removing hint icon at remove
    		if (!logout) {
    			player.getPackets().sendBlackOut(0); // unblacks minimap
    			if (player.getHiddenBrother() == -1)
    				player.getPackets().sendStopCameraShake();
    			else
    				player.getPackets().closeInterface(
    						player.getInterfaceManager().hasRezizableScreen() ? 11
    								: 0); // removes inter
    			removeControler();
    		}
    	}
    
    	@Override
    	public boolean sendDeath() {
    		leave(false);
    		return true;
    	}
    
    	@Override
    	public void magicTeleported(int type) {
    		leave(false);
    	}
    
    	public int getRandomBrother() {
    		List<Integer> bros = new ArrayList<Integer>();
    		for (int i = 0; i < Hills.values().length; i++) {
    			if (player.getKilledBarrowBrothers()[i]
    					|| player.getHiddenBrother() == i)
    				continue;
    			bros.add(i);
    		}
    		if (bros.isEmpty())
    			return -1;
    		return bros.get(Utils.random(bros.size()));
    
    	}
    
    	private static final Item[] COMMUM_REWARDS = { new Item(558, 1795),
    			new Item(562, 773), new Item(560, 391), new Item(565, 164),
    			new Item(4740, 188) };
    
    	@SuppressWarnings("unused")
    	// once i add the ring effect
    	private static final Item[] RING_OF_WEALTH_REWARDS = { new Item(165, 1),
    			new Item(159, 1), new Item(141, 1), new Item(129, 1),
    			new Item(385, 4) };
    
    	private static final Item[] RARE_REWARDS = { new Item(1149, 1),
    			new Item(987, 1), new Item(985, 1) };
    
    	Item[] BARROW_REWARDS = { new Item(4708, 1), new Item(4710, 1),
    			new Item(4712, 1), new Item(4714, 1), new Item(4716, 1),
    			new Item(4718, 1), new Item(4720, 1), new Item(4722, 1),
    			new Item(4724, 1), new Item(4726, 1), new Item(4728, 1),
    			new Item(4730, 1), new Item(4732, 1), new Item(4734, 1),
    			new Item(4736, 1), new Item(4738, 1), new Item(4745, 1),
    			new Item(4747, 1), new Item(4749, 1), new Item(4751, 1),
    			new Item(4753, 1), new Item(4755, 1), new Item(4757, 1), };
    
    	private boolean noSpaceOnInv;
    
    	public void drop(Item item) {
    		Item dropItem = new Item(item.getId(), Utils.random(item
    				.getDefinitions().isStackable() ? item.getAmount()
    				* Settings.DROP_RATE : item.getAmount()) + 1);
    		if (noSpaceOnInv && player.getInventory().addItem(dropItem))
    			return;
    		noSpaceOnInv = true;
    		World.addGroundItem(dropItem, player, player, true, 180, true);
    
    	}
    
    	// 4% prob barrows reward per bro
    	// 1% per 10kills.
    	public void sendReward() {
    		double percentage = 0;
    		for (boolean died : player.getKilledBarrowBrothers()) {
    			if (died)
    				percentage += 4;
    		}
    		percentage += (player.getBarrowsKillCount() / 10);
    		if (percentage >= Math.random() * 100) {
    			// reard barrows
    			drop(BARROW_REWARDS[Utils.random(BARROW_REWARDS.length)]);
    		}
    		if (Utils.random(10) == 0) // rare
    			drop(RARE_REWARDS[Utils.random(RARE_REWARDS.length)]);
    		if (Utils.random(3) != 0)
    			drop(COMMUM_REWARDS[Utils.random(COMMUM_REWARDS.length)]);
    		// here reward other stuff normaly
    
    		drop(new Item(995, 800000)); // money reward at least always
    	}
    
    	@Override
    	public boolean processObjectClick1(WorldObject object) {
    		if (object.getId() >= 6702 && object.getId() <= 6707) {
    			WorldTile out = Hills.values()[object.getId() - 6702].outBound;
    			// cant make a perfect middle since 3/ 2 wont make a real integer
    			// number or whatever you call it..
    			exit(new WorldTile(out.getX() + 1, out.getY() + 1, out.getPlane()));
    			return false;
    		} else if (object.getId() == 10284) {
    			if (player.getHiddenBrother() == -1) {// reached chest
    				player.getPackets().sendGameMessage("You found nothing.");
    				return false;
    			}
    			if (!player.getKilledBarrowBrothers()[player.getHiddenBrother()])
    				sendTarget(2025 + player.getHiddenBrother(), player);
    			if (target != null) {
    				player.getPackets().sendGameMessage("You found nothing.");
    				return false;
    			}
    			sendReward();
    			player.getPackets().sendCameraShake(3, 12, 25, 12, 25);
    			this.BarrowCC = BarrowCC + 1;
    			player.getPackets().sendGameMessage("You have opened: <col=ff0000>" +this.BarrowCC+ "</col> chests!"); // chestcount
    			player.getPackets().closeInterface(
    					player.getInterfaceManager().hasRezizableScreen() ? 11 : 0); // removes
    																					// inter
    			player.getPackets().sendSpawnedObject(
    					new WorldObject(6775, 10, 0, 3551, 9695, 0));
    			player.resetBarrows();
    			return false;
    		} else if (object.getId() >= 6716 && object.getId() <= 6749) {
    			WorldTile walkTo;
    			if (object.getRotation() == 0)
    				walkTo = new WorldTile(object.getX() + 5, object.getY(), 0);
    			else if (object.getRotation() == 1)
    				walkTo = new WorldTile(object.getX(), object.getY() - 5, 0);
    			else if (object.getRotation() == 2)
    				walkTo = new WorldTile(object.getX() - 5, object.getY(), 0);
    			else
    				walkTo = new WorldTile(object.getX(), object.getY() + 5, 0);
    			if (!World.isNotCliped(walkTo.getPlane(), walkTo.getX(),
    					walkTo.getY(), 1))
    				return false;
    			player.addWalkSteps(walkTo.getX(), walkTo.getY(), -1, false);
    			player.lock(6);
    			if (player.getHiddenBrother() != -1) {
    				int brother = getRandomBrother();
    				if (brother != -1)
    					sendTarget(2025 + brother, walkTo);
    			}
    			return false;
    		} else {
    			int sarcoId = getSarcophagusId(object.getId());
    			if (sarcoId != -1) {
    				if (sarcoId == player.getHiddenBrother())
    					player.getDialogueManager().startDialogue("BarrowsD");
    				else if (target != null
    						|| player.getKilledBarrowBrothers()[sarcoId])
    					player.getPackets().sendGameMessage("You found nothing.");
    				else
    					sendTarget(2025 + sarcoId, player);
    				return false;
    			}
    		}
    		return true;
    	};
    
    	public int getSarcophagusId(int objectId) {
    		switch (objectId) {
    		case 66017:
    			return 0;
    		case 63177:
    			return 1;
    		case 66020:
    			return 2;
    		case 66018:
    			return 3;
    		case 66019:
    			return 4;
    		case 66016:
    			return 5;
    		default:
    			return -1;
    		}
    	}
    
    	public void targetDied() {
    		player.getHintIconsManager().removeUnsavedHintIcon();
    		setBrotherSlained(target.getId() - 2025);
    		target = null;
    	}
    
    	public void targetFinishedWithoutDie() {
    		player.getHintIconsManager().removeUnsavedHintIcon();
    		target = null;
    	}
    
    	public void setBrotherSlained(int index) {
    		player.getKilledBarrowBrothers()[index] = true;
    		sendBrotherSlain(index, true);
    	}
    
    	public void sendTarget(int id, WorldTile tile) {
    		if (target != null)
    			target.disapear();
    		target = new BarrowsBrother(id, tile, this);
    		target.setTarget(player);
    		target.setNextForceTalk(new ForceTalk("You dare disturb my rest!"));
    		player.getHintIconsManager().addHintIcon(target, 1, -1, false);
    	}
    
    	public Barrows() {
    
    	}
    
    	// component 9, 10, 11
    
    	private int headComponentId;
    	private int timer;
    
    	public int getAndIncreaseHeadIndex() {
    		Integer head = (Integer) player.getTemporaryAttributtes().remove(
    				"BarrowsHead");
    		if (head == null || head == player.getKilledBarrowBrothers().length - 1)
    			head = 0;
    		player.getTemporaryAttributtes().put("BarrowsHead", head + 1);
    		return player.getKilledBarrowBrothers()[head] ? head : -1;
    	}
    
    	@Override
    	public void process() {
    		if (timer > 0) {
    			timer--;
    			return;
    		}
    		if (headComponentId == 0) {
    			if (player.getHiddenBrother() == -1) {
    				player.applyHit(new Hit(player, Utils.random(50) + 1,
    						HitLook.REGULAR_DAMAGE));
    				resetHeadTimer();
    				return;
    			}
    			int headIndex = getAndIncreaseHeadIndex();
    			if (headIndex == -1) {
    				resetHeadTimer();
    				return;
    			}
    			headComponentId = 9 + Utils.random(2);
    			player.getPackets().sendItemOnIComponent(24, headComponentId,
    					4761 + headIndex, 0);
    			player.getPackets().sendIComponentAnimation(9810, 24,
    					headComponentId);
    			int activeLevel = player.getPrayer().getPrayerpoints();
    			if (activeLevel > 0) {
    				int level = player.getSkills().getLevelForXp(Skills.PRAYER) * 10;
    				player.getPrayer().drainPrayer(level / 6);
    			}
    			timer = 3;
    		} else {
    			player.getPackets()
    					.sendItemOnIComponent(24, headComponentId, -1, 0);
    			headComponentId = 0;
    			resetHeadTimer();
    		}
    	}
    
    	public void resetHeadTimer() {
    		timer = 20 + Utils.random(6);
    	}
    
    	@Override
    	public void sendInterfaces() {
    		if (player.getHiddenBrother() != -1)
    			player.getInterfaceManager().sendTab(
    					player.getInterfaceManager().hasRezizableScreen() ? 11 : 0,
    					24);
    	}
    
    	public void loadData() {
    		resetHeadTimer();
    		for (int i = 0; i < player.getKilledBarrowBrothers().length; i++)
    			sendBrotherSlain(i, player.getKilledBarrowBrothers()[i]);
    		sendCreaturesSlainCount(player.getBarrowsKillCount());
    		player.getPackets().sendBlackOut(2); // blacks minimap
    	}
    
    	public void sendBrotherSlain(int index, boolean slain) {
    		player.getPackets().sendConfigByFile(457 + index, slain ? 1 : 0);
    	}
    
    	public void sendCreaturesSlainCount(int count) {
    		player.getPackets().sendConfigByFile(464, count);
    	}
    
    	@Override
    	public void start() {
    		if (player.getHiddenBrother() == -1)
    			player.setHiddenBrother(Utils.random(Hills.values().length));
    		loadData();
    		sendInterfaces();
    	}
    
    	@Override
    	public boolean login() {
    		if (player.getHiddenBrother() == -1)
    			player.getPackets().sendCameraShake(3, 25, 50, 25, 50);
    		loadData();
    		sendInterfaces();
    		return false;
    	}
    
    	@Override
    	public boolean logout() {
    		leave(true);
    		return false;
    	}
    
    	@Override
    	public void forceClose() {
    		leave(true);
    	}
    
    }
    Reply With Quote  
     

  2. #2  
    Extreme Donator


    Join Date
    Mar 2009
    Posts
    1,461
    Thanks given
    111
    Thanks received
    184
    Rep Power
    79
    Place the chest count in the Player class
    Attached image
    Quote Originally Posted by MaxXi View Post
    Your combat is so awsome that i almost forgot its the combat matrix coded.
    Quote Originally Posted by twobrosplay View Post
    Try allowing the batch file through your firewall?
    Quote Originally Posted by SS_Alophonse View Post
    i have no life u say ha anything u say kid.i doubt u can even get a girlfriend
    i bet u cant even code anything.
    Reply With Quote  
     

  3. Thankful user:


  4. #3  
    Registered Member
    hc747's Avatar
    Join Date
    Dec 2013
    Age
    26
    Posts
    1,474
    Thanks given
    3,312
    Thanks received
    691
    Rep Power
    1098
    You're not saving the amount of chests. Save the amount of chests in the player class as something like:

    Code:
    public int chest;
    then in your sendreward method, increment the int as such;

    Code:
    player.chest++;
    Reply With Quote  
     

  5. Thankful user:



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. barrows chest not clickable [PI]
    By horiizon in forum Help
    Replies: 7
    Last Post: 04-23-2015, 03:29 AM
  2. [urgent]player files not saving![/urgent]
    By silabgarza in forum Help
    Replies: 6
    Last Post: 06-25-2011, 11:40 AM
  3. Continuos errors and not saving
    By si force in forum Help
    Replies: 2
    Last Post: 10-27-2008, 08:31 AM
  4. Replies: 3
    Last Post: 09-14-2008, 07:12 AM
  5. Barrows Special Attacks [not effects]
    By XGamer in forum Tutorials
    Replies: 2
    Last Post: 06-30-2008, 08:55 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
  •