Thread: [831] Healing Idea - Please Help

Page 1 of 2 12 LastLast
Results 1 to 10 of 19
  1. #1 [831] Healing Idea - Please Help 
    Registered Member Ledion's Avatar
    Join Date
    Nov 2014
    Posts
    140
    Thanks given
    4
    Thanks received
    6
    Rep Power
    0
    I was wondering if it was possible to make the player heal when he is in a bank just like RS3 but I've spent an hour now and I've not figured how to get started into this method. I tried to copy the isMultiArea(WorldTile tile) method and change it into isHealingArea(WorldTile tile) but I don't know where to put it so it will start healing every player in the game inside a specific area like bank in RS3.

    Can anyone direct me towards there?
    Reply With Quote  
     

  2. #2  
    Contributor
    Kris's Avatar
    Join Date
    Jun 2016
    Age
    23
    Posts
    3,536
    Thanks given
    703
    Thanks received
    2,322
    Discord
    View profile
    Rep Power
    5000
    This is not very memory efficient, but you could map down all bank coordinates and then check for the coordinates in World class, at the method which checks for players steps. I don't know what it's called, seems to differ per every source but it always exists in World class. Same method as moved() in Controller class, basically. However that's only for controllers. Find it, throw in the coordinates and you're good.
    Reply With Quote  
     

  3. #3  
    ♢♢♢♢♢♢

    Con Artist's Avatar
    Join Date
    Jan 2012
    Posts
    1,354
    Thanks given
    665
    Thanks received
    307
    Rep Power
    386
    No idea how it works in rs3, but you could check if player is within distance of a working bank booth then heal them accordingly


    widdy widdy


    /|\
    / \

    Reply With Quote  
     

  4. #4  
    Registered Member chucky009's Avatar
    Join Date
    Aug 2011
    Posts
    345
    Thanks given
    1
    Thanks received
    25
    Rep Power
    0
    Why don't you just add it in the openbank methode?
    It is very easy and like Eldritch said it is not efficient for the memory on how you want to do it, honestly, the players use the bank system ALOT so if they go home they enter the bank and get instantly healed.
    Go to bank.java navigate to the openbank methode and add the healing in it like: player.heal(20000); for example.
    Reply With Quote  
     

  5. #5  
    Contributor
    Kris's Avatar
    Join Date
    Jun 2016
    Age
    23
    Posts
    3,536
    Thanks given
    703
    Thanks received
    2,322
    Discord
    View profile
    Rep Power
    5000
    Quote Originally Posted by chucky009 View Post
    Why don't you just add it in the openbank methode?
    It is very easy and like Eldritch said it is not efficient for the memory on how you want to do it, honestly, the players use the bank system ALOT so if they go home they enter the bank and get instantly healed.
    Go to bank.java navigate to the openbank methode and add the healing in it like: player.heal(20000); for example.
    ;;bank plz
    Reply With Quote  
     

  6. #6  
    Registered Member chucky009's Avatar
    Join Date
    Aug 2011
    Posts
    345
    Thanks given
    1
    Thanks received
    25
    Rep Power
    0
    Quote Originally Posted by Eldritch View Post
    ;;bank plz
    what?
    Reply With Quote  
     

  7. #7  
    *breaks walking*

    Cody_'s Avatar
    Join Date
    Dec 2010
    Posts
    717
    Thanks given
    198
    Thanks received
    189
    Discord
    View profile
    Rep Power
    267
    When you load up the server, print out the coordinates of all objects with the name 'bank booth'/bank/whatever
    Save those coordinates in an array, check if the player is within 1 tile of those coordinates.

    Same with NPCs, just dump the NPC coordinates for every npc with the name 'banker'

    Not quite fool-proof as you'll need to add checks for the bankers that are spawned in the wilderness, and a couple others that you probably don't want players healing next to

    To be honest, this is kind of redundant, and it isn't very efficient to be looping through all banks/bankers every tick to heal players

    So I personally suggest only having the bank at home heal players.
    Reply With Quote  
     

  8. #8  
    Registered Member

    Join Date
    Oct 2008
    Posts
    2,342
    Thanks given
    132
    Thanks received
    1,019
    Rep Power
    828
    World.isSafeZone(WorldTile tile) should do the trick even if cheap(this includes mostly banks and safe zones). Also make sure players don't get healed during combat or they could lure mobs and be god mode.

    Only reason I don't suggest using bankers is because you also get healed in some areas even if no banker there.


    This pretty much includes most of the areas which used to be safe back during pvp world days.

    Code:
    	public static boolean isSafeZone(WorldTile tile) {
    		return (tile.getY() >= 3470 && tile.getY() <= 3513 && tile.getX() >= 3143 && tile.getX() <= 3186)//Grand Exchange
    				|| (tile.getX() >= 2801 && tile.getY() >= 3325 && tile.getX() <= 2875 && tile.getY() <= 3395) //Entrana
    				|| (tile.getX() >= 3044 && tile.getY() >= 3482 && tile.getX() <= 3059 && tile.getY() <= 3498 && tile.getPlane() == 1) //Top level of Monastery
    				|| (tile.getX() >= 3201 && tile.getY() >= 3201 && tile.getX() <= 3229 && tile.getY() <= 3236) //Lumbridge Castle
    				|| (tile.getX() >= 2952 && tile.getY() >= 3324 && tile.getX() <= 3000 && tile.getY() <= 3354) //Falador Castle
    				|| (tile.getX() >= 3091 && tile.getY() >= 3488 && tile.getX() <= 3098 && tile.getY() <= 3499) //Edgeville Bank
    				|| (tile.getX() >= 3179 && tile.getY() >= 3432 && tile.getX() <= 3194 && tile.getY() <= 3446) //Varrock West Bank
    				|| (tile.getX() >= 3250 && tile.getY() >= 3416 && tile.getX() <= 3257 && tile.getY() <= 3423) //Varrock East Bank
    				|| (tile.getX() >= 2943 && tile.getY() >= 3368 && tile.getX() <= 2949 && tile.getY() <= 3369) //Falador West Bank Part1
    				|| (tile.getX() >= 2943 && tile.getY() >= 3370 && tile.getX() <= 2947 && tile.getY() <= 3373) //Falador West Bank Part2
    				|| (tile.getX() >= 3009 && tile.getY() >= 3353 && tile.getX() <= 3018 && tile.getY() <= 3358) //Falador East Bank
    				|| (tile.getX() >= 3088 && tile.getY() >= 3240 && tile.getX() <= 3097 && tile.getY() <= 3246) //Draynor Village Bank
    				|| (tile.getX() >= 3268 && tile.getY() >= 3161 && tile.getX() <= 3272 && tile.getY() <= 3171) //AlKharid Bank
    				|| (tile.getX() >= 3300 && tile.getY() >= 3118 && tile.getX() <= 3310 && tile.getY() <= 3132) //Shanty Pass Bank
    				|| (tile.getX() >= 3508 && tile.getY() >= 3474 && tile.getX() <= 3516 && tile.getY() <= 3483) //Canafis Bank
    				|| (tile.getX() >= 3686 && tile.getY() >= 3461 && tile.getX() <= 3699 && tile.getY() <= 3471) //Port Phanta Bank
    				|| (tile.getX() >= 2609 && tile.getY() >= 3088 && tile.getX() <= 2616 && tile.getY() <= 3097) //Yannile Bank
    				|| (tile.getX() >= 2437 && tile.getY() >= 3082 && tile.getX() <= 2447 && tile.getY() <= 3098) //Castle Wars Bank
    				|| (tile.getX() >= 1853 && tile.getY() >= 3145 && tile.getX() <= 1926 && tile.getY() <= 3191) //Soul Wars
    				|| (tile.getX() >= 2872 && tile.getY() >= 3414 && tile.getX() <= 2878 && tile.getY() <= 3420) //Taverly bank
    				|| (tile.getX() >= 2806 && tile.getY() >= 3438 && tile.getX() <= 2812 && tile.getY() <= 3445) //Catherbay bank
    				|| (tile.getX() >= 2721 && tile.getY() >= 3490 && tile.getX() <= 2730 && tile.getY() <= 3497) //Seers Village bank Part1
    				|| (tile.getX() >= 2724 && tile.getY() >= 3487 && tile.getX() <= 2727 && tile.getY() <= 3489) //Seers Village bank Part2
    				|| (tile.getX() >= 2612 && tile.getY() >= 3330 && tile.getX() <= 2621 && tile.getY() <= 3335) //Ardougne West Bank
    				|| (tile.getX() >= 2649 && tile.getY() >= 3280 && tile.getX() <= 2658 && tile.getY() <= 3287) //Ardougne East Bank
    				|| (tile.getX() >= 2334 && tile.getY() >= 3805 && tile.getX() <= 2339 && tile.getY() <= 3808) //Neitiznot Bank
    				|| (tile.getX() >= 2414 && tile.getY() >= 3801 && tile.getX() <= 2418 && tile.getY() <= 3803) //Jatizso Bank
    				|| (tile.getX() == 2619 && tile.getY() >= 3893 && tile.getY() <= 3896) //Etceteria Bank
    				|| (tile.getX() >= 2097 && tile.getY() >= 3917 && tile.getX() <= 2104 && tile.getY() <= 3921) //Lunar Isle Bank
    				|| (tile.getX() >= 2528 && tile.getY() >= 4710 && tile.getX() <= 2549 && tile.getY() <= 4723) //Mage Bank
    				|| (tile.getRegionId() == 10658) || (tile.getRegionId() == 11927) || (tile.getRegionId() == 13625 || tile.getRegionId() == 13626) || (tile.getX() >= 2952 && tile.getY() >= 3220 && tile.getX() <= 2959 && tile.getY() <= 3227) //ridmigton poh
    		;
    	}
    Quote Originally Posted by Hellman2741 View Post
    To be honest, this is kind of redundant, and it isn't very efficient to be looping through all banks/bankers every tick to heal players
    ^
    I agree there. It would be a waste of time. But I guess it shouldn't matter much if you set a task in a different thread(such as using that timer named fastexecutor. i dont suggest slow one for this cuz this task is done every 1.2 seconds or so in rs if i remember).
    Reply With Quote  
     

  9. #9  
    Registered Member
    Velocity's Avatar
    Join Date
    Jan 2009
    Age
    25
    Posts
    2,029
    Thanks given
    1,013
    Thanks received
    2,373
    Rep Power
    4112
    Quote Originally Posted by dragonkk View Post
    World.isSafeZone(WorldTile tile) should do the trick even if cheap(this includes mostly banks and safe zones). Also make sure players don't get healed during combat or they could lure mobs and be god mode.

    Only reason I don't suggest using bankers is because you also get healed in some areas even if no banker there.


    This pretty much includes most of the areas which used to be safe back during pvp world days.

    Code:
    	public static boolean isSafeZone(WorldTile tile) {
    		return (tile.getY() >= 3470 && tile.getY() <= 3513 && tile.getX() >= 3143 && tile.getX() <= 3186)//Grand Exchange
    				|| (tile.getX() >= 2801 && tile.getY() >= 3325 && tile.getX() <= 2875 && tile.getY() <= 3395) //Entrana
    				|| (tile.getX() >= 3044 && tile.getY() >= 3482 && tile.getX() <= 3059 && tile.getY() <= 3498 && tile.getPlane() == 1) //Top level of Monastery
    				|| (tile.getX() >= 3201 && tile.getY() >= 3201 && tile.getX() <= 3229 && tile.getY() <= 3236) //Lumbridge Castle
    				|| (tile.getX() >= 2952 && tile.getY() >= 3324 && tile.getX() <= 3000 && tile.getY() <= 3354) //Falador Castle
    				|| (tile.getX() >= 3091 && tile.getY() >= 3488 && tile.getX() <= 3098 && tile.getY() <= 3499) //Edgeville Bank
    				|| (tile.getX() >= 3179 && tile.getY() >= 3432 && tile.getX() <= 3194 && tile.getY() <= 3446) //Varrock West Bank
    				|| (tile.getX() >= 3250 && tile.getY() >= 3416 && tile.getX() <= 3257 && tile.getY() <= 3423) //Varrock East Bank
    				|| (tile.getX() >= 2943 && tile.getY() >= 3368 && tile.getX() <= 2949 && tile.getY() <= 3369) //Falador West Bank Part1
    				|| (tile.getX() >= 2943 && tile.getY() >= 3370 && tile.getX() <= 2947 && tile.getY() <= 3373) //Falador West Bank Part2
    				|| (tile.getX() >= 3009 && tile.getY() >= 3353 && tile.getX() <= 3018 && tile.getY() <= 3358) //Falador East Bank
    				|| (tile.getX() >= 3088 && tile.getY() >= 3240 && tile.getX() <= 3097 && tile.getY() <= 3246) //Draynor Village Bank
    				|| (tile.getX() >= 3268 && tile.getY() >= 3161 && tile.getX() <= 3272 && tile.getY() <= 3171) //AlKharid Bank
    				|| (tile.getX() >= 3300 && tile.getY() >= 3118 && tile.getX() <= 3310 && tile.getY() <= 3132) //Shanty Pass Bank
    				|| (tile.getX() >= 3508 && tile.getY() >= 3474 && tile.getX() <= 3516 && tile.getY() <= 3483) //Canafis Bank
    				|| (tile.getX() >= 3686 && tile.getY() >= 3461 && tile.getX() <= 3699 && tile.getY() <= 3471) //Port Phanta Bank
    				|| (tile.getX() >= 2609 && tile.getY() >= 3088 && tile.getX() <= 2616 && tile.getY() <= 3097) //Yannile Bank
    				|| (tile.getX() >= 2437 && tile.getY() >= 3082 && tile.getX() <= 2447 && tile.getY() <= 3098) //Castle Wars Bank
    				|| (tile.getX() >= 1853 && tile.getY() >= 3145 && tile.getX() <= 1926 && tile.getY() <= 3191) //Soul Wars
    				|| (tile.getX() >= 2872 && tile.getY() >= 3414 && tile.getX() <= 2878 && tile.getY() <= 3420) //Taverly bank
    				|| (tile.getX() >= 2806 && tile.getY() >= 3438 && tile.getX() <= 2812 && tile.getY() <= 3445) //Catherbay bank
    				|| (tile.getX() >= 2721 && tile.getY() >= 3490 && tile.getX() <= 2730 && tile.getY() <= 3497) //Seers Village bank Part1
    				|| (tile.getX() >= 2724 && tile.getY() >= 3487 && tile.getX() <= 2727 && tile.getY() <= 3489) //Seers Village bank Part2
    				|| (tile.getX() >= 2612 && tile.getY() >= 3330 && tile.getX() <= 2621 && tile.getY() <= 3335) //Ardougne West Bank
    				|| (tile.getX() >= 2649 && tile.getY() >= 3280 && tile.getX() <= 2658 && tile.getY() <= 3287) //Ardougne East Bank
    				|| (tile.getX() >= 2334 && tile.getY() >= 3805 && tile.getX() <= 2339 && tile.getY() <= 3808) //Neitiznot Bank
    				|| (tile.getX() >= 2414 && tile.getY() >= 3801 && tile.getX() <= 2418 && tile.getY() <= 3803) //Jatizso Bank
    				|| (tile.getX() == 2619 && tile.getY() >= 3893 && tile.getY() <= 3896) //Etceteria Bank
    				|| (tile.getX() >= 2097 && tile.getY() >= 3917 && tile.getX() <= 2104 && tile.getY() <= 3921) //Lunar Isle Bank
    				|| (tile.getX() >= 2528 && tile.getY() >= 4710 && tile.getX() <= 2549 && tile.getY() <= 4723) //Mage Bank
    				|| (tile.getRegionId() == 10658) || (tile.getRegionId() == 11927) || (tile.getRegionId() == 13625 || tile.getRegionId() == 13626) || (tile.getX() >= 2952 && tile.getY() >= 3220 && tile.getX() <= 2959 && tile.getY() <= 3227) //ridmigton poh
    		;
    	}


    ^
    I agree there. It would be a waste of time. But I guess it shouldn't matter much if you set a task in a different thread(such as using that timer named fastexecutor. i dont suggest slow one for this cuz this task is done every 1.2 seconds or so in rs if i remember).
    welcome back to rune-server.ee
    xxxxxxx
    Reply With Quote  
     

  10. Thankful users:


  11. #10  
    Registered Member

    Join Date
    Nov 2015
    Age
    21
    Posts
    1,999
    Thanks given
    333
    Thanks received
    1,049
    Rep Power
    5000
    Quote Originally Posted by dragonkk View Post
    World.isSafeZone(WorldTile tile) should do the trick even if cheap(this includes mostly banks and safe zones). Also make sure players don't get healed during combat or they could lure mobs and be god mode.

    Only reason I don't suggest using bankers is because you also get healed in some areas even if no banker there.


    This pretty much includes most of the areas which used to be safe back during pvp world days.

    Code:
    	public static boolean isSafeZone(WorldTile tile) {
    		return (tile.getY() >= 3470 && tile.getY() <= 3513 && tile.getX() >= 3143 && tile.getX() <= 3186)//Grand Exchange
    				|| (tile.getX() >= 2801 && tile.getY() >= 3325 && tile.getX() <= 2875 && tile.getY() <= 3395) //Entrana
    				|| (tile.getX() >= 3044 && tile.getY() >= 3482 && tile.getX() <= 3059 && tile.getY() <= 3498 && tile.getPlane() == 1) //Top level of Monastery
    				|| (tile.getX() >= 3201 && tile.getY() >= 3201 && tile.getX() <= 3229 && tile.getY() <= 3236) //Lumbridge Castle
    				|| (tile.getX() >= 2952 && tile.getY() >= 3324 && tile.getX() <= 3000 && tile.getY() <= 3354) //Falador Castle
    				|| (tile.getX() >= 3091 && tile.getY() >= 3488 && tile.getX() <= 3098 && tile.getY() <= 3499) //Edgeville Bank
    				|| (tile.getX() >= 3179 && tile.getY() >= 3432 && tile.getX() <= 3194 && tile.getY() <= 3446) //Varrock West Bank
    				|| (tile.getX() >= 3250 && tile.getY() >= 3416 && tile.getX() <= 3257 && tile.getY() <= 3423) //Varrock East Bank
    				|| (tile.getX() >= 2943 && tile.getY() >= 3368 && tile.getX() <= 2949 && tile.getY() <= 3369) //Falador West Bank Part1
    				|| (tile.getX() >= 2943 && tile.getY() >= 3370 && tile.getX() <= 2947 && tile.getY() <= 3373) //Falador West Bank Part2
    				|| (tile.getX() >= 3009 && tile.getY() >= 3353 && tile.getX() <= 3018 && tile.getY() <= 3358) //Falador East Bank
    				|| (tile.getX() >= 3088 && tile.getY() >= 3240 && tile.getX() <= 3097 && tile.getY() <= 3246) //Draynor Village Bank
    				|| (tile.getX() >= 3268 && tile.getY() >= 3161 && tile.getX() <= 3272 && tile.getY() <= 3171) //AlKharid Bank
    				|| (tile.getX() >= 3300 && tile.getY() >= 3118 && tile.getX() <= 3310 && tile.getY() <= 3132) //Shanty Pass Bank
    				|| (tile.getX() >= 3508 && tile.getY() >= 3474 && tile.getX() <= 3516 && tile.getY() <= 3483) //Canafis Bank
    				|| (tile.getX() >= 3686 && tile.getY() >= 3461 && tile.getX() <= 3699 && tile.getY() <= 3471) //Port Phanta Bank
    				|| (tile.getX() >= 2609 && tile.getY() >= 3088 && tile.getX() <= 2616 && tile.getY() <= 3097) //Yannile Bank
    				|| (tile.getX() >= 2437 && tile.getY() >= 3082 && tile.getX() <= 2447 && tile.getY() <= 3098) //Castle Wars Bank
    				|| (tile.getX() >= 1853 && tile.getY() >= 3145 && tile.getX() <= 1926 && tile.getY() <= 3191) //Soul Wars
    				|| (tile.getX() >= 2872 && tile.getY() >= 3414 && tile.getX() <= 2878 && tile.getY() <= 3420) //Taverly bank
    				|| (tile.getX() >= 2806 && tile.getY() >= 3438 && tile.getX() <= 2812 && tile.getY() <= 3445) //Catherbay bank
    				|| (tile.getX() >= 2721 && tile.getY() >= 3490 && tile.getX() <= 2730 && tile.getY() <= 3497) //Seers Village bank Part1
    				|| (tile.getX() >= 2724 && tile.getY() >= 3487 && tile.getX() <= 2727 && tile.getY() <= 3489) //Seers Village bank Part2
    				|| (tile.getX() >= 2612 && tile.getY() >= 3330 && tile.getX() <= 2621 && tile.getY() <= 3335) //Ardougne West Bank
    				|| (tile.getX() >= 2649 && tile.getY() >= 3280 && tile.getX() <= 2658 && tile.getY() <= 3287) //Ardougne East Bank
    				|| (tile.getX() >= 2334 && tile.getY() >= 3805 && tile.getX() <= 2339 && tile.getY() <= 3808) //Neitiznot Bank
    				|| (tile.getX() >= 2414 && tile.getY() >= 3801 && tile.getX() <= 2418 && tile.getY() <= 3803) //Jatizso Bank
    				|| (tile.getX() == 2619 && tile.getY() >= 3893 && tile.getY() <= 3896) //Etceteria Bank
    				|| (tile.getX() >= 2097 && tile.getY() >= 3917 && tile.getX() <= 2104 && tile.getY() <= 3921) //Lunar Isle Bank
    				|| (tile.getX() >= 2528 && tile.getY() >= 4710 && tile.getX() <= 2549 && tile.getY() <= 4723) //Mage Bank
    				|| (tile.getRegionId() == 10658) || (tile.getRegionId() == 11927) || (tile.getRegionId() == 13625 || tile.getRegionId() == 13626) || (tile.getX() >= 2952 && tile.getY() >= 3220 && tile.getX() <= 2959 && tile.getY() <= 3227) //ridmigton poh
    		;
    	}


    ^
    I agree there. It would be a waste of time. But I guess it shouldn't matter much if you set a task in a different thread(such as using that timer named fastexecutor. i dont suggest slow one for this cuz this task is done every 1.2 seconds or so in rs if i remember).
    glad to see you back m8
    Reply With Quote  
     

Page 1 of 2 12 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. Replies: 4
    Last Post: 05-22-2014, 03:51 PM
  2. No idea please help (FTP) Where i must upload em!!??
    By Melrpm in forum Application Development
    Replies: 11
    Last Post: 04-04-2012, 08:32 PM
  3. Replies: 8
    Last Post: 09-23-2007, 04:50 PM
  4. Please Help Me!
    By Lorvex in forum Tutorials
    Replies: 3
    Last Post: 09-08-2007, 05:20 PM
  5. webclient issues[PLEASE HELP ME]
    By Spoonkitty in forum RS2 Client
    Replies: 5
    Last Post: 08-15-2007, 11:29 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
  •