Thread: [PI] Woodcutting help

Results 1 to 3 of 3
  1. #1 [PI] Woodcutting help 
    Registered Member
    Join Date
    Dec 2010
    Posts
    33
    Thanks given
    6
    Thanks received
    0
    Rep Power
    1
    So, I downloaded a source. It's a remake of 2006 runescape, and the problem in it, it won't chop down regular trees. I've tried everything i can think of. I'm pretty nooby so I didn't think of much. Anyways here's the woodcutting class.

    Spoiler for Woodcutting class:
    Code:
    package server.content.skills;
    
    import server.Server;
    import server.game.players.Client;
    import server.game.players.PlayerHandler;
    import server.content.skills.misc.SkillHandler;
    import server.event.CycleEventHandler;
    import server.event.CycleEvent;
    import server.event.CycleEventContainer;
    import core.util.Misc;
    import server.*;
    import server.game.players.PlayerAssistant;
     
    /**
     * @author Izumi
     **/
    
    public class Woodcutting extends SkillHandler {
    
    	public static void attemptData(final Client c, final int tree, final int obX, final int obY) {
    	c.turnPlayerTo(c.objectX, c.objectY);
    		if (!noInventorySpace(c, "woodcutting")){
    			resetWoodcutting(c);
    			return;
    		}
    		if (hasAxe(c) && !canUseAxe(c)){
    			c.sendMessage("You do not have an axe of your level.");
    			return;
    		}
    		if (!hasAxe(c)) {
    			c.sendMessage("You need an axe to woodcut.");
    			return;
    		}
    
    		c.sendMessage("You swing your axe at the tree.");
    
    		if(c.playerIsWoodcutting) {
    			return;
    		}
    
    		c.playerIsWoodcutting = true;
    		c.stopPlayerSkill = true;
    
    		c.playerSkillProp[8][1] = getRespawnTime(c, tree);	//RESPAWN TIME
    		c.playerSkillProp[8][2] = getRequiredLevel(c, tree);	//LEVELREQ
    		c.playerSkillProp[8][3] = recieveXP(c, tree);		//XP
    		c.playerSkillProp[8][4] = getAnimId(c);			//ANIM
    		c.playerSkillProp[8][5] = getRespawnTime(c, tree);	//RESPAWN TIME
    		c.playerSkillProp[8][6] = getTreeLog(c, tree);		//LOG
    
    		c.woodcuttingTree = c.objectX + obY;
    
    		c.doAmount = Misc.random(25);
    		if(normalTree(c, tree)) {
    			c.doAmount = 1;
    		}
    
    		if(!hasRequiredLevel(c, 8, c.playerSkillProp[8][2], "woodcutting", "cut this tree")) {
    			resetWoodcutting(c);
    			return;
    		}
    
    		c.startAnimation(c.playerSkillProp[8][4]);
    
    		for(int i = 0; i < trees.length; i++) {
    			for(int l = 0; l < 6; l++) 
    				if(tree == trees[l][i]) {
    					CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
    						@Override
    						public void execute(CycleEventContainer container) {
    						c.turnPlayerTo(c.objectX, c.objectY);
    							if(c.playerSkillProp[8][6] > 0) {
    								c.getItems().addItem(c.playerSkillProp[8][6], 1);
    							}
    							if(c.playerSkillProp[8][3] > 0) {
    								c.getPA().addSkillXP(c.playerSkillProp[8][3] * WOODCUTTING_XP, 8);
    							}
    							if(c.playerSkillProp[8][6] > 0) {
    								c.sendMessage("You get some logs.");
    							}
    							deleteTime(c);
    							if (!hasAxe(c)) {
    								c.sendMessage("You need a woodcutting axe of your level to use.");
    								resetWoodcutting(c);
    								container.stop();
    							}
    							if (!noInventorySpace(c, "woodcutting")){
    								resetWoodcutting(c);
    								container.stop();
    							}
    							if(!c.stopPlayerSkill) {
    								resetWoodcutting(c);
    								container.stop();
    							}
    							if(!c.playerIsWoodcutting) {
    								container.stop();
    							}
    							if(c.doAmount <= 0 && c.playerIsWoodcutting) {
    								createStump(c, tree, obX, obY);
    								resetWoodcutting(c);
    								container.stop();
    							}
    						}
    						@Override
    						public void stop() {
    
    						}
    					}, getTimer(c));
    					CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
    						@Override
    						public void execute(CycleEventContainer container) {
    							if(c.playerSkillProp[8][4] > 0) {
    								c.startAnimation(c.playerSkillProp[8][4]);
    							} else {
    								resetWoodcutting(c);
    							}
    							if(!c.stopPlayerSkill) {
    								container.stop();
    							}
    						}
    						@Override
    						public void stop() {
    
    						}
    					}, 4);
    				}
    		}
    	}
    
    	public static boolean playerTrees(Client c, int tree) {
    		boolean trees2 = false;
    		for(int i = 0; i < trees.length; i++) {
    			for(int i1 = 0; i1 < 6; i1++) {
    				if(tree == trees[i1][i]){
    					trees2 = true;
    				}
    			}
    		}
    		return trees2;
    	}
    
    	private static void treeLocated(Client c, int obX, int obY) {
    		for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    			if(PlayerHandler.players[i] != null) {
    				Client person = (Client)PlayerHandler.players[i];
    				if(person != null) {
    					Client p = (Client)person;
    					if(p.distanceToPoint(c.absX, c.absY) <= 10){
    						if(c.woodcuttingTree == p.woodcuttingTree) {
    							p.woodcuttingTree = -1;
    							Woodcutting.resetWoodcutting(p);
    						}
    					}
    				}
    			}
    		}
    	}
    
    	private static int getTimer(Client c) {
    		return (Misc.random(5) + getAxeTime(c) + playerWoodcuttingLevel(c));
    	}
    
    	private static void createStump(final Client c, final int i, final int obX, final int obY) {
    		Server.objectHandler.createAnObject(c, 3884, obX, obY);
    		treeLocated(c, obX, obY);
    		CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
    			@Override
    			public void execute(CycleEventContainer container) {
    				Server.objectHandler.createAnObject(c, i, obX, obY);
    				container.stop();
    			}
    			@Override
    			public void stop() {
    
    			}
    		}, getRespawnTime(c, i));
    	}
    
    	public static void resetWoodcutting(Client c) {
    		c.startAnimation(65535);
    		c.playerIsWoodcutting = false;
    		c.doAmount = 0;
    		for(int i = 0; i < 9; i++) {
    			c.playerSkillProp[8][i] = -1;
    		}
    	}
    
    	private static boolean hasAxe(Client c) {
    		boolean has = false;
    		for(int i = 0; i < axes.length; i++) {
    			if(c.getItems().playerHasItem(axes[i][0]) || c.playerEquipment[3] == axes[i][0]) {
    				has = true;
    			}
    		}
    		return has;
    	}
    
    	private static int playerWoodcuttingLevel(Client c) {
    		return (10 - (int)Math.floor(c.playerLevel[8] / 10));
    	}
    
    	private static int getTreeLog(Client c, int l) {
    		c.playerSkillProp[8][6] = -1;
    		for(int i = 0; i < trees.length; i++) {
     			if(l== trees[5][i]) {
    				c.playerSkillProp[8][6] = 1513;
    			} else if(l == trees[4][i]) {
    				c.playerSkillProp[8][6] = 1515;
    			} else if(l == trees[3][i]) {
    				c.playerSkillProp[8][6] = 1517;
    			} else if(l == trees[2][i]) {
    				c.playerSkillProp[8][6] = 1519;
    			} else if(l == trees[1][i]) {
    				c.playerSkillProp[8][6] = 1521;
    			} else if(l == trees[0][i]) {
    				c.playerSkillProp[8][6] = 1511;
    			}
    		}
    		return c.playerSkillProp[8][6];
    	}
    
    	private static int getAxeTime(Client c) {
    		int axe = -1;
    		for(int i = 0; i < axes.length; i++) {
    			if(c.playerLevel[8] >= axes[i][1]) {
    				if(c.getItems().playerHasItem(axes[i][0]) || c.playerEquipment[3] == axes[i][0]) {
    					axe = axes[i][3];
    				}
    			}
    		}
    		return axe;
    	}
    
    	private static int getAnimId(Client c) {
    		int anim = -1;
    		for(int i = 0; i < axes.length; i++) {
    			if(c.playerLevel[8] >= axes[i][1]) {
    				if(c.getItems().playerHasItem(axes[i][0]) || c.playerEquipment[3] == axes[i][0]) {
    					anim = axes[i][2];
    				}
    			}
    		}
    		return anim;
    	}
    
    	private static int recieveXP(Client c, int treep) {
    		c.playerSkillProp[8][3] = -1;
    		for(int i = 0; i < trees.length; i++) {
    			if(treep == trees[5][i]) {
    				c.playerSkillProp[8][3] = 250;
    			} else if(treep == trees[4][i]) {
    				c.playerSkillProp[8][3] = 175;
    			} else if(treep == trees[3][i]) {
    				c.playerSkillProp[8][3] = 100;
    			} else if(treep == trees[2][i]) {
    				c.playerSkillProp[8][3] = 68;
    			} else if(treep == trees[1][i]) {
    				c.playerSkillProp[8][3] = 38;
    			} else if(treep == trees[0][i]) {
    				c.playerSkillProp[8][3] = 25;
    			}
    		}
    		return c.playerSkillProp[8][3];
    	}
    
    	private static int getRespawnTime(Client c, int treep) {
    		int respawn = -1;
    		for(int i = 0; i < trees.length; i++) {
    			if(treep == trees[5][i]) {
    					respawn = 100;	//1 Minute
    			} else if(treep == trees[4][i]) {
    					respawn = 50;	//30
    			} else if(treep == trees[3][i]) {
    					respawn = 25;	//15
    			} else if(treep == trees[2][i]) {
    					respawn = 25;	//15
    			} else if(treep == trees[1][i]) {
    					respawn = 15;	//9
    			} else if(treep == trees[0][i]) {
    					respawn = 10;	//6
    			}
    		}
    		return respawn;
    	}
    
    	private static boolean normalTree(Client c, int treep) {
    		boolean normal = false;
    		for(int i = 0; i < trees.length; i++) {
    			if(treep == trees[0][i]) {
    				normal = true;
    			}
    		}
    		return normal;
    	}
    
    	private static boolean canUseAxe(Client c) {
    		boolean axe = false;
    		if(performCheck(c, 1349, 1) || performCheck(c, 1351, 1) 
    			|| performCheck(c, 1353, 6) || performCheck(c, 1361, 6) 
    			|| performCheck(c, 1355, 21) || performCheck(c, 1357, 31)
    			|| performCheck(c, 1359, 41) || performCheck(c, 6739, 61)) {
    			axe = true;
    		}
    		return axe;
    	}
    
    	private static boolean performCheck(Client c, int i, int l) {
    		return (c.getItems().playerHasItem(i) || c.playerEquipment[3] == i) && c.playerLevel[8] >= l;
    	}
    
    	private static int getRequiredLevel(Client c, int treep) {
    		int respawn = -1;
    		for(int i = 0; i < trees.length; i++) {
    			if(treep == trees[5][i]) {
    					respawn = 75;
    			} else if(treep == trees[4][i]) {
    					respawn = 60;
    			} else if(treep == trees[3][i]) {
    					respawn = 45;
    			} else if(treep == trees[2][i]) {
    					respawn = 30;
    			} else if(treep == trees[1][i]) {
    					respawn = 15;
    			} else if(treep == trees[0][i]) {
    					respawn = 1;
    			}
    		}
    		return respawn;
    	}
    
    	private static int[][] axes = {
    		{1351, 1, 879, 10},
    		{1349, 1, 877, 10},
    		{1353, 6, 875, 10},
    		{1361, 6, 873, 9},
    		{1355, 21, 871, 8},
    		{1357, 31, 869, 7},
    		{1359, 41, 867, 5},
    		{6739, 61, 2846, 4},
    	};
    
    	private static int[][] trees = {
    		{	//	NORMAL
    			3883, 3879, 3882, 3881, 1281, 1282, 1278, 
    			1283, 1284, 1285, 1286, 1287, 1288, 
    			1289, 1290, 1291, 1301, 1303, 1304, 
    			1305, 1318, 1319, 1315, 1316, 1330, 
    			1331, 1332, 1333, 1383, 1384, 2409, 
    			2447, 2448, 3033, 3034, 3035, 3036, 
    			3928, 3967, 3968, 4048, 4049, 4050, 
    			4051, 4052, 4053, 4054, 4060, 5004, 
    			5005, 5045, 5902, 5903, 5904, 8973, 
    			8974, 10041, 10081, 10082, 10664, 11112, 
    			11510, 12559, 12560, 12732, 12895, 12896, 
    			13412, 13411, 13419, 13843, 13844, 13845, 
    			13847, 13848, 13849, 13850, 14308, 14309, 
    			14513, 14514, 14515, 14521, 14564, 14565, 
    			14566, 14593, 14594, 14595, 14600, 14635, 
    			14636, 14637, 14642, 14664, 14665, 14666, 
    			14693, 14694, 14695, 14696, 14701, 14738, 
    			14796, 14797, 14798, 14799, 14800, 14801, 
    			14802, 14803, 14804, 14805, 14806, 14807, 
    			15489, 15776, 15777, 16264, 16265, 19165, 
    			19166, 19167, 23381,
    			
    		}, {	//	OAK
    			1281, 3037, 8462, 8463, 8464, 8465,
    			8466, 8467, 10083, 13413, 13420,
    		}, {	//	WILLOW
    			1308, 5551, 5552, 5553, 8481, 8482, 8483,
    			8484, 8485, 8486, 8487, 8488, 8496, 8497,
    			8498, 8499, 8500, 8501, 13414, 13421,
    		}, {	//	MAPLE
    			1307, 4674, 8435, 8436, 8437, 8438, 8439,
    			8440, 8441, 8442, 8443, 8444, 8454, 8455,
    			8456, 8457, 8458, 8459, 8460, 8461, 13415,
    			13423,
    		}, {	//	YEW
    			1309, 8503, 8504, 8505, 8506, 8507, 8508,
    			8509, 8510, 8511, 8512, 8513, 13416, 13422,
    		}, {	//	MAGIC
    			1306, 8396, 8397, 8398, 8399, 8400, 8401,
    			8402, 8403, 8404, 8405, 8406, 8407, 8408,
    			8409, 13417, 13424,
    		}
    	};
    
    }
    Reply With Quote  
     

  2. #2  
    Banned
    Join Date
    Jun 2012
    Posts
    438
    Thanks given
    13
    Thanks received
    27
    Rep Power
    0
    a woodcutting class on its own wont do anything you need to add into actionhandler
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    Dec 2010
    Posts
    33
    Thanks given
    6
    Thanks received
    0
    Rep Power
    1
    It is in actionhandler..
    If anybody is wondering, I didn't post the entire thing cause theres no point of all that extra stuff that has nothing to do with woodcutting.


    Spoiler for Actionhandler:
    Code:
    package server.game.players;
    
    import server.Config;
    
    
    import server.content.skills.*;
    import server.Server;
    import server.game.objects.Object;
    import core.util.Misc;
    import core.util.ScriptManager;
    import server.game.players.Flax;
    import server.model.minigames.Sailing;
    
    public class ActionHandler {
    	
    	private Client c;
    	
    	public ActionHandler(Client Client) {
    		this.c = Client;
    	}
    	
    	
    	public void firstClickObject(int objectType, int obX, int obY) {
    		c.clickObjectType = 0;
    		if (Woodcutting.playerTrees(c, objectType)) {
    			Woodcutting.attemptData(c, objectType, obX, obY);
    			return;
    		}
    		if (Mining.miningRocks(c, objectType)) {
    			Mining.attemptData(c, objectType, obX, obY);
    			return;
    		}
    		switch(objectType) {
    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
    By phl0w in forum Snippets
    Replies: 14
    Last Post: 08-07-2012, 07:59 PM
  2. PI woodcutting.
    By Deception-pkz in forum Help
    Replies: 7
    Last Post: 02-27-2012, 06:11 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
  •