Thread: [PI] 100% better firemaking!

Page 1 of 3 123 LastLast
Results 1 to 10 of 27
  1. #1 [PI] 100% better firemaking! 
    Member Market Banned Market Banned
    Crispytoast's Avatar
    Join Date
    Nov 2010
    Posts
    448
    Thanks given
    19
    Thanks received
    42
    Rep Power
    17
    Spoiler for Useing Process to save fire:

    [Only registered and activated users can see links. ] - All credit to [Only registered and activated users can see links. ]
    Code:
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Firemaking {
    
    	private static final int TINDERBOX = 590;
    	private static Map<Integer, FireData> fireDataList = new HashMap<Integer, FireData>();
    	private static ArrayList<Fires> fireList = new ArrayList<Fires>();
    
    	static {
    		for (FireData fires : FireData.values()) {
    			fireDataList.put(fires.getId(), fires);
    		}
    	}
    
    	public static FireData forId(int id) {
    		return fireDataList.get(id);
    	}
    
    	private static int getFlameForLog(int itemId) {
    		switch (itemId) {
    		case 7404:
    			return FireData.RED.getFlame();
    		case 7405:
    			return FireData.GREEN.getFlame();
    		case 7406:
    			return FireData.BLUE.getFlame();
    		}
    		return 2732;
    	}
    
    	public static void makeFire(final int playerId, int itemUsed, int usedWith) {
    		Client c = (Client) PlayerHandler.players[playerId];
    		if (c == null || c.getDisconnected())
    			return;
    		final int itemId = itemUsed != TINDERBOX ? itemUsed : usedWith;
    		if (forId(itemId) == null) {
    			return;
    		}
    		//make sure there not lighting a fire on top of an object
    		Region region = Server.getRegionManager().getRegionByLocation(
    				c.getLocation());
    		for (GameObject object : region.getGameObjects()) {
    			if (!object.isWalkable()
    					&& object.getLocation().getX() == c.getLocation().getX()
    					&& object.getLocation().getY() == c.getLocation().getY()
    					&& object.getLocation().getZ() == c.getLocation().getZ()) {
    				return;
    			}
    		}
    		if (itemUsed == forId(itemId).getId() && usedWith == TINDERBOX
    				|| itemUsed == TINDERBOX && usedWith == forId(itemId).getId()) {
    			for (int i = 0; i < fireList.size(); i++) {
    				if (c.getX() == fireList.get(i).getLoc().getX()
    						&& c.getY() == fireList.get(i).getLoc().getY()) {
    					c.sendMessage("You cannot light a fire here.");
    					return;
    				}
    			}
    			if (forId(itemId).getLevel() > c.playerLevel[c.playerFiremaking]) {
    				c.sendMessage("You need a fire making level of "
    						+ forId(itemId).getLevel() + " to light this.");
    				return;
    			}
    			c.startAnimation(733);
    			c.setWalkable(false);
    			c.getItems().deleteItem(forId(itemId).getId(),
    					c.getItems().getItemSlot(forId(itemId).getId()), 1);
    			CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
    				@Override
    				public void execute(CycleEventContainer container) {
    					Client c = (Client) PlayerHandler.players[playerId];
    					if (c == null || c.getDisconnected())
    						return;
    					Location fireLocation = c.getLocation();
    					fireList.add(new Fires(fireLocation, System
    							.currentTimeMillis()));
    					for (int j = 0; j < PlayerHandler.players.length; j++) {
    						if (PlayerHandler.players[j] != null) {
    							Client cl = (Client) PlayerHandler.players[j];
    							cl.getPA().object(getFlameForLog(itemId),
    									fireLocation.getX(), fireLocation.getY(),
    									-1, 10);
    						}
    					}
    					c.startAnimation(65535);
    					c.getPA().addSkillXP(forId(itemId).getXp(),
    							c.playerFiremaking);
    					c.setWalkable(true);
    					c.setFiremakingWalk(true);
    					container.stop();
    					CycleEventHandler.getSingleton().addEvent(c,
    							new CycleEvent() {
    								@Override
    								public void execute(
    										CycleEventContainer container) {
    									for (int i = 0; i < fireList.size(); i++) {
    										if ((System.currentTimeMillis() - fireList
    												.get(i).getTime()) >= (20000 - 1)) {
    											for (int j = 0; j < PlayerHandler.players.length; j++) {
    												if (PlayerHandler.players[j] != null) {
    													Client c = (Client) PlayerHandler.players[j];
    													c.getPA().object(
    															6951,
    															fireList.get(i)
    																	.getLoc()
    																	.getX(),
    															fireList.get(i)
    																	.getLoc()
    																	.getY(),
    															-1, 10);
    												}
    											}
    											GroundItem item = new GroundItem(
    													592, fireList.get(i)
    															.getLoc().getX(),
    													fireList.get(i).getLoc()
    															.getY(), 1, -1, 0,
    													"");
    											item.removeTicks = 40;
    											Server.itemHandler
    													.createGlobalItem(item);
    											fireList.remove(i);
    											container.stop();
    											break;
    										}
    									}
    								}
    
    								@Override
    								public void stop() {
    
    								}
    							}, 20);
    				}
    
    				@Override
    				public void stop() {
    
    				}
    
    			}, 10);
    		}
    	}
    
    	public static void clippedWalking(int id) {
    		Client c = (Client) PlayerHandler.players[id];
    		if (c == null || c.getDisconnected())
    			return;
    		Region region = Server.getRegionManager().getRegionByLocation(
    				c.getLocation());
    		// TODO implement tiles and also which direction to walk to!
    		for (GameObject object : region.getGameObjects()) {
    			if (!object.isWalkable()
    					&& object.getLocation().getX() == (c.getLocation().getX() - 1)
    					&& object.getLocation().getY() == c.getLocation().getY()
    					&& object.getLocation().getZ() == c.getLocation().getZ()) {
    				c.getPA().walkTo(1, 0);
    				return;
    			}
    		}
    		c.getPA().walkTo(-1, 0);
    	}
    
    }
    Code:
    
    import server.model.Location;
    
    public class Fires {
    
    	private Location loc;
    	private long time;
    
    	public Fires(Location loc, long time) {
    		this.loc = loc;
    		this.time = time;
    	}
    
    	public Location getLoc() {
    		return loc;
    	}
    
    	public long getTime() {
    		return time;
    	}
    
    }
    Code:
    public enum FireData {
    
    	//TODO: this can actually be put in an array instead of an enum
    	NORMAL(1511, 1, 40), ACHEY(2862, 1, 40), OAK(1521, 15, 60), WILLOW(1519,
    			30, 90), TEAK(6333, 35, 105), MAPLE(1517, 45, 135), MAHOGANY(6332,
    			50, 157), YEW(1515, 60, 202), MAGIC(1513, 75, 303), RED(7404, 1,
    			50, 7329, 11404), GREEN(7405, 1, 50, 7330, 11405), BLUE(7406, 1,
    			50, 7331, 11406);
    
    	private int id, level, xp, lighter, flame;
    
    	FireData(int a, int b, int c) {
    		this.setId(a);
    		this.setLevel(b);
    		this.setXp(c);
    	}
    
    	FireData(int a, int b, int c, int d, int e) {
    		this.setId(a);
    		this.setLevel(b);
    		this.setXp(c);
    		this.setLighter(d);
    		this.setFlame(e);
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public int getId() {
    		return id;
    	}
    
    	public void setLevel(int level) {
    		this.level = level;
    	}
    
    	public int getLevel() {
    		return level;
    	}
    
    	public void setXp(int xp) {
    		this.xp = xp;
    	}
    
    	public int getXp() {
    		return xp;
    	}
    
    	public void setLighter(int lighter) {
    		this.lighter = lighter;
    	}
    
    	public int getLighter() {
    		return lighter;
    	}
    
    	public void setFlame(int flame) {
    		this.flame = flame;
    	}
    
    	public int getFlame() {
    		return flame;
    	}
    
    }




    Spoiler for Easy to do, simple firemaking. THAT WORKS:
    Code:
    package server.model.players.skills;
    
    import server.Config;
    import server.Server;
    import server.model.players.Client;
    import server.model.players.Player;
    import server.util.Misc;
    
    
    public class FireMaking {	
    	
    	public int fireXX;
    	public int fireYY;
    	public int fireID;
    	public int fireTimer;
    	public int fireType;
    	public int ourFire = 0;
    	public static int[] fireX = new int[500];
    	public static int[] fireY = new int[500];
    	public static int[] fireTime = new int[500];
    	
    	Client c;
    	
    	public FireMaking(Client c) {
    		this.c = c;
    	}
    	
    	public void startFire(int fireLocX, int fireLocY, int fireColour,  int itemID){
    		for(int i = 0; i <= 499; i++){
    			if(c.absX == fireX[i] && c.absY == fireY[i]) {
    				c.sendMessage("You cant light a fire here.");
    				return;
    			}
    		}
    		if (c.playerLevel[c.playerFiremaking] >= logBurnLvl(itemID)) {
    			if(fireTimer == 0){
    				//TODO: Drop the log onto ground here
    				c.startAnimation(733);
    			    fireID = itemID;
    			    fireType = fireColour;
    			    fireTimer = getFireStartTimer();
    			    fireXX = fireLocX;
    			    fireYY = fireLocY;
    			} 
    		} else {
    				c.sendMessage("You need a firemaking level of "+logBurnLvl(itemID)+" to burn this log.");
    		}
    	}
    	
    	public void stageTwo(){
    		c.getItems().deleteItem(fireID, 1);
    		c.getPA().addSkillXP(logXP(), c.playerFiremaking);
    		fireX[ourFire] = fireXX;
    		fireY[ourFire] = fireYY;
    		fireTime[ourFire] = fireLength();
    		switch(fireType) {
    		case 590:
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						person.getPA().object(2732, fireXX, fireYY, 0, 10);
    					}
    				}
    			}
    		break;
    		case 7329:
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						person.getPA().object(11404, fireXX, fireYY, 0, 10);
    					}
    				}
    			}
    		break;
    		case 7330:
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						person.getPA().object(11405, fireXX, fireYY, 0, 10);
    					}
    				}
    			}
    		break;
    		case 7331:
    			for(int i = 0; i < Config.MAX_PLAYERS; i++) {
    				Player p = Server.playerHandler.players[i];
    				if(p != null) {
    					Client person = (Client)p;
    					if(person != null) {
    						person.getPA().object(11406, fireXX, fireYY, 0, 10);
    					}
    				}
    			}
    		break;
    		}
    		ourFire++;
    		//TODO: Make a check to see if next step is walkable
    		c.getPA().walkTo(-1,0);
    		c.turnPlayerTo(fireXX, fireYY);
    		if(ourFire >=  28)
    			ourFire = 0;
    	}
    	
    	public int logXP(){
    		switch(fireID){
    		case 1511:
    			return 40*Config.FIREMAKING_EXPERIENCE;
    		case 1521:
    			return 60*Config.FIREMAKING_EXPERIENCE;
    		case 1519:
    			return 90*Config.FIREMAKING_EXPERIENCE;
    		case 1517:
    			return 135*Config.FIREMAKING_EXPERIENCE;
    		case 1515:
    			return 225*Config.FIREMAKING_EXPERIENCE;
    		case 1513:
    			return 304*Config.FIREMAKING_EXPERIENCE;
    		}
    			return 0;
    	}
    	
    	public int logBurnLvl(int logID) {
    		switch (logID) {
    			case 1511:
    				return 1;
    			case 1521:
    				return 15;
    			case 1519:
    				return 30;
    			case 1517:
    				return 47;
    			case 1515:
    				return 64;
    			case 1513:
    				return 83;
    			default:
    				return 0;
    		}
    	}
    	
    	public int fireLength(){
    		int r = Misc.random(35);
    		switch(fireID){
    		case 1511:
    			return 60+r;
    		case 1521:
    			return 80+r;
    		case 1519:
    			return 100+r;
    		case 1517:
    			return 120+r;
    		case 1515:
    			return 140+r;
    		}
    			return 160+r;
    	}
    	
    	//TODO:
    	public int getFireStartTimer(){
    			return 5;
    	}
    }
    99% credits to shitty author who is a low life selfless whore who fails to hack.
    1% to me for leach leach leeachinnn it.
    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    Jun 2010
    Age
    24
    Posts
    2,530
    Thanks given
    544
    Thanks received
    584
    Rep Power
    411
    Whats better?
    Reply With Quote  
     

  3. #3  
    Registered Member titas lol's Avatar
    Join Date
    Dec 2010
    Age
    10
    Posts
    311
    Thanks given
    11
    Thanks received
    13
    Rep Power
    1
    hmm ganna test
    give me useitem.java for ur firemaking?

    [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  
     

  4. #4  
    Community Veteran


    Join Date
    Jun 2007
    Posts
    1,684
    Thanks given
    300
    Thanks received
    309
    Rep Power
    481
    Quote Originally Posted by titas lol View Post
    hmm ganna test
    give me useitem.java for ur firemaking?
    Add a boolean with every log id to check if you can start fire and then just startFire(using same variables).
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  5. #5  
    Respected Member

    Join Date
    Jan 2009
    Posts
    5,682
    Thanks given
    1,093
    Thanks received
    3,494
    Discord
    View profile
    Rep Power
    5000
    This is not 75% let alone 100%. Walking is missing, algorithm for the delay is missing and is coded like a piece of shit.
    Reply With Quote  
     

  6. Thankful users:


  7. #6  
    Registered Member
    Ninja assassin's Avatar
    Join Date
    Oct 2008
    Posts
    1,961
    Thanks given
    217
    Thanks received
    115
    Rep Power
    77
    Its leeched and shit++
    Btc: 1tpWTbAznzWYh6YpoUJeQ3MDVK56GGJ
    Reply With Quote  
     

  8. #7  
    † Owner Of Raved † francisco123bz's Avatar
    Join Date
    Nov 2008
    Posts
    381
    Thanks given
    27
    Thanks received
    22
    Rep Power
    61
    Shit code.
    Max players - 12/19/2009 (Not edited count)

    Owner of - Raved
    Reply With Quote  
     

  9. #8  
    Registered Member
    Core's Avatar
    Join Date
    Sep 2007
    Posts
    4,194
    Thanks given
    11
    Thanks received
    393
    Rep Power
    1985
    Good job. To all the idiots saying shit code, good job getting rsps to advance when all we do is flame each other on our code instead of helping.

    You should try to learn arrays, helps minimize your code and take out a couple methods, like so:

    Code:
    public int logBurnLvl(int logID) {
    		switch (logID) {
    			case 1511:
    				return 1;
    			case 1521:
    				return 15;
    			case 1519:
    				return 30;
    			case 1517:
    				return 47;
    			case 1515:
    				return 64;
    			case 1513:
    				return 83;
    			default:
    				return 0;
    		}
    	}
    	
    	public int fireLength(){
    		int r = Misc.random(35);
    		switch(fireID){
    		case 1511:
    			return 60+r;
    		case 1521:
    			return 80+r;
    		case 1519:
    			return 100+r;
    		case 1517:
    			return 120+r;
    		case 1515:
    			return 140+r;
    		}
    			return 160+r;
    	}
    
    public int logXP(){
    		switch(fireID){
    		case 1511:
    			return 40*Config.FIREMAKING_EXPERIENCE;
    		case 1521:
    			return 60*Config.FIREMAKING_EXPERIENCE;
    		case 1519:
    			return 90*Config.FIREMAKING_EXPERIENCE;
    		case 1517:
    			return 135*Config.FIREMAKING_EXPERIENCE;
    		case 1515:
    			return 225*Config.FIREMAKING_EXPERIENCE;
    		case 1513:
    			return 304*Config.FIREMAKING_EXPERIENCE;
    		}
    			return 0;
    	}
    [code]
    Using an array, you could remove these methods and use this.

    Code:
    public final int[][] LOGS = {
        {1511, 1, 60, 40}, // log id, level, fire time, xp
        {1521, 15, 80, 60},
        {1519, 30, 100, 90},
        {1517, 47, 120, 135},
        {1515, 64, 140, 225},
        {1513, 83, 160, 304}
    };
    
    public void getFire(int log) {
        for(int i = 0; i < LOGS.length; i++) {
            if(log == LOGS[i][0]) {
                fireId = LOGS[i][0];
                fireReq = LOGS[i][1];
                fireTime = LOGS[i][2];
                fireXp = LOGS[i][3];
                return;
            }
        }
    }
    Reply With Quote  
     

  10. Thankful users:


  11. #9  
    Registered Member Akeid's Avatar
    Join Date
    May 2009
    Posts
    911
    Thanks given
    22
    Thanks received
    15
    Rep Power
    37
    Haha mine has random light delay, acctual fire, and fire ashing. but i didnt find out a way yet to make the walking not nocilp through stuff
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    MSN: [email protected]
    Reply With Quote  
     

  12. #10  
    Member Market Banned Market Banned
    Crispytoast's Avatar
    Join Date
    Nov 2010
    Posts
    448
    Thanks given
    19
    Thanks received
    42
    Rep Power
    17
    Quote Originally Posted by pixelthis View Post
    This is not 75% let alone 100%. Walking is missing, algorithm for the delay is missing and is coded like a piece of shit.
    then rewrite it you arrogant prick.
    Reply With Quote  
     

Page 1 of 3 123 LastLast

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. Nearly 99 firemaking :o
    By iZAjz in forum Media
    Replies: 14
    Last Post: 03-03-2010, 09:10 PM
  2. Firemaking, yes/no.
    By Kastro in forum Voting
    Replies: 6
    Last Post: 01-17-2010, 02:04 PM
  3. Firemaking;
    By Kastro in forum Help
    Replies: 2
    Last Post: 01-05-2010, 02:07 AM
  4. firemaking bug
    By Dev. in forum Help
    Replies: 3
    Last Post: 09-05-2009, 12:28 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •