Thread: 2006redone [PI] Woodcutting bug

Results 1 to 9 of 9
  1. #1 2006redone [PI] Woodcutting bug 
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    I fixed it..
    Last edited by 2nubs1cup; 09-01-2013 at 10:56 AM. Reason: Because my woodcutting is shit lol
    Reply With Quote  
     

  2. #2  
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    bump
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    Aug 2013
    Posts
    42
    Thanks given
    21
    Thanks received
    2
    Rep Power
    36
    post your woodcutting.java file
    Reply With Quote  
     

  4. #4  
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    Here's my woodcutting.java file

    Code:
    package server.game.content.skills.core;
    
    import server.Config;
    import server.Server;
    import server.game.content.clipping.clip.region.Region;
    import server.game.content.randomevents.EventHandler;
    import server.game.content.skills.SkillHandler;
    import server.game.npcs.NPCHandler;
    import server.game.objects.Object;
    import server.game.players.Client;
    import server.game.players.PlayerHandler;
    import server.task.Task;
    import server.util.Misc;
    
    public class Woodcutting extends SkillHandler {
    
    	private Client c;
    
    	public final static int[][] Axe_Settings = {
    		{1351, 1, 1, 879}, //Bronze
    		{1349, 1, 2, 877}, //Iron
    		{1353, 6, 3, 875}, //Steel
    		{1361, 6, 4, 873}, //Black
    		{1355, 21, 5, 871}, //Mithril
    		{1357, 31, 6, 869}, //Addy
    		{1359, 41, 8, 867}, //Rune
    		{6739, 61, 10, 2846} //Dragon
    	};
    
    	public final int[][] Tree_Settings = {
    			{1276, 1342, 1, 25, 1511, 45, 100}, //Tree
    			{1278, 1342, 1, 25, 1511, 45, 100}, //Tree
    			{1286, 1342, 1, 25, 1511, 45, 100}, //Dead Tree
    			{1281, 1356, 15, 38, 1521, 11, 20}, //Oak
    			{1308, 7399, 30, 68, 1519, 11, 8}, //Willow
    			{5552, 7399, 30, 68, 1519, 11, 8}, //Willow
    			{1307, 1343, 45, 100, 1517, 48, 8}, //Maple
    			{1309, 7402, 60, 175, 1515, 79, 5}, //Yew
    			{1306, 7401, 75, 250, 1513, 150, 3}, //Magic
    			{5551, 7399, 30, 68, 1519, 11, 8}, //Willow
    			{5553, 7399, 30, 68, 1519, 11, 8}, //Willow
    			{3033, 1342, 1, 25, 1511, 45, 100}, //Tree
    			{1282, 1342, 1, 25, 1511, 45, 100} //Tree
    	};
    
    	public static int[][] FIX_AXE = { { 492, 508, 1351 }, { 492, 510, 1349 },
    		{ 492, 512, 1353 }, { 492, 514, 1361 }, { 492, 516, 1355 },
    		{ 492, 518, 1357 }, { 492, 520, 1359 }, { 492, 6742, 6739 }, };
    
    	int a = -1;
    
    	public Woodcutting(Client c) {
    		this.c = c;
    	}
    
    	private static final int 	
    	SPIRIT_LEVEL_14 = 438, 
    	SPIRIT_LEVEL_29 = 439, 
    	SPIRIT_LEVEL_49 = 440, 
    	SPIRIT_LEVEL_79 = 441, 
    	SPIRIT_LEVEL_120 = 442, 
    	SPIRIT_LEVEL_159 = 443;
    
    	private boolean randomSpiritSpawn() {
    		if (Misc.random(100) == 1 && c.playerHasRandomEvent == false) {
    			if (c.combatLevel >= 3 && c.combatLevel < 29) {
    				NPCHandler.spawnNpc(c, SPIRIT_LEVEL_14, c.absX, c.absY + 1, c.heightLevel, 0, 28, 1, 10, 10, true, false);
    				c.playerHasRandomEvent = true;
    				return true;
    			} else if (c.combatLevel >= 29 && c.combatLevel < 49) {
    				NPCHandler.spawnNpc(c, SPIRIT_LEVEL_29, c.absX, c.absY + 1, c.heightLevel, 0, 36, 3, 50, 50, true, false);
    				c.playerHasRandomEvent = true;
    				return true;
    			} else if (c.combatLevel >= 49 && c.combatLevel < 79) {
    				NPCHandler.spawnNpc(c, SPIRIT_LEVEL_49, c.absX, c.absY + 1, c.heightLevel, 0, 36, 3, 75, 75, true, false);
    				c.playerHasRandomEvent = true;
    				return true;
    			} else if (c.combatLevel >= 79 && c.combatLevel < 100) {
    				NPCHandler.spawnNpc(c, SPIRIT_LEVEL_79, c.absX, c.absY + 1, c.heightLevel, 0, 36, 3, 100, 100, true, false);
    				c.playerHasRandomEvent = true;
    				return true;
    			} else if (c.combatLevel >= 100 && c.combatLevel < 110) {
    				NPCHandler.spawnNpc(c, SPIRIT_LEVEL_120, c.absX, c.absY + 1, c.heightLevel, 0, 36, 3, 100, 100, true, false);
    				c.playerHasRandomEvent = true;
    				return true;
    			} else if (c.combatLevel >= 110) {
    				NPCHandler.spawnNpc(c, SPIRIT_LEVEL_159, c.absX, c.absY + 1, c.heightLevel, 0, 36, 3, 100, 100, true, false);
    				c.playerHasRandomEvent = true;
    				return true;
    			}
    		}
    		return false;
    	}
    
    
    	public void repeatAnimation() {
    		Server.getTaskScheduler().schedule(new Task (3) {
    			@Override
    			protected void execute() {
    				if (c.isWoodcutting) {
    					c.startAnimation(Axe_Settings[a][3]);
    					c.isWoodcutting = true;
    				} else if (!c.isWoodcutting) {
    					stop();
    				}
    			}
    			@Override
    			public void stop() {
    				c.startAnimation(65535);
    			}
    		});
    	}
    
    
    	public void handleCanoe(final Client c, final int objectId) {
    		for (int axes[] : Axe_Settings) {
    			int type = axes[0];
    			int level = axes[1];
    			int anim = axes[2];
    			if (c.playerLevel[c.playerWoodcutting] >= level
    					&& c.getItems().playerHasItem(type)
    					|| c.playerLevel[c.playerWoodcutting] >= level
    					&& c.playerEquipment[c.playerWeapon] == type) {
    				if (c.checkBusy()) {
    					return;
    				}
    				c.setBusy(true);
    				c.turnPlayerTo(c.objectX, c.objectY);
    				c.startAnimation(anim);
    				c.sendMessage("You swing your axe at the station.");
    				Server.getTaskScheduler().schedule(new Task(4) {
    
    					@Override
    					public void execute() {
    						addFallenTree(c, objectId);
    						Server.getTaskScheduler().schedule(new Task(1) {
    
    							@Override
    							public void execute() {
    								c.dialogueAction = 122;
    								c.getDH().sendOption3(
    										"Travel using Log Canoe to enter Barbarian Village.",
    										"Travel using Waka Canoe to enter King Black Dragon Wilderness.",
    										"Do Nothing.");
    								stop();
    								c.setBusy(false);
    							}
    
    						});
    						c.setBusy(false);
    						c.sendMessage("You cut down the canoe. Please wait...");
    						stop();
    					}
    
    				});
    
    			}
    		}
    	}
    
    	public void fixAxe(final Client c) {
    		for (int fix[] : FIX_AXE) {
    			int axeHandle = fix[0];
    			int axeHead = fix[1];
    			final int fixedAxe = fix[2];
    			if (c.getItems().playerHasItem(axeHandle)
    					&& c.getItems().playerHasItem(axeHead)) {
    				if (c.checkBusy()) {
    					return;
    				}
    				c.isWoodcutting = true;
    				c.setBusy(true);
    				c.getItems().deleteItem(axeHandle, 1);
    				c.getItems().deleteItem(axeHead, 1);
    				c.getPA().removeAllWindows();
    				c.sendMessage("Your axe handle and axe head have been taken.");
    				Server.getTaskScheduler().schedule(new Task(1) {
    					@Override
    					protected void execute() {
    						c.getItems().addItem(fixedAxe, 1);
    						c.sendMessage("Your axe has been fixed.");
    						c.setBusy(false);
    						stop();
    					}
    				});
    			}
    		}
    	}
    
    	public static void addFallenTree(Client client, int canoe) {
    		if (canoe == client.objectId) {
    			for (int j = 0; j < PlayerHandler.players.length; j++) {
    				if (PlayerHandler.players[j] != null) {
    					new Object(1296, client.objectX, client.objectY, 0, 0, 10,
    							canoe, 20 + Misc.random(40));
    				}
    			}
    		}
    
    	}
    
    	public boolean startWoodcutting(final int j, final int x, final int y, final int type) {
    		if (c.isWoodcutting)
    			return false;
    		if (!WOODCUTTING) {
    			c.sendMessage("This skill is currently disabled.");
    			return false;
    		}
    		int wcLevel = c.playerLevel[8];
    		a = -1;
    		c.turnPlayerTo(x, y);
    		if (Tree_Settings[j][2] > wcLevel) {
    			c.sendMessage("You need a Woodcutting level of " + Tree_Settings[j][2] + " to cut this tree.");
    			return false;
    		}
    		for (int i = 0; i < Axe_Settings.length; i++) {
    			if (c.getItems().playerHasItem(Axe_Settings[i][0]) || c.playerEquipment[c.playerWeapon] == Axe_Settings[i][0]) {
    				if (Axe_Settings[i][1] <= wcLevel) {
    					a = i;
    				}
    			}
    		}
    		if (a == -1) {
    			c.sendMessage("You need an axe to cut this tree.");
    			return false;
    		}
    		if (c.getItems().freeSlots() < 1) {
    			c.sendMessage("You do not have enough inventory slots to do that.");
    			return false;
    		}
    		if (Config.goodDistance(c.objectX, c.objectY, c.absX, c.absY,
    				2)) {
    		c.startAnimation(Axe_Settings[a][3]);
    		c.isWoodcutting = true;
    		repeatAnimation();
    		c.treeX = x;
    		c.treeY = y;
    		Server.getTaskScheduler().schedule(new Task(getTimer(j, a, wcLevel)) {
    			@Override
    			protected void execute() {
    				if (c.disconnected) {
    					stop();
    					stopWoodcutting(c);
    					return;
    				}
    				if (!c.isWoodcutting) {
    					stop();
    					stopWoodcutting(c);
    				}
    				if (c.isWoodcutting)
    					c.startAnimation(Axe_Settings[a][3]);
    				if (c.getItems().freeSlots() < 1) {
    					c.sendMessage("You have ran out of inventory slots.");
    					stop();
    					stopWoodcutting(c);
    				}
    				int xp = Tree_Settings[j][3];
    				c.getPA().addSkillXP(Tree_Settings[j][3] * WOODCUTTING_EXPERIENCE,
    						c.playerWoodcutting);
    				if (c.isWoodcutting) {
    					c.getItems().addItem(Tree_Settings[j][4], 1);
    					c.getPA().addSkillXP(xp, 8);
    					c.sendMessage("You get some "
    							+ c.getItems()
    									.getItemName(Tree_Settings[j][4]) + ".");
    				}
    				if (c.getItems().freeSlots() < 1) {
    					c.sendMessage("You have ran out of inventory slots.");
    					stop();
    					stopWoodcutting(c);
    				}
    				birdNests();
    				if(Misc.random(300) == 2) {
    					randomSpiritSpawn();
    				}
    				EventHandler.randomEvents(c);
    				if (c.getItems().freeSlots() < 1) {
    					c.sendMessage("You have ran out of inventory slots.");
    					stop();
    					stopWoodcutting(c);
    				}
    				if (Misc.random(100) <= Tree_Settings[j][6]) {
    					cutDownTree(Tree_Settings[j][5], x, y, type, Tree_Settings[j][1], Tree_Settings[j][0]);
    					stop();
    					stopWoodcutting(c);
    				}
    			}
    			@Override
    			public void stop() {
    				c.startAnimation(65535);
    				c.isWoodcutting = false;
    				c.treeX = 0;
    				c.treeY = 0;
    				return;
    			}
    		});
    	}
    		return false;
    }
    	
    	private static void stopWoodcutting(Client c) {
    		c.startAnimation(65535);
    		c.isWoodcutting = false;
    		c.treeX = 0;
    		c.treeY = 0;
    	}
    
    	public int getTimer(int b, int c, int level) {
    		double timer = (int)((Tree_Settings[b][2]  * 2) + 20 + Misc.random(20))-((Axe_Settings[c][2] * (Axe_Settings[c][2] * 0.75)) + level);
    		if (timer < 3.0) {
    			return 3;
    		} else {
    			return (int)timer;
    		}
    	}
    
    	public void birdNests() {
    		if (Misc.random(150) < 1) {
    			c.sendMessage("A birds nest falls from the branches.");
    			dropNest();
    		}
    	}
    
    	public void dropNest() {
    		if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) {
    			Server.itemHandler.createGroundItem(c, 5070, c.getX() - 1,
    					c.getY(), 1, c.playerId);
    		} else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1,
    				0)) {
    			Server.itemHandler.createGroundItem(c, 5070, c.getX() + 1,
    					c.getY() - 1, 1, c.playerId);
    		} else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0,
    				-1)) {
    			Server.itemHandler.createGroundItem(c, 5070, c.getX(),
    					c.getY() - 1, 1, c.playerId);
    		} else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0,
    				1)) {
    			Server.itemHandler.createGroundItem(c, 5070, c.getX(),
    					c.getY() + 1, 1, c.playerId);
    		}
    	}
    
    	public void cutDownTree(int respawnTime, int x, int y, int type, int i, int j) {
    		new Object(i, x, y, 0, type, 10, j, respawnTime);
    		for (int t = 0; t < PlayerHandler.players.length; t++) {
    			if (PlayerHandler.players[t] != null) {
    				if (PlayerHandler.players[t].treeX == x && PlayerHandler.players[t].treeY == y) {
    					PlayerHandler.players[t].isWoodcutting = false;
    					PlayerHandler.players[t].startAnimation(65535);
    					PlayerHandler.players[t].treeX = 0;
    					PlayerHandler.players[t].treeY = 0;
    				}
    			}
    		}
    	}
    }
    Reply With Quote  
     

  5. #5  
    Registered MrClassic
    MrClassic's Avatar
    Join Date
    Oct 2008
    Age
    15
    Posts
    2,063
    Thanks given
    24,154
    Thanks received
    551
    Rep Power
    5000
    in Walking.java add this:
    Code:
    Woodcutting.stopWoodcutting(c);
    Reply With Quote  
     

  6. #6  
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    Quote Originally Posted by mrClassic View Post
    in Walking.java add this:
    Code:
    Woodcutting.stopWoodcutting(c);
    Thank you so much!
    Reply With Quote  
     

  7. #7  
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    Quote Originally Posted by mrClassic View Post
    in Walking.java add this:
    Code:
    Woodcutting.stopWoodcutting(c);
    It stops woodcutting but now when I stop chopping a tree it still gives nonstop exp how can I fix that??

    EDIT: It didnt work
    Reply With Quote  
     

  8. #8  
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    bump
    Reply With Quote  
     

  9. #9  
    Registered Member 2nubs1cup's Avatar
    Join Date
    Jan 2013
    Posts
    972
    Thanks given
    77
    Thanks received
    90
    Rep Power
    15
    no one knows?
    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. [pi]Woodcutting bug
    By cradle in forum Help
    Replies: 2
    Last Post: 11-13-2010, 04:52 PM
  2. [PI] Wierd Bug?
    By Mrthunder23 in forum Help
    Replies: 3
    Last Post: 10-17-2010, 10:44 PM
  3. [pi] npc-bug- 2,5$
    By Romania Clan in forum Help
    Replies: 0
    Last Post: 06-29-2010, 08:09 AM
  4. pi -gw bug
    By Romania Clan in forum Help
    Replies: 3
    Last Post: 06-19-2010, 12:53 PM
  5. Final Devo 2.7 Woodcutting bug Fix.
    By Knova in forum Snippets
    Replies: 14
    Last Post: 01-24-2010, 09:30 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
  •