You are viewing our Forum Archives. To view or take place in current topics click here.

Was this topic helpful?

Yes, Thank you for the tutorials!
50.00% (1 vote)
Not all that much.
50.00% (1 vote)

Total Votes: 2

Coding Tutorials for new coders || RSPS PI ONLY ||
Posted:

Coding Tutorials for new coders || RSPS PI ONLY ||Posted:

-3Dz-
  • Powerhouse
Status: Offline
Joined: Feb 24, 201212Year Member
Posts: 414
Reputation Power: 16
Status: Offline
Joined: Feb 24, 201212Year Member
Posts: 414
Reputation Power: 16
Hey, TTG Members. I have been seeing more and more RSPS now on TTG and some people have been asking how to do things like easy coding also I know there is a topic about tutorial on how to make a rsps but this is PI Coding for PI sources and servers So, I'm going to show you some easy coding for PI's only and how to do some stuff and hints. I do know there is sites like rune-server and so on for this but TTG has no tutorials on coding PI servers so I think this would be good for TTG to help some of the members. Arlight lets start!


Remember to make a backup of the files before adding these codes or editing them in,
You have been warned!


If you get any errors post them & I'll try to help you fix them!


I'll add more tutorials soon.


Coords

2867 9955 - Ice Queen Lair
3429 3538 - Slayer Tower
2710 9466 - Brimhaven Dungeon
2856 3812 - Ice Path
2480 3437 - Gnome Agility Training
3281 2765 - Pyramid Plunder room
3345 3251 - Duel Arena
2717 9808 - King Black Dragon Cave
3044 4973 - Rouges Den
Big water fall ::tele 2534,3511
Very back of wild ::tele 3100,3957
Varrock east bank ::tele 3250,3423
Varrock ::tele 3210,3424
Falador ::tele 2964,3378
Lumbridge ::tele 3222,3218
Camelot ::tele 2757,3477
East Ardougne ::tele 2662,3305
West Ardougne ::tele 2529,3307
King Lathas Training Grounds ::tele 2516,3369
Tree Gnome Stronghold ::tele 2461,3443
Al Kharid ::tele 3293,3174
Shantays Pass ::tele 3304,3116
Kalphite Lair ::tele 3226,3107
Pyramid ::tele 3233,2902
Pollnivneach ::tele 3359,2910
Menaphos/Sophanem ::tele 3274,2784
Yanille ::tele 2606,3093
Gul'Tanoth ::tele 2516,3044
Tutorial Island ::tele 3094,3107
Barbarian Village ::tele 3082,3420
Entrana ::tele 2834,3335
Heroes Guild ::tele 2902,3510
Rangers Guild ::tele 2658,3439
Coal Trucks ::tele 2582,3481
Goblin Village ::tele 2956,3506
Druids Circle ::tele 2926,3482
Burthorpe ::tele 2926,3559
White wolf mountain ::tele 2848,3498
Catherby ::tele 2813,3447
Seers village ::tele 2708,3492
Fishing guild ::tele 2603,3414
Barbarian Agility Course ::tele 2541,3546
Prifddinas ::tele 2242,3278
Elf camp (Tirannwn) ::tele 2197,3252
Isafdar (Tirannwn) ::tele 2241,3238
Duel arena ::tele 3360,3213
Desert mining camp ::tele 3286,3023
Bedabin camp ::tele 3171,3026
Bandit camp ::tele 3176,2987
Sophanem ::tele 3305,2755
Ruins of Uzer ::tele 3490,3090
Mort'ton ::tele 3489,3288
Canifis ::tele 3506,3496
Port Phasmatys ::tele 3687,3502
Fenkenstrain's castle ::tele 3550,3548
Dig site ::tele 3354,3402
Exam centre ::tele 3354,3344
Edgeville ::tele 3093,3493
Crafting guild ::tele 2933,3285
Port Sarim ::tele 3023,3208
Rimmington ::tele 2957,3214
Draynor village ::tele 3093,3244
Fight arena ::tele 2585,3150
Tree gnome village ::tele 2525,3167
Port Khazard ::tele 2665,3161
Monastery ::tele 3051,3490
Karamja ::tele 2948,3147
Crandor ::tele 2851,3238
King Black Dragon Lair ::tele 2717,9816
KQ Lair ::tele 3487,9493
Underground pass level 2 ::tele 2337,9798
Weird water place ::tele 2676,3008
Members Karajama ::tele 2815,3182
Grave island ::tele 3504,3575
HAM camp ::tele 3165,9629
Pyramid under Sophanem ::tele 3277,9171
Juna the snake ::tele 3251,9517
Smoky tunnels/dark room (This place needs more tests) 3206,9379
Underground pass level 1 ::tele 2495,9715
Mage Arena ::tele 3107,3937
Ape Atoll ::tele 2755,2784
Jungle demon area bottom level ::tele 2714,9183
Jungle demon area top level (use Burst of Strength) ::tele 2703,9178
Wilderness Agility Course ::tele 3003,3934
Keldagram ::tele 2937,9999
Agility arena on Karamja ::tele 2761,9557
Metal dragon dungeon (back) ::tele 2713,9459
Metal dragon dungeon (front) ::tele 2713,9564
Inside the desert treasure pyramid ::tele 3233,9315
Tree gnome hanger ::tele 2390,9886
Fishing platform ::tele 2782,3273
Boat crash island place ::tele 2795,3321
Legends quest jungle dungeon ::tele 2772,9341
TzHaar ::tele 2480,5175
Essence mine ::tele 2911,4832
Morings end part 1 mine ::tele 2044,4649
Dwarf cut scene meeting area ::tele 2035,4529
New KBD lair ::tele 2273,4695
Elven forest cut scene area ::tele 2309,4597
Gold mine rock ::tele 2358,4959
White knight tasks area ::tele 2443,4956
Rouge maze (Press Burst of Strength) ::tele 3050,5071
The shadow guys dungeon ::tele 2738,5081
Barrows top ::tele 3564,3288
Barrows tunnel ::tele 3568,9695
Barrows chest ::tele 3551,9694
CW bank= 2441,3090
CW center= 2400,3103
Blue dragons= 2910,9801
Black demons= 2860 9775
Hell Hounds= 2867,9844
Black dragons= 2829,9826
Chaos rune crafting alter ::tele 2269,4843
Legends dungeon prt2 ::tele 2375,4705
Mage arena dungeon ::tele 2519,4719
Evil Bobs island "scaperune" ::tele 2525,4776
Distant kingdom (alive) 2576,4655
Distant kingdom (dead) 2803,4723
Forester random event ::tele 2602,4775
Alt area ::tele 2527,4547
Fremmy maze ::tele 2652,9999
Death rune altar ::tele 2207,4836
Cosmic alter ::tele 2162,4833
Middle of under ground pass ::tele 2168 4726
Quiz random event ::tele 1952,4768
Trawler boat ::tele 2013,4820
Sunk trawler mini game boat ::tele 1951,4825
Trawler boat empty of water ::tele 1886,4830
Mime stage ::tele 2008,4762
"Draynor" ::tele 2130,4913
Game room ::tele 2196,4961
Mind alter ::tele 2796,4818
Air Alter ::tele 2845,4832
Water Alter ::tele 2713,4836
Earth Alter ::tele 2660,4839
Fire Alter ::tele 2584,4836
Body Alter ::tele 2527,4833
Law Alter ::tele 2464,4834
Nature Alter ::tele 2398,4841
Gas hole ::tele 2464,4782
Edge of maze ::tele 2885,4550
Center of maze ::tele 2912,4576
Falador mine ::tele 3038,9800
::tele 3157 4822 = drill deamon camp

::tele 2477 4768 = frog cave

::tele 2596 4780 = freaky forester

::tele 2095 4428 = prison pete

::tele 1952 4764 = quiz show

::tele 2338 4747 = Lost and found

::tele 1960 4824 = Twarler Mini-Game

::tele 2015 4826 = twarler mini-game inside

::tele 1971 5001 = WIERD CHRUCH! NOT ON RUNESCAPE!

::tele 1928 5002 = Grave digger

::tele 2584 4838 = fire alter

::tele 2966 9633 = somekind of rat-hole never seen this

::tele 2929 9649 = dragon slayer mace

::tele 2907 9705 = quest place (dont remember (or newer seen) what quest)

::tele 2981 9914 = recipes goblin cook place

::tele 2916 9912 = heroes guild cave

::tele 2932 9848 = chaos druids

::tele 2898 9766 = baby bluedragons

::tele 3048 9582 = ice-warriors & giants

::tele 2977 9515 = recipes crabs

::tele 2973 9505 = recipe water "mini-quest"

::tele 2783 9574 = agility arena

::tele 2835 9562 = karamja lessers

::tele 1891 4947 = quest place (dont remember (or newer seen) what quest)

::tele 2007 4431 = x-mas workshop event wooot!

::tele 2400 4850 = nature altar!

::tele 3421 9622 = quest place (dont remember (or newer seen) what quest)

::tele 1865 5330 = recipe the lum kitchen when started recipe near the secret sky must check if it is possible to see in rs.

::tele 1860 5345 = same as above but no barrier & no chairs expet one why?

::tele 2393 4713 = i don't know prob: quest place (dont remember (or newer seen) what quest)

::tele 2385 4685 = have a relation to the place above what is that?

::tele 2525 4776 = evil bob's island

::tele 2633 4700 = quest place (dont remember (or newer seen) what quest)

::tele 2650 4565 = monkey sadness fight the jungle demon?

::tele 2650 4508 = monkey sadness the gnome glider puzzle!

::tele 3300 9825 = A Soul's Bane quest

::tele 3345 9715 = mage training arena (telegrab) ftw

::tele 3350 9680 = mage training arena (telegrab) ftw another one

::tele 3345 9712 = mage training arena (telegrab) ftw another one NOTE: if you see the same arenas try changin height level!

::tele 2152 5095 = Secret island

::tele 2721 4828 = water alter

::tele 2784 4840 = mind alter

::tele 2842 4835 = air alter

::tele 2898 4819 = rune essent mining

::tele 3029 4834 = abyss

::tele 2528 4833 = wierd alter

::tele 2471 4838 = law alter

::tele 1823 4835 = two ships

::tele 3105 3930 = mage arena

::tele 1894 5333 = secret sky

::tele 1865 5341 = recipie for desaster feast

::tele 3424 9891 = under passage way to canfis

::tele 3681 9889 = ecto plasm floor

::tele 2470 9899 = under gnomes grand tree

::tele 2319 9804 = i'bans trap drop

::tele 2856 3809 = slippery ice path

::tele 3551 9693 = barrows chest

::tele 3177 9753 = under draynore mannor

::tele 3040 9741 = faladore mining guild

::tele 3079 9505 = toturial mining

::tele 3110 9512 = toturial combat train

::tele 3232 2896 = top of piramid for desert tresure

::tele 3291 2764 = desert city

::tele 3298 9179 = under desert city

::tele 2861 3165 = volcano

::tele 2863 9570 = under volcano

::tele 2835 3268 = candor

::tele 2766 3277 = fishing docks

::tele 2446 10147 = daganoth cave ( go to "::tele 2446 9999" then keep walking the right direction then ul get there )

::tele 2438 5172 = volcano lava

::tele 2395 5154 = fight pits

::tele 3234 9896 = wierd place

::tele 3132 9909 = under edgevill

::tele 3233 9313 = under piramid at acent alter

::tele 3363 9639 = mage train up ( shapes )

::tele 3363 9637 = mage train up ( bones )

::tele 3365 9637 = mage train up ( alching )

::tele 3363 2984 = a desert city

::tele 2396 5093 = fight caves

::tele 3559 9895 = football traning corse

::tele 3541 9891 = jumping corse

::tele 3528 9871 = zip line

::tele 3539 9872 = jumping steps

::tele 3555 9947 = cave

::tele 2972 9507 = Under water

::tele 2545 4715 = mage arena room

::tele 2505 4707 = mage arena statues

::tele 3551 9712 = barrows coffins

::tele 2716 9816 = black king dragon

::tele 3487 9493 = kaphite queen place

::tele 2744 3444 = camalot flax

::tele 2273 4695 = king black drags

::tele 2516 4646 = daganoth quest place mother

::tele 2121 4918 = Draynor private from map

::tele 2142 4834 = cosmic alter

::tele 2134 4717 = slave cages ( look up to see them,,cannot be walked on )

::tele 2091 3210 = wierd grass land??


/*Guilds*/
rangeguild = 2657 3439
rangingguild = 2657 3439

fishguild = 2611 3393
fishingguild = 2611 3393

mineguild = 3016 3339
miningguild = 3016 3339

craftguild = 2933 3289
craftingguild = 2933 3289

heroguild = 2902 3510
herosguild = 2902 3510
heroesguild = 2902 3510

/*End Guilds*/

crystalchest = 2914 3450

/*Altars*/
deathaltar = 2207 4836
cosmicaltar = 2162 4833
chaosaltar = 2269 4843
mindaltar = 2796 4818
airaltar = 2845 4832
wateraltar = 2713 4836
earthaltar = 2660 4839
firealtar = 2584 4836
bodyaltar = 2527 4833
lawaltar = 2464 4834
naturealtar = 2398 4841

/*End Altars*/

falador = 2965 3380
goblinvillage = 2956 3506
druidscircle = 2926 3482
burthrope = 2926 3561

whitewolf = 2848 3498
catherby = 2815 3447
camelotcastle = 2758 3495
seersvillage = 2708 3492


barbagil = 2541 3546
grandtree1 = 2480 3488
grandtree2 = 2466 3490
treegnome = 2441 3429
westardy = 2535 3305
eastardy = 2659 3308
prifddinas = 2242 3278
elfcamp = 2197 3252
isafdar = 2241 3238
duelarena = 3360 3213
alkharid = 3288 3189
desertmine = 3286 3023
bedabincamp = 3171 3026
banditcamp = 3176 2987
pollnivneach = 3365 2970
pyramid = 3233 2901
sophanem = 3305 2755
uzer = 3490 3090
mortton = 3489 3288
canifis = 3506 3496
phasmatys = 3687 3502
fenkencastle = 3550 3548
digsite = 3354 3402
examcentre = 3354 3344
varrock = 3214 3424
barbvillage = 3081 3424
edgeville = 3093 3493

sarim = 3023 3208
rimmington = 2957 3214
draynor = 3093 3244
lumbridge = 3223 3218
fightarena = 2585 3150
gnomevillage1 = 2521 3177
gnomevillage2 = 2525 3167
khazard = 2665 3161
yanille = 2569 3098
monestary = 3051 3490
karamja = 2814 3182
crandor = 2851 3238
tutisland = 3123 3100
tzhaar = 2480 5175
mineess = 2911 4832
bobsiland = 2526 4777

membersdungeon = 2884 9798
dramentree = 2861 9736
karamjadungeon = 2843 9636
steeldragons = 2719 9433
bluedragons = 2591 9439
theogre = 2584 9737
shadowwarrior = 2705 9758
subwhitewolf = 2822 9882
gloryfountain = 2918 9895
spampdungeon = 3168 9572
barriwscenter = 3551 9693
canifis = 3477 9845
werewolfagil = 3549 9865
eledungeon = 2715 9889
blurite = 3007 9550
miniagil = 2759 9557
runerocks = 3061 3886
kalphites = 3485 9509
smokedungeon = 3207 9377
pyramid4 = 3233 9313
crashisland = 2893 2724
apeatoll = 2801 2704
marimpray = 2807 9201
marimcreate = 2764 9164
magedungeon = 2805 9142
kharazi = 2822 2911
jungledemon = 2657 4568
hangar = 2584 4516
gnomedungeon = 2596 4435
purplecrystal = 2792 4427
submage = 2538 4717
godpray = 2507 4718
lighttower = 2519 4642
bigdwarfs = 2776 10162
bigdwarfs2 = 2838 10126
bigdwarfs3 = 2923 10191
waterfall = 2534 3511
endwild = 3100 3957
eastbank = 3250 3423
varrock = 3210 3424
falador2 = 2964 3378
lumbridge = 3222 3218
camelot = 2757 3477
eardy2 = 2662 3305
wardy2 = 2529 3307
lathas = 2516 3369
gnomestrong = 2461 3443
kharid = 3293 3174
shantay = 3304 3116
kalphlair = 3226 3107
pyramid2 = 3233 2902
pollnivneach = 3359 2910
menaphos = 3274 2784
yanille = 2606 3093
gultanoth = 2516 3044
tutisland2 = 3094 3107
barbarins = 3082 3420
entrana = 2834 3335

coaltrucks = 2582 3481
gvillage = 2956 3506
stonehenge2 = 2926 3482
burth = 2926 3559
wwolf = 2848 3498
catherb = 2813 3447
seers = 2708 3492
barbyagil = 2541 3546
prifdinas = 2242 3278
elfcamp2 = 2197 3252
isafdar2 = 2241 3238
darena = 3360 3213
dminecamp = 3286 3023
bedcamp = 3171 3026
bandcamp = 3176 2987
soph = 3305 2755
uzerruins = 3490 3090
morton = 3489 3288
canif = 3506 3496
portp = 3687 3502
fenken = 3550 3548
dsite = 3354 3402
ecentre = 3354 3344
edgeville = 3093 3493

psarim = 3023 3208
rimm = 2957 3214
farena = 2585 3150
tgvill = 2525 3167
pkhazard = 2665 3161
monkies = 3051 3490
karamj = 2948 3147
crandor2 = 2851 3238
thekbd = 2717 9816
thebigkq = 3487 9493
thepass2 = 2337 9798
wiredwater = 2676 3008
karamja4memb = 2815 3182
meetjuna = 3251 9517
darkroom = 3206 9379
thepass1 = 2495 9715
magicarena = 3107 3937
aatoll = 2755 2784
jungledemonb = 2714 9183
jungledemont = 2703 9178
wagility = 3003 3934
keldagrim = 2937 9999
karamjaagil = 2761 9557
metaldragback = 2713 9459
metaldragfront = 2713 9564
desertpyramid = 3233 9315
thehangar = 2390 9886
fishplatform = 2782 3273
boatcrash = 2795 3321
legendsjungle = 2772 9341
tzhaar2 = 2480 5175
mineess2 = 2911 4832
morningsend = 2044 4649
dwarfs = 2035 4529
kbdlair = 2273 4695
elvenforest = 2309 4597
goldmine = 2358 4959
initiate = 2443 4956
shadowguys = 2738 5081
barrowstop = 3564 3288
barrowstunnel = 3568 9695
barrowschest = 3551 9694
cwbank = 2441 3090
castlewars = 2400 3103
bluedrags = 2910 9801
blackdemons = 2860 9775
hellhounds = 2867 9844
blackdrags = 2829 9826

legends2 = 2377 4705
magearena = 2519 4719
scaperune = 2525 4776
forester = 2602 4775
theisland = 2527 4547
fremmymaze = 2652 9999

quizgame = 1952 4768
trawler = 2013 4820
sunktrawler = 1951 4825
emptytrawler = 1886 4830
mimestage = 2008 4762
draynor = 2130 4913
gameroom = 2196 4961
gashole = 2464 4782
shilo = 2827 2995
karamja1 = 2973 2890
karamja2 = 2973 2910
greater = 3288 3886
wildpalace = 3288 3886
slayertower = 3428 3535
misc = 2512 3860

party = 2739 3472
rellaka = 2659 3661



How to make Shops and Add items to them with prices

Alright lets start off with Shops.
If you want to make a shop yourself you would have to do 6 things:
1. Find a NPC that does not have a Combat level or HP, Lets use Horvik His ID is "549"
2. Spawn the NPC where you would like him "You can do this in spawn-config.cfg"
3. Creating the shop.
4. Adding items to the shop.
5. Making the NPC work when you click him.
6. Setting up the prices for the items.

Okay, Go to spawn-config.cfg. You should see something like this.



spawn = 1   2855   9637   0   1   1   3   5   Man



Remember to use Tabs after the NPC ID.

Now I'm going to try and help you learn what this means,
spawn = 1 " This means what is going to spawn in the game and the "1" means what npc ID you will be using to spawn. 2855 and 9637 is the Coords for that npc to be spawned, So you need to find a place to put that npc. "0" means height level so if you want the npc in a second floor building you will put 1 not 0, this also works for height 2,3,so on. Now the "1" means if you want the npc to walk around and 0 means the npc does not walk, There is more like south,east,west,north too but some servers don't have it, If you do then this is the setup for that 2-North, 3-South, 4-East, 5-West. The next "1" stands for maxhit so if you want your npc hitting 50s or 5s then put in "5". Now the "3" is attack, If you want your npc hitting a lot then put it around 70-120 if you do not want that npc hitting a lot then pick it under 50. Now the "5" means defence, This is use for the npcs defence level as if you don't want the npc getting hit all the time put it around 50-70 if not make it around 10-30. Last thing is the name of the npc, You don't need to put a name there but it's good to have it so when you look for the npc it will be there. Alright we have a npc spawned now! Lets move on to the nexr part. Making the npc into a shop, To do this you need to open up shops.cfg and look for a id that is not in use, Like so



shop = 17   Mage_Shop   2   2


Okay I'm going to show you how to do this part.
Shop = 17, when doing this part you need to put shop lower case and tab and = and tab and the ID of the shop, Remember that you can't use to of the same ids for a shop so make sure to find a ID that is not in use. Now do tab, now we are going to name the shop, When naming the shop make sure to put a _ when you space it out like Mage_Shop Also you can add this @yel@ to make the name a colour in the shop, Just remember to use @ when doing this. so it would look like @yel@Mage_Shop ,Alright tab again now put in 2 then tab 2. There you go you made a shop but were not done yet, Now if you want to add items to the shop you need to use tab then the ID of the item then tab then how much you want of that item in the shop. So like this.


shop = 17   @yel@Mage_Shop   2   2   6889   1


Okay now your shop is ready but not fully done. Lets move on to the next part.
Now look for ActionHandler.java and Hold Ctrl+F and search for c.getShops().openShop now you will see something like this.



      case 549:
               c.getShops().openShop(17);
      break;


Do remember that the numbers wont be the same as yours. Okay, Now when you found this I'm going to show you how it's done. The case is needed to start this so don't forget it, then put in the NPC ID then make sure to use a ":" at the end and hit enter. Now put in
c.getShops().openShop(##); and change the ## to the Shop ID you are using from the shop File and hit enter. Now make sure to add this or you will get errors, Add break; then your done. You made a npc into a shop! Good job! But we are not done yet.

Now setting up the prices for the items. Open up prices and you should see something like this.



4151 1600


Now this part is pretty easy, The first numbers 4151 is the Item ID and the 1600 is the price of the item so 4151 is 1,600coins Also make sure to space them out or you will get some big errors. Okay that's it to making a shop and I hope this helped you out and understanding how things work, Also if you want to see more just look at my other guide's!




Making Ladders and stairs work

Okay so second tutorial, Now this is maybe a 2/10 if your new to this but don't worry I'll be here showing you how it's done!

The files we are going to be using is..
-ActionHandler.java

Okay lets start! Alright first open your ActionHandler.java and Hold Ctrl+F search switch(objectType) { ,Now below that your going to make a new case with the ID of the ladder or stair you want to use, Now before this you need to find the ID of the ladder or stair you want to use and make work. When you got that then lets move on with the tutorial. Now this can be a bit tricky sometimes so follow. I'm going to show you what it should look like.



      case ####: //Name
          if (obX == #### && obY == ####) {
            c.getPA().movePlayer(####, ####, #);
         }
         break;



Okay, Now the first set of #### is the ID of the object and when you click on the object aka Stairs or ladder you will get the ID this only works if your owner on the server! Okay all you need to do is add the ID there moving on. Now with the Name part you don't need this if you don't want it but I use them for easy searching just remember to put the too // then name or the server will read the name and make errors. Now the obX #### is the X coords of the object do remember this is not the teleport coords this is use for making the server read that you want to use this Object for teleporting. Now the obY #### Y coords for the object, Pick both of them in and now should look something like this..




      case 1738: //Stairs
          if (obX == 3255 && obY == 3421) {
            c.getPA().movePlayer(####, ####, #);
         }
         break;




Okay Now your about to be done with this, Now you need the coords for where the player will go, So if your adding the ladder to go up a level then get the coords of were your standing and do ::tele X Y H Something like this ::tele 6868 6868 1 ,Okay now that you have the coords for place you want them going you now need to put the X coords in the first #### then Y coords in the second #### and the H level in the last #. Alright you got it going up but now you need it going down, Just redo this over again and your done also I'm going to show you something that is useful,




      case 1738: //Stairs
          if (obX == 3255 && obY == 3421) {
            c.getPA().movePlayer(3255, 3420, 1);
         } else if (obX == 3237 && obY == 3447) {
            c.getPA().movePlayer(3239, 3447, 1);
         } else if (obX == 3258 && obY == 3487) {
            c.getPA().movePlayer(3258, 3487, 1);
         } else if (obX == 3144 && obY == 3447) {
            c.getPA().movePlayer(3143, 3448, 1);
         }
         break;





Now the } else if is use to add more of the same Object IDs in that case as your going to run into a lot of the same ladder or stair IDs so if you look at this you will see what I mean.





      case 1738: //Stairs
          if (obX == 3255 && obY == 3421) {
            c.getPA().movePlayer(3255, 3420, 1);
         } else if (obX == 3237 && obY == 3447) {
            c.getPA().movePlayer(3239, 3447, 1);
         } else if (obX == 3258 && obY == 3487) {
            c.getPA().movePlayer(3258, 3487, 1);
         } else if (obX == 3144 && obY == 3447) {
            c.getPA().movePlayer(3143, 3448, 1);
         [color=green]}[/color]
         break;




This is what you would do if you want to add more ladders that had the same ID also
Never forget that last "}" as seen up there.




Setting up Dialogues

Okay, 3rd Guide now. Now this may get a bit hard but I'm sure you can do it!
This Guide is maybe a 4/10, Now the Files you will be using is.


-DialogueHandler.java
-ActionHandler.java
-Clickingbuttoms.java




Okay lets start off in DialogueHandler.java, Now Hold Ctrl+F search switch(dialogue) { and Below that you should see some case's okay, I'm going to show you what your going to be adding..



   case ###:
         sendNpcChat2("Talking", "Talking", c.talkingNpc, "Npc Name");
         c.nextChat = ###;
      break;



Okay, Now there is many ways to do this but I like this way more, Okay now when adding numbers for the case part you need a number that is not in used so something like 200+ should be good. Now for sendNpcChat2, Now you can only have up to 4 chat lines for a npc but you can add more next chats for the npc so like a story line kinda but if you want 4 lines then you change the sendNpcChat2 to sendNpcChat4 and add ", " after your done writing whatever you want in the " " but make sure not to go over 4 lines! okay, nwo the c.talkingNpc, "Npc Name"); is who will be talking in the Pop box interface at the top.
Now the next line is the next case like case ###: above, So when you get it done You should have it like this.




          case 458:
         sendNpcChat2("Buy me a drink.", "", c.talkingNpc, "Dr Harlow");
         c.nextChat = 459;
      break;




Now see how I never added a line 2 well you can do this and never do sendNpcchat1 as you will get some errors as I have in my time from that, So it's better off just leaving the second line blank. Now making a line 2 is just like this.





   case 459:
         sendNpcChat2("I think you've had enough", "", c.talkingNpc, "Player");
         c.nextChat = 0;
      break;



Okay, See how I added the next case but with 459: now these are ID case's not NPC IDS.
There is many ways to do player talking back to the NPC but I like it like that. Now you will see that c.nextChat = 0; is "0" This means that the chat will end for that npc but if I wanted to add something like a Option menu like Runescape I would need to do this




   case 459:
         sendNpcChat2("I think you've had enough", "", c.talkingNpc, "Player");
         c.nextChat = 460;
      break;




Then start up a Option dialogue like so




               case 460:
         sendOption2("No buy me more", "Sorry, I need to leave now..");
         c.dialogueAction = 233;
      break;


Okay, Now from the last one you will see the nextChat is 460 and you see from this one it's case 460: Now you need to set this up a bit new now, we are done with sendNpcChat2
and now moving on the Option send. Now the c.dialogueAction is what we use to make the dialouge go to the clickingbuttoms file, Now you need to pick a number that is not in use with the c.dialogueAction = 233; So I picked 233 for it as I'm not using that number.

Okay now your going to need to setup a sendNpcChat for the No buy me more and Sorry, I need to leave now.. When your done with that open ActionHandler.java Hold Ctrl+F search public void firstClickNpc(int npcType) { and below, Okay, Now you need to add the first dialogue ID you made in the dialogue file, So for me it would be..



         case 645:
            c.getDH().sendDialogues(458, npcType);
         break;


Okay let me try to say how this is setup, The Case 645: is the Npc ID of the npc you want to talk and send the Options. The 458 is the Dialogue ID we use in the dialogue file. Remember you need to use the first dialogue ID you made to start the chat. NpcType is use to check the Npcs if I'm for sure, Some servers is i for that. Okay, Were done now with that now time to Compile and check for errors or not if you didn't get any errors move on to the next part. Okay go into the game and look for the npc you put the dialogues on and when you get to the option part click both on them and look in your Cmd and you should see something like Yourusername - actionbutton: ####, Now this part is where clickingbuttoms come into use, Go over to your clickingbuttoms.java Hold Ctrl+F search the numbers you seen in the Cmd also Cmd is your run.bat or server run file and now you found the case needed for the option part, Okay you should see something like this now..




case ####:
            if (c.dialogueAction == 2)
               c.getPA().startTeleport(2884, 3395, 0, "modern");
            if (c.dialogueAction == 3)
               c.getPA().startTeleport(3243, 3513, 0, "modern");
            if (c.dialogueAction == 4)
               c.getPA().startTeleport(2444, 5170, 0, "modern");
            if (c.dialogueAction == 20) {
               c.getPA().startTeleport(2897, 3618, 12, "modern");
            }
            if (c.dialogueAction == 88) {
               c.getDH().sendDialogues(487, 946);
            }
            if(c.dialogueAction == 101) {
               c.getDH().sendDialogues(21, 946);
            }
            if (c.dialogueAction == 201) {
               c.getDH().sendDialogues(464, 946);
            }
            if (c.dialogueAction == 202) {
               c.getDH().sendDialogues(477, 946);
            }
            if(c.dialogueAction == 100) {
               c.getGamble().gambleBlackJack(c);
            }   
         break;



Okay now your going to add this into the case menu,



                                }
            if (c.dialogueAction == ###) {
               c.getDH().sendDialogues(###, ###);
                                }



Okay now were you see the first ### Is the DialogueAction you use for the sendOption dialogue so my was, c.dialogueAction = 233; So I would add a 233 there, Now the second ###
Is the Next Dialogues chat you want the option to go to so my would be 461 and the last ### is the Npc ID. Okay, Now you need to do the same thing for the other actionbutton: ####, Then your done, You made a Npc talking with Options Also Some people do this in other ways also but I do it like this.

Also before I end this Guide I would like to show you some other things you can do with the Options.




                                }
            if (c.dialogueAction == ###) {
               c.getPA().movePlayer(####, ####, #);
                                }


With the c.getPA().movePlayer you can Teleport players with the option with the npcs
So just replace the first #### with the X coords and the other one with the Y coords.


How to jar a client


Alright Going to show you how to Make a .jar file!
First off your going to need to download Jar maker

[ Register or Signin to view external links. ]

To start things off make sure to change the IPs in your client folder to the no-ip or whatever you use.

Okay, run the file.
Now time to start the tutorial.
This is maybe a 2/10
Alright first go to Output File and set it to your Desktop, Alright good now lets move on
Click on Input Directory and make sure your client in on your Desktop, Find your Client and you will see 2 Folders alright some servers use Java folder and some use Class folder,
for my server I use Class folder so click on the class folder and now you should see a folder called sign, click it once and click ok. Now You should see something called application.jar Delete it and put your server name then .jar now go to Manifest Template and In Main-Class: Put client <-- Must be lower case! when your done that click Set Manifest. Now Click Create JAR! then your done!




How to setup drops and drop Rates


Okay, This is maybe 1/10 to do.
Files needed
-NPCDrops.tsm

Okay, To start this off here is what you will be adding..




#NPCNAME
####:##   ###:#
###:#   ###:#



Okay, The first part with #NPCNAME is the name of the npc you want to add drops.
The second ####:## Is the NPC ID then The Rate drop. The next one is ###:# The first one is Item ID then how much of that item drops same with the last 2 but the last too is the rare items that will be hard to get. So when your done that it should look like this,



#Fareed
1977:70   526:1
985:1   987:1


See how I got the name then the NPCs ID and the Drop Rate "Drop rate works as Up is hard and down is Not. Then the item that will drop all the time and how much of it, Then the Rare item that will drop sometimes and how much of it. That's about it for that.



How to setup Doors with Levels needed or Items and Making them open

Okay this is about 3/10
Files needed
-doors.cfg
-ActionHandler.java


Now there is 2 ways you can do this, If you want the door to use a key like the brass key in RS then that will take sometime if you just want the doors to open then that wont take much time, But I'm going to start off with opening doors. Go into your doors.cfg
You should see something like this..



door = 3206   3472   0   1   0


Okay 3206 3472 is the coords you need, You can get the coords by clicking the door, okaying now the 0 means Height so the Height level where you want the door to open.
The 1 means the Face, Even myself I'm not 100% sure about that one so it's better off with "1". 0 means the door will be closed and you can change it to a 1 then it will be open.
Now that you have that setup you need to add the door ID into the ActionHandler.java so the server knows to open the door. Go into ActionHandler Hold Ctrl+F search Server.objectHandler.doorHandling(objectType, c.objectX, c.objectY, 0); you should see something like this..





         // DOORS
      case 1530:
      case 1531:
      case 1533:
      case 1517:
      case 1553:
      case 1551:
      case 2712:
      case 1536:
      case 1512:
      case 1519:
      case 2399:
      case 2051:
      case 2050:
      case 2032:
      case 2398:
      case 1528:
      case 1805:
      case 1516:
      case 1534:
      case 11712:
      case 11711:
      case 11707:
      case 11708:
      case 6725:
      case 3198:

      case 3197:
         Server.objectHandler.doorHandling(objectType, c.objectX, c.objectY, 0);   
         break;





Okay now that you see this you need to add the case then the door ID then : like so,
case 1530: and you need to do that with every new Door ID, You can get the door ID by clicking on the doors.

Okay second way of doing this is, Using teleports kinda the same way I did with the ladders and stairs, So this is what you will be adding..





      case ####: //Door
         if(obX == #### && obY == #### && c.getItems().playerHasItem(###, #)) {
            c.getPA().movePlayer(####, ####, #);
            c.getItems().deleteItem(###, #);
         } else if (obX == #### && obY == ####) {
            c.getDH().sendDialogues(###, #);
         }
         break;



[align=center]Okay the first thing you need to do is look for switch(objectType) { In ActionHandler
Then below that you need to add that code. Now let me try to say how this works,
The case is the Door ID Then the obX and obY is the coords of the door and the playerHasItem is what makes it that you need that item to get inside the door and the morePlayer teleports the player inside if he has the item on him and the c.getItems().deleteItem(###, #); is what deletes the item when he enters. Then the } else if (obX == #### && obY == ####) { is the coords of the same door and this makes it if the player does not have the item he will get a msg from c.getDH().sendDialogues(###, #); that you will have added, And then your done a door that reqs a item to enter. So when your done it should look something like this..
[/align]




      case 1804: //Door
         if(obX == 3115 && obY == 3450 && c.getItems().playerHasItem(983, 1)) {
            c.getPA().movePlayer(3115, 3450, 0);
            c.getItems().deleteItem(983, 1);
         } else if (obX == 3115 && obY == 3450) {
            c.getDH().sendDialogues(552, 0);
         }
         break;




This can also be use for Objects like crates and stuff like the create in Varrock..




      case 6839: //Buy crate in Varrock
         if(obX == 3226 && obY == 3413 && c.getItems().playerHasItem(995, 3)) {
            c.getDH().sendDialogues(550, 0);
            c.getItems().addItem(2518, 1);
            c.getItems().deleteItem(995, 3);
         } else if (obX == 3226 && obY == 3413) {
            c.getDH().sendDialogues(551, 0);
         }
         break;



Now for level req the same as above just one line needed..



      case ####: //
         } else if (obX == #### && obY == ####) {
         if (c.playerLevel[##] >= ##) {
         }
         break;


So I hope this tutorial help you out and Hope you the best with this!



How to add a yell when someone gets 99

Alright this is maybe a 2/10
Go into PlayerAssistant.java Hold ctrl+F search public void levelUp(int skill) {
Then replace the Void with..



public void levelUp(int skill) {
      int totalLevel = (getLevelForXP(c.playerXP[0]) + getLevelForXP(c.playerXP[1]) + getLevelForXP(c.playerXP[2]) + getLevelForXP(c.playerXP[3]) + getLevelForXP(c.playerXP[4]) + getLevelForXP(c.playerXP[5]) + getLevelForXP(c.playerXP[6]) + getLevelForXP(c.playerXP[7]) + getLevelForXP(c.playerXP[8]) + getLevelForXP(c.playerXP[9]) + getLevelForXP(c.playerXP[10]) + getLevelForXP(c.playerXP[11]) + getLevelForXP(c.playerXP[12]) + getLevelForXP(c.playerXP[13]) + getLevelForXP(c.playerXP[14]) + getLevelForXP(c.playerXP[15]) + getLevelForXP(c.playerXP[16]) + getLevelForXP(c.playerXP[17]) + getLevelForXP(c.playerXP[18]) + getLevelForXP(c.playerXP[19]) + getLevelForXP(c.playerXP[20]));
      sendFrame126("Total Lvl: "+totalLevel, 3984);
      switch(skill) {
         case 0:
         sendFrame126("Congratulations, you just advanced an attack level!", 6248);
         sendFrame126("Your attack level is now "+getLevelForXP(c.playerXP[skill])+".", 6249);
         c.sendMessage("Congratulations, you just advanced an attack level.");   
         sendFrame164(6247);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Attack!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 1:
            sendFrame126("Congratulations, you just advanced a defence level!", 6254);
            sendFrame126("Your defence level is now "+getLevelForXP(c.playerXP[skill])+".", 6255);
            c.sendMessage("Congratulations, you just advanced a defence level.");
         sendFrame164(6253);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Defence!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 2:
            sendFrame126("Congratulations, you just advanced a strength level!", 6207);
            sendFrame126("Your strength level is now "+getLevelForXP(c.playerXP[skill])+".", 6208);
            c.sendMessage("Congratulations, you just advanced a strength level.");
         sendFrame164(6206);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Strength!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 3:
            sendFrame126("Congratulations, you just advanced a hitpoints level!", 6217);
            sendFrame126("Your hitpoints level is now "+getLevelForXP(c.playerXP[skill])+".", 6218);
            c.sendMessage("Congratulations, you just advanced a hitpoints level.");
         sendFrame164(6216);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Hitpoints!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 4:
            sendFrame126("Congratulations, you just advanced a ranged level!", 5453);
            sendFrame126("Your ranged level is now "+getLevelForXP(c.playerXP[skill])+".", 6114);
            c.sendMessage("Congratulations, you just advanced a ranging level.");
         sendFrame164(4443);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Range!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 5:
            sendFrame126("Congratulations, you just advanced a prayer level!", 6243);
            sendFrame126("Your prayer level is now "+getLevelForXP(c.playerXP[skill])+".", 6244);
            c.sendMessage("Congratulations, you just advanced a prayer level.");
         sendFrame164(6242);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Prayer!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 6:
            sendFrame126("Congratulations, you just advanced a magic level!", 6212);
            sendFrame126("Your magic level is now "+getLevelForXP(c.playerXP[skill])+".", 6213);
            c.sendMessage("Congratulations, you just advanced a magic level.");
         sendFrame164(6211);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Magic!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 7:
            sendFrame126("Congratulations, you just advanced a cooking level!", 6227);
            sendFrame126("Your cooking level is now "+getLevelForXP(c.playerXP[skill])+".", 6228);
            c.sendMessage("Congratulations, you just advanced a cooking level.");
         sendFrame164(6226);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Cooking!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 8:
         sendFrame126("Congratulations, you just advanced a woodcutting level!", 4273);
         sendFrame126("Your woodcutting level is now "+getLevelForXP(c.playerXP[skill])+".", 4274);
         c.sendMessage("Congratulations, you just advanced a woodcutting level.");
         sendFrame164(4272);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Woodcutting!", "Global Chat", 2);
               }
            }
         }
            break;
         
                                               case 9:
            sendFrame126("Congratulations, you just advanced a fletching level!", 6232);
            sendFrame126("Your fletching level is now "+getLevelForXP(c.playerXP[skill])+".", 6233);
            c.sendMessage("Congratulations, you just advanced a fletching level.");
         sendFrame164(6231);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Fletching!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 10:
            sendFrame126("Congratulations, you just advanced a fishing level!", 6259);
            sendFrame126("Your fishing level is now "+getLevelForXP(c.playerXP[skill])+".", 6260);
            c.sendMessage("Congratulations, you just advanced a fishing level.");
         sendFrame164(6258);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Fishing!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 11:
         sendFrame126("Congratulations, you just advanced a fire making level!", 4283);
         sendFrame126("Your firemaking level is now "+getLevelForXP(c.playerXP[skill])+".", 4284);
         c.sendMessage("Congratulations, you just advanced a fire making level.");
         sendFrame164(4282);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Fire Making!", "Global Chat", 2);
               }
            }
         }
            break;
         
                                                case 12:
         sendFrame126("Congratulations, you just advanced a crafting level!", 6264);
         sendFrame126("Your crafting level is now "+getLevelForXP(c.playerXP[skill])+".", 6265);
         c.sendMessage("Congratulations, you just advanced a crafting level.");
         sendFrame164(6263);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Crafting!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 13:
         sendFrame126("Congratulations, you just advanced a smithing level!", 6222);
         sendFrame126("Your smithing level is now "+getLevelForXP(c.playerXP[skill])+".", 6223);
         c.sendMessage("Congratulations, you just advanced a smithing level.");
         sendFrame164(6221);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Smithing!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 14:
         sendFrame126("Congratulations, you just advanced a mining level!", 4417);
         sendFrame126("Your mining level is now "+getLevelForXP(c.playerXP[skill])+".", 4438);
         c.sendMessage("Congratulations, you just advanced a mining level.");
         sendFrame164(4416);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Mining!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 15:
            sendFrame126("Congratulations, you just advanced a herblore level!", 6238);
            sendFrame126("Your herblore level is now "+getLevelForXP(c.playerXP[skill])+".", 6239);
            c.sendMessage("Congratulations, you just advanced a herblore level.");
         sendFrame164(6237);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Herblore!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 16:
         sendFrame126("Congratulations, you just advanced a agility level!", 4278);
         sendFrame126("Your agility level is now "+getLevelForXP(c.playerXP[skill])+".", 4279);
         c.sendMessage("Congratulations, you just advanced an agility level.");
         sendFrame164(4277);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Agility!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 17:
         sendFrame126("Congratulations, you just advanced a thieving level!", 4263);
         sendFrame126("Your theiving level is now "+getLevelForXP(c.playerXP[skill])+".", 4264);
            c.sendMessage("Congratulations, you just advanced a thieving level.");
         sendFrame164(4261);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Thieving!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 18:
         sendFrame126("Congratulations, you just advanced a slayer level!", 12123);
         sendFrame126("Your slayer level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
         c.sendMessage("Congratulations, you just advanced a slayer level.");
         sendFrame164(12122);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Slayer!", "Global Chat", 2);
               }
            }
         }
            break;
                                                case 19:
         sendFrame126("Congratulations, you just advanced a farming level!", 12123);
         sendFrame126("Your farming level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
         c.sendMessage("Congratulations, you just advanced a farming level.");
         sendFrame164(12122);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Farming!", "Global Chat", 2);
               }
            }
         }
            break;

                                                case 20:
         sendFrame126("Congratulations, you just advanced a runecrafting level!", 4268);
         sendFrame126("Your runecrafting level is now "+getLevelForXP(c.playerXP[skill])+".", 4269);
         c.sendMessage("Congratulations, you just advanced a runecrafting level.");
         sendFrame164(4267);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Runecrafting!", "Global Chat", 2);
               }
            }
         }
            break;
      }
      c.dialogueAction = 0;
      c.nextChat = 0;
   }






Then your done that.



Fixing Attack and Dead anims for npcs

Okay, To start this off this is 1/10
And the files needed
-NpcHandler.java
Also you need 602 Animations/Npcs


First go into NpcHandler.java Hold ctrl+F search public static int getAttackEmote(int i) {
Then you will see some case's below, Now you need the Animations for this I'll show you what you will be adding and how it works.



case ####: //NPCNAME
return ####;


Okay so the case ####: is the Npc ID the //NPCNAME is the name of the npc then return ####; is the Animtion for the npc, I have a list of Animtions for you too at the bottom of the guide. So when you add in the code it should look like this..



case 8528: //Nomad
return 12697;


Now remember you may have some of the NPC IDS in here so you will have to replace them or remove them. This is the same setup for public int getDeadEmote(int i) { in the file, This means you get the Animtions for the getdead. So in other words when they die..
Here is the list.


public static int getAttackEmote(int i) {

      case 1219://Leech
         return 1273;
      case 2031://Bloodwyrm
         return 2070;
      case 134: case 58://Spider
         return 5327;
      case 2034://Crypt Spider
         return 6249;
      case 6379: case 6380://Giant and Worker/Soldier
         return 7237;
      case 6046://Giant Wolf
         return 6559;
      case 1198://Dire Wolf
         return 6559;
      case 5414://Animated Spade
         return 5597;
      case 1832: case 5750://Cave Bugs
         return 6079;
      case 63://Red spider
         return 5327;
      case 6363://Zamorak Warrior
         return 390;
      case 6365://Zamorak Ranger
         return 426;
      case 111://Ice Giant
         return 4672;
      case 5361://Waterfiend
         return 299;
      case 188://Monk of zamorak
         return 422;
      case 7138://Dag'Hai Monk
         return 422;
      case 5386://Skeleton
         return 5487;
      case 1961://Mummy
         return 5549;
      case 5413://Possesed Pickaxe
         return 5591;
      case 9172://Aquanite
         return 12041;
      case 4382://Ankou
         return 422;
      case 1624://Dust Devil
         return 1557;
      case 1019://Fire Elemental
         return 1029;
      case 124://Earth Warrior
         return 393;
      case 1203://Tyras Guard
         return 414;
      case 1976://Shadow Hound
         return 6565;   
      case 2745://Jad
         if (npcs[i].attackType == 1)
            return 9276;
         if (npcs[i].attackType == 2)
            return 9300;
         else
            return 9277;   
      case 8133://Corporeal Beast
         if (npcs[i].attackType == 2)
            return 10053;
         else if (npcs[i].attackType == 1)
            return 10059;
         else if (npcs[i].attackType == 0)
            return 10057;
      case 6715://Revenant Imp
         if (npcs[i].attackType == 1)
            return 7517;
         else
            return 7407;
      case 6687://Revenant Cyclops
         if (npcs[i].attackType == 1)
            return 7510;
         else
            return 7403;
      case 6688://Revenant Hellhound
         if (npcs[i].attackType == 1)
            return 7514;
         else
            return 7460;
      case 6680://Revenant Demon
         if (npcs[i].attackType == 1)
            return 7512;
         else
            return 7474;
      case 6713://Revenant Ork
         if (npcs[i].attackType == 1)
            return 7518;
         else
            return 7411;   
      case 6691://Revenant Dark Beast
         if (npcs[i].attackType == 1)
            return 7515;
         else
            return 7467;
      case 6692://Revenant Knight
         if (npcs[i].attackType == 1)
            return 7522;
         else
            return 7441;   
      case 8528://Nomad
         return 12697;
      case 3847://Sea Troll Queen
         return 3992;      
      case 3340://Giant Mole
         return 3312;   
      case 2881://Dagannoth Supreme
         return 2855;
      case 2882://Dagannoth Prime
         return 2854;
      case 2883://Dagannoth Rex
         return 2851;   
      case 8349://Tormented Demon
         return 10922;
      case 2028://Karil
         return 2075;   
      case 2025://Ahrim
         return 729;
      case 2026://Dharok
         return 2067;
      case 2027://Guthan
         return 2080;
      case 2029://Torag
         return 0x814;
      case 2030://Verac
         return 2062;
      case 6260://General Graardor
         if (npcs[i].attackType == 2)
            return 7063;
         else if (npcs[i].attackType == 1)
            return 7063;
         else if (npcs[i].attackType == 0)
            return 7063;      
      case 6261://Sergeant Strongstack
      case 6263://Sergeant Steelwill
      case 6265://Sergeant Grimspike
         return 6154;
      case 6222://Kree'arra
         return 3505;
      case 6225://Flockleader Geerin
         return 6953;
      case 6223://Wingman Skree
         return 6952;
      case 6227://Flight Kilisa
         return 6954;
      case 6247://Commander Zilyana
         return 6964;
      case 6248://Starlight
         return 6376;
      case 6250://Growler
         return 7018;
      case 6252://Bree
         return 7009;         
      case 4291: case 4292://Cyclops
         return 4652;
      case 1600://Cave Crawler
         return 266;
      case 1631://Rock Slug
         return 9506;
      case 1620://Cockatrice
         return 7762;
      case 1633://Pyrefiend
         return 8080;
      case 7799: case 1616://Basilisk
         return 260;
      case 1637: case 1638: case 1639: case 1640://Jellies
         return 8569;      
      case 7800: case 1611: case 1626://Turoth
         return 9476;
      case 7797: case 7805: case 1608://Kurask
         return 9439;
      case 1657: case 7640: case 7641: case 1648://Crawling Hands
         return 9125;
      case 7786: case 7793://Banshee's
         return 9449;
      case 1643: case 1644: case 1645: case 1646: case 1647://Infernal Mage's
         return 7183;
      case 7642: case 7643:case 1618://Bloodveld's
         return 9102;
      case 1604://Abbarent Spectre
         return 9466;
      case 1610://Gargoyle
         return 9454;
      case 1613://Nechryael
         return 9487;
      case 1615://Abyssal Demon
         return 1537;
      case 2783://Dark Beasts
         return 2731;         
      case 90://Skeleton   
         return 12632;
      case 103://Ghost
         return 5540;
      case 181: case 193: case 2547: case 7105://Chaos Druids
         return 7182;
      case 78://Giant Bat's
         return 4915;
      case 2698://Black Knight
         return 422;
      case 127://Magic Axe
         return 185;
      case 4697://Lesser Demon
         return 4629;      
      case 119://Chaos Dwarf
         return 99;
      case 52: case 51: case 1589://Baby Dragons
         return 25;
      case 53: case 54: case 55: case 941: case 1590: case 1591: case 1592: case 5363://Dragons
         return 80;      
      case 84://Black Demon
         return 64;
      case 49: case 1575: case 3586://Hellhounds
         return 6579;
      case 110: case 1583: case 1584: case 1586: case 10755://Fire Giant's
         return 4667;
      case 112: case 1587: case 1588: case 1681: case 4688: case 4706://Moss Giant's
         return 4658;
      case 77://Zombie's
         return 5568;
      case 86: case 87: case 88://Rat's
         return 4933;
      case 125://Ice warrior
         return 391;         
      case 912: case 913: case 914://Battle Mage's
         return 811;
      case 172: case 174: case 3242: case 3243: case 3244: case 3245: case 8871: case 8872: case 8874://Dark Wizzard's
         return 422;
      case 1317: case 2236://Market Guard
         return 390;
      case 1265: case 2452://Rock Crab's
         return 1312;
      case 1184: case 1183://Elf Warrior's
         return 428;
      case 3252://Barbarian
         return 2067;
      case 1092://White Knight
         return 7042;
      case 81://Cow
         return 245;
      case 101://Goblin
         return 6184;         
      case 41://Chicken
         return 5387;
      case 9: case 15://Guards, Warrior Woman
         return 386;   
      case 189: case 190://Monk of zamorak
         return 422;      
      case 89: case 1328: case 6823://Unicorns
         return 6376;
      case 2455: case 1351: case 2454: case 9089: case 9092: case 9107://Dagannoth's
         return 1342;      
      case 2889://Rock Lobster
         return 2859;   
      case 1156: case 1154: case 1157://Kalphite's
         return 6241;
      case 3200://Chaos Elemental
         return 3146;      
      case 1158://Kalphite Queen
         return 6231;
      case 50://King Black Dragon
         return 81;               
      case 6203://K'ril
         if (npcs[i].attackType == 0)
            return 6945;
         else
            return 6947;


public int getDeadEmote(int i) {

      case 1219://Leech
         return 1272;
      case 2031://Bloodwyrm
         return 2073;
      case 134: case 58://Spider
         return 5329;
      case 2034://Crypt Spider
         return 6251;
      case 6379: case 6380://Giant and Worker/Soldier
         return 7238;
      case 6046://Giant Wolf
         return 6558;
      case 1198://Dire Wolf
         return 6558;
      case 5414://Animated Spade
         return 5596;
      case 1832: case 5750://Cave Bugs
         return 6081;
      case 63://Red spider
         return 5329;
      case 6363://Zamorak Warrior
         return 836;
      case 6365://Zamorak Ranger
         return 836;
      case 111://Ice Giant
         return 4673;
      case 5361://Waterfiend
         return 300;
      case 188://Monk of zamorak
         return 836;
      case 7138://Dag'Hai Monk
         return 836;
      case 5386://Skeleton
         return 5491;
      case 1961://Mummy
         return 5555;
      case 5413://Possesed Pickaxe
         return 5592;      
      case 9172://Aquanite
         return 12039;
      case 4382://Ankou
         return 836;
      case 1624://Dust Devil
         return 1558;
      case 1019://Fire Elemental
         return 1031;
      case 124://Earth Warrior
         return 836;
      case 1203://Tyras Guard
         return 836;
      case 1976://Shadow Hound
         return 6564;
      case 8528://Nomad
         return 12694;      
      case 5666://Barrelchest
         return 5898;
      case 7133://Bork
         return 8756;
      case 3340://Giant Mole
         return 3310;
      case 8349://Tormented Demon
         return 10924;      
      case 2881://Dagannoth Supreme
      case 2882://Dagannoth Prime
      case 2883://Dagannoth Rex
         return 2856;      
      case 6247://Commander Zilyana
         return 6965;      
      case 6248://Starlight
         return 6377;
      case 6250://Growler
         return 7016;   
      case 6252://Bree
         return 7011;
      case 6222://Kree'ara
         return 3503;   
      case 6223://Wingman Skree
      case 6225://Flockleader Geerin
      case 6227://Flight Kilisa
         return 6956;   
      case 2745://TzTok-Jad
         return 9279;                           
      case 6261://Seargent Strongstack
      case 6263://Seargent Steelwill
      case 6265://Seargent Grimspike
         return 6156;
      case 6260://General Graardor
         return 7062;   
      case 6715://Revenant Imp
         return 7408;
      case 6687://Revenant Cyclops
         return 7454;
      case 6688://Revenant Hellhound
         return 7461;
      case 6689://Revenant Demon
         return 7475;
      case 6713://Revenant Ork
         return 7412;
      case 6691://Revenant Dark Beast
         return 7468;
      case 6692://Revenant Knight
         return 7442;   
      case 8133://Corporeal Beast
         return 10059;
      case 1028: case 1029: case 1031: case 1032: case 1033: case 1034: case 1035: case 6063: case 6064://Implings
         return 6613;
      case 4291: case 4292://Cyclops
         return 4653;
      case 1600://Cave Crawler
         return 265;
      case 1631://Rock Slug
         return 9507;
      case 1620://Cockatrice
         return 7763;      
      case 1633://Pyrefiend
         return 11211;   
      case 7799: case 1616://Basilisk
         return 264;
      case 1637: case 1638: case 1639: case 1640://Jellies
         return 8570;
      case 7800: case 1611: case 1626://Turoth
         return 9477;
      case 7797: case 7805: case 1608://Kurask
         return 9440;
      case 1657: case 7640: case 7641: case 1648://Crawling Hands
         return 9445;   
      case 7786: case 7793://Banshee's
         return 9450;   
      case 1643: case 1644: case 1645: case 1646: case 1647://Infernal Mage's
         return 7185;
      case 7642: case 7643:case 1618://Bloodveld's
         return 9131;   
      case 1604://Abbarent Spectre
         return 9467;
      case 1610://Gargoyle
         return 9454;
      case 1613://Nechryael
         return 9488;
      case 1615://Abyssal Demon
         return 1538;
      case 2783://Dark Beasts
         return 2733;
      case 90://Skeleton   
         return 5491;
      case 103://Ghost
         return 5542;
      case 181: case 193: case 2547: case 7105://Chaos Druids
         return 836;         
      case 78://Giant Bat's
         return 4917;      
      case 2698://Black Knight
         return 836;   
      case 127://Magic Axe
         return 188;   
      case 4697://Lesser Demon
         return 4677;
      case 119://Chaos Dwarf
         return 102;
      case 51: case 52: case 1589://Baby Dragons
         return 28;
      case 53: case 54: case 55: case 941: case 1590: case 1591: case 1592: case 5363://Dragons
         return 28;   
      case 84://Black Demon
         return 67;   
      case 49: case 1575: case 3586://Hellhounds
         return 6576;   
      case 110: case 1583: case 1584: case 1586: case 10755://Fire Giant's
         return 4668;   
      case 112: case 117: case 1587: case 1588: case 1681: case 4688: case 4706://Giant's
         return 4659;   
      case 77://Zombie's
         return 5569;
      case 86: case 87: case 88://Rat's
         return 4935;   
      case 125://Ice warrior
         return 843;
      case 912: case 913: case 914://Battle Mage's
         return 836;   
      case 172: case 174:   case 3242: case 3243: case 3244: case 3245: case 8871: case 8872: case 8874://Dark Wizzard's
         return 836;   
      case 1317: case 2236://Market Guard
         return 836;         
      case 1265: case 2452://Rock Crab's
         return 1314;   
      case 1184: case 1183://Elf Warrior's
         return 836;         
      case 3252://Barbarian
         return 836;   
      case 1092://White Knight
         return 836;         
      case 81://Cow
         return 244;         
      case 101://Goblin
         return 6182;
      case 41://Chicken
         return 5389;
      case 9: case 15://Guard, Warrior Woman
         return 836;
      case 189: case 190://Monk of zamorak
         return 836;
      case 89: case 1328: case 6823://Unicorns
         return 6377;   
      case 2455: case 1351: case 2454: case 9089: case 9092: case 9107://Dagannoth's
         return 1342;
      case 2889://Rock Lobster
         return 2862;
      case 1156: case 1154: case 1157://Kalphite's
         return 6242;   
      case 3200://Chaos Elemental
         return 3147;   
      case 1158://Kalphite Queen
         return 6228;   
      case 50://King Black Dragon
         return 28;



Better Woodcutting

Okay this may be a long tutorial but it's good to have.
5/10
Files needed
-player.java
-woodcutting.java
-clickitem.java
-itemassistant.java
-actionhandler.java



Okay, Open player.java Hold ctrl+F Search public int[] woodcut = new int
Then replace that line with public int[] woodcut = new int [7];
Okay now close that file, and open woodcutting.java and you can do 2 things..
Replace everything in the file with this code or take parts of the code out.



package server.model.players.skills;


import server.model.players.*;
import server.Config;
import server.util.Misc;
import server.Server;
import java.lang.Math;
import server.model.players.Client;
import server.model.players.PacketType;
import server.model.objects.Object;
import server.model.players.PlayerHandler;


public class Woodcutting {
   
   Client c;
   
   private final int VALID_AXE[] = {1351,1349,1353,1361,1355,1357,1359,6739};
   private final int[] AXE_REQS = {1,1,6,6,21,31,41,61};
   private int logType;
   private int exp;
   private int levelReq;
   private int axeType;
   private int treeX;
   private int treeY;
   private int density;
   private int treeType;
   public int logsCutFromTree;
   public int tempTimer = 0;
   
   public static int TREE_TIMER = 2000;
   
   public Woodcutting(Client c) {
      this.c = c;
   }
 
   public void startWoodcutting(int logType, int levelReq, int exp, int treeX, int treeY, int density, int treeType) {
      if (goodAxe() > 0) {
         c.turnPlayerTo(treeX, treeY);
         if (c.playerLevel[c.playerWoodcutting] >= levelReq) {
            this.logType = logType;
            this.exp = exp;
            this.levelReq = levelReq;
            this.treeX = treeX;
            this.treeY = treeY;
            this.density = density;
            this.treeType = treeType;
            this.axeType = goodAxe();
            c.wcTimer = getWcTimer(density);
            c.startAnimation(getWcEmote());
         } else {
            c.getPA().resetVariables();
            c.startAnimation(65535);
            c.sendMessage("You need a woodcutting level of " + levelReq + " to cut this tree.");
         }      
      } else {
         c.startAnimation(65535);             
         c.sendMessage("You don't have an axe for which you have the level to use.");
         c.getPA().resetVariables();
      }
   }

   public void resetWoodcut() {
            this.logType = -1;
            this.exp = -1;
            this.levelReq = -1;
            this.axeType = -1;

      this.density = -1;
      this.treeX = -1;
      this.treeY = -1;
      this.treeType = -1;
      c.wcTimer = -1;   
      logsCutFromTree = 0;
   }
public void randomNestdrop() {
c.sendMessage("A nest has fallen out of the tree!");
Server.itemHandler.createGroundItem(c, 5073, c.getX(), c.getY(), 1, c.getId());
   }
   
   public int getWcEmote() {
      if (axeType == 1351) // bronze
         return 879;
      if (axeType == 1349) // iron
         return 877;
      if (axeType == 1353) // steel
         return 875;
      if (axeType == 1355) // mith
         return 871;
      if (axeType == 1357) // addy
         return 869;
      if (axeType == 1359) // rune
         return 867;
      if (axeType == 6739) // d axe
         return 2846;
      if (axeType == 13661) // d axe
         return 2846;
      if (axeType == 1361) // black
         return 873;
      else
         return 0;
   }
   
   public void cutWood() {
      int maxLogsPerTree = cutForChop(treeType);
      if (logsCutFromTree < maxLogsPerTree) {

         if (c.getItems().addItem(logType,1)) {
            c.startAnimation(getWcEmote());
            logsCutFromTree += 1;
            c.sendMessage("You get some logs.");
            c.getPA().addSkillXP(exp * Config.WOODCUTTING_EXPERIENCE, c.playerWoodcutting);
            c.getPA().refreshSkill(c.playerWoodcutting);
            c.wcTimer = getWcTimer(density);
         } else {
            c.getPA().resetVariables();
             c.frame1();         
            return;
      }
            
         }else if(c.getItems().freeSlots() >= 1){
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
            if (Server.playerHandler.players[j] != null) {
            c.getItems().addItem(logType,1);
            c.sendMessage("You get some logs.");
            c.getPA().addSkillXP(exp * Config.WOODCUTTING_EXPERIENCE, c.playerWoodcutting);

               Client c2 = (Client)Server.playerHandler.players[j];
               new Object(1343, treeX, treeY, 0, 1, 10, treeType, getTicksForTree());
               c.getPA().resetVariables();
                c.frame1();
            
               resetWoodcut();
               if (Misc.random(25) == 1)
               randomNestdrop();
               return;
            }
         }
         return;
      }
}
   public int getTicksForTree() {
      return (2000-PlayerHandler.getPlayerCount())/100 + additionalTicksPerTree();
   }
   
   public int additionalTicksPerTree() {
      if (treeType == 1276) // reg
         return 1;
      if (treeType == 1278) // reg
         return 1;
      if (treeType == 1281) // oak
         return 1;
      if (treeType == 1308) // willow
         return 3;
      if (treeType == 1307) // maple
         return 4;
      if (treeType == 1309) // yew
         return 6;
      if (treeType == 1306) // magic
         return 7;
      else
         return 0;
   }
   
   public int cutForChop(int tree) {
      if (tree == 1276 || tree == 1278)
         return 0;
      if (tree == 1281)
         return 0 + Misc.random(5);
      if (tree == 1308)
         return 0 + Misc.random(6);
      if (tree == 1307)
         return 0 + Misc.random(8);
      if (tree == 1309)
         return 0 + Misc.random(7);
      if (tree == 1306)
         return 0 + Misc.random(10);
      else
         return 0;
   }
   
   public int axePower(int axe) {
      if (axe == 1351) // bronze
         return 1;
      if (axe == 1349) // iron
         return 1;
      if (axe == 1353) // steel
         return 2;
      if (axe == 1361) // black
         return 2;
      if (axe == 1355) // mith
         return 3;
      if (axe == 1357) // addy
         return 4;
      if (axe == 1359) // rune
         return 5;
      if (axe == 6739) //daxe
         return 7;
      if (axe == 13661) //daxe
         return 8;
      else
         return 0;
   }
   
   public int goodAxe() {
      for (int j = VALID_AXE.length - 1; j >= 0; j--) {
         if (c.playerEquipment[c.playerWeapon] == VALID_AXE[j]) {
            if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
               return VALID_AXE[j];
         }      
      }
      for (int i = 0; i < c.playerItems.length; i++) {
         for (int j = VALID_AXE.length - 1; j >= 0; j--) {
            if (c.playerItems[i] == VALID_AXE[j] + 1) {
               if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
                  return VALID_AXE[j];
            }
         }      
      }
      return - 1;
   }
   
   public int getWcTimer(int density) {
      int time = Misc.random(2);
      return density + time - axePower(goodAxe());
   }

}


Now close that file and open itemassistant.java and place this code somewhere in there



   public int[] Nests = {5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304};
   public void handleNests(int itemId) {
         int reward = Nests[Misc.random(14)];
         addItem(reward, 3 + Misc.random(5));
         deleteItem(itemId, 1);
         c.sendMessage("You search the nest");
      }


Now close that and open clickitem.java in there added this somewhere



      if (itemId == 5073) {
c.getItems().addItem(5075, 1);
         c.getItems().handleNests (itemId);
}


Close that and open ActionHandler.java and find your tree IDs and replace them with this code.



   
      case 1276:
      case 1278://trees
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1511;
         c.woodcut[1] = 1;
         c.woodcut[2] = 25;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 8;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
      }
break;
      case 1281: //oak
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1521;
         c.woodcut[1] = 15;
         c.woodcut[2] = 37;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 9;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1308: //willow
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1519;
         c.woodcut[1] = 30;
         c.woodcut[2] = 68;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 10;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1307: //maple
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1517;
         c.woodcut[1] = 45;
         c.woodcut[2] = 100;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 11;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1309: //yew
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1515;
         c.woodcut[1] = 60;
         c.woodcut[2] = 175;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 12;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1306: // magic
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1513;
         c.woodcut[1] = 75;
         c.woodcut[2] = 250;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 13;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;


Not all trees in there but It's not hard to add them.
And that's it!

Also creds go to cres for making the code.



Changing the Auto msg in the server chatbox

Alright this is a 0/10
Files needed
-Client.java


Okay, Open Client.java and search for public void mymessage() {
Then you will see this..



      public void mymessage() {
      EventManager.getSingleton().addEvent(new Event() {
         public void execute(EventContainer c) {
            int r3 = 0;
            r3 = Misc.random(6);
            if (r3 == 0) {
               sendMessage("");
            } else if (r3 == 1) {
               sendMessage("");      
            } else if (r3 == 2) {
               sendMessage("");
            } else if (r3 == 3) {
               sendMessage(" ");
            } else if (r3 == 4) {
               sendMessage("");
            } else if (r3 == 5) {
               sendMessage("");
            }
         }
      }, 320000); //milisecondsservermessage
   };


Just put whatever you want to say in the sendMessage(""); then for }, 320000); //milisecondsservermessage You can change how many times it comes up in the chatbox.



Mystery box that gives random items
Okay, this is a 0/10
Files needed
-Clickitem.java


Open Clickitem.java and add this code somewhere



}
if(itemId == 3062) {
c.getItems().deleteItem(3062, 1);
int[] arrayOfItems ={1149, 1187, 14479};
c.getItems().addItem(arrayOfItems[Misc.random(arrayOfItems.length)], 1);
}


Alright, See the int[] arrayifItems = { You just add more items were you see 1149, 1187.


Adding the Completionist cape and hood Rack

Here is a new guide for you. This guide can get a bit tricky at times if your not good with client side.

This tutorial.
6/10
Files needed.
-ObjectDef.java - Client side
-Clickingbuttons.java - Server side
-Actionhandler.java - Server side
-DialogueHandler.java - Server side
-ObjectManager.java - Server side

Alright lets start this.
To start things off your going to need to download this model for the object.
[ Register or Signin to view external links. ]
Also if the link does not work let me know.


Okay now put that file in your cache in the raw folder then close all that and lets start the coding, Open your ObjectDef file in the client and Hold Ctrl+F Search public static ObjectDef forID(int i) { And below objectDef.readValues(stream); If I'm right, You will add this in your below that..


if(i == ####)
         {
         class46.name = "Mysterious cape";
         class46.description = "Mysterious cape is hanging here.".getBytes();
         class46.anInt744 = 2;
         class46.anInt761 = 1;
         class46.anIntArray773 = new int[1];
         class46.anIntArray773[0] = 65274;
         class46.itemActions = new String[5];
         class46.itemActions[0] = "Investigate";
         class46.hasActions = true;
         class46.aBoolean767 = true;
         class46.aBoolean762 = false;
         class46.aBoolean769 = false;
      }

Okay, Now the if(i == ####) is the object you want to replace it with, So pick a object ID and put it there, Okay your done with the Client side. Now moving on.
In Clickingbuttons.java Hold Ctrl+F Search case 9157: and under that you will place this code..



if (c.dialogueAction == 3516) {
               c.getItems().addItem(#####, #);
               c.getItems().addItem(#####, #);
               c.sendMessage("Talking....");
               }


Now the AddItem means what item they will get so you need to find the ID of the Cape and put it in the top one then the hood ID in the bottom one. Then how many they will get with the # one. sendMessage means the msg they will get when they get the cape. Now in Actionhandler.java Ctrl+F Search firstClickObject then look for this under that switch(objectType) { then below that add this in..



case 3515:
      if(c.playerLevel[0] >= 98 && c.playerLevel[1] >= 98 && c.playerLevel[2] >= 98 && c.playerLevel[3] >= 98 && c.playerLevel[4] >= 98 && c.playerLevel[5] >= 98 && c.playerLevel[6] >= 98 && c.playerLevel[7] >= 98 && c.playerLevel[8] >= 98 && c.playerLevel[9] >= 98 && c.playerLevel[10] >= 98 && c.playerLevel[11] >= 98 && c.playerLevel[12] >= 98 && c.playerLevel[13] >= 98 && c.playerLevel[14] >= 98 && c.playerLevel[15] >= 98 && c.playerLevel[16] >= 98 && c.playerLevel[17] >= 98 && c.playerLevel[18] >= 98 && c.playerLevel[19] >= 98 && c.playerLevel[20] >= 99 && c.playerLevel[21] >= 98 && c.playerLevel[22] >= 98 && c.playerLevel[23] >= 98) {
            c.getDH().sendDialogues(3515, 1);
         } else {
            c.getPA().movePlayer(####, ####, #);//Teleports them away
            c.sendMessage("Come back when you get all 99s");   
         }
         break;



Okay this will make it that they need 99 in all skills to get the cape, Also if you want to teleport them somewhere then put the coords in the #### #### #, If not just remove the teleport code. Now there is 2 ways you can do this all 99s or a time played in the server..



case 3515:
      if(c.playerLevel[0] >= 98 && c.playerLevel[1] >= 98 && c.playerLevel[2] >= 98 && c.playerLevel[3] >= 98 && c.playerLevel[4] >= 98 && c.playerLevel[5] >= 98 && c.playerLevel[6] >= 98 && c.playerLevel[7] >= 98 && c.playerLevel[8] >= 98 && c.playerLevel[9] >= 98 && c.playerLevel[10] >= 98 && c.playerLevel[11] >= 98 && c.playerLevel[12] >= 98 && c.playerLevel[13] >= 98 && c.playerLevel[14] >= 98 && c.playerLevel[15] >= 98 && c.playerLevel[16] >= 98 && c.playerLevel[17] >= 98 && c.playerLevel[18] >= 98 && c.playerLevel[19] >= 98 && c.playerLevel[20] >= 99 && c.playerLevel[21] >= 98 && c.playerLevel[22] >= 98 && c.playerLevel[23] >= 98 && c.pTime >= 86400) {
         c.getDH().sendDialogues(3515, 1);
      } else {
         if(c.playerLevel[0] < 98 && c.playerLevel[1] < 98 && c.playerLevel[2] < 98 && c.playerLevel[3] < 98 && c.playerLevel[4] < 98 && c.playerLevel[5] < 98 && c.playerLevel[6] < 98 && c.playerLevel[7] < 98 && c.playerLevel[8] < 98 && c.playerLevel[9] < 98 && c.playerLevel[10] < 98 && c.playerLevel[11] < 98 && c.playerLevel[12] < 98 && c.playerLevel[13] < 98 && c.playerLevel[14] < 98 && c.playerLevel[15] < 98 && c.playerLevel[16] < 98 && c.playerLevel[17] < 98 && c.playerLevel[18] < 98 && c.playerLevel[19] < 98 && c.playerLevel[20] < 99 && c.playerLevel[21] < 98 && c.playerLevel[22] < 98 && c.playerLevel[23] < 98 && c.pTime < 86400) {
            c.getPA().movePlayer(3212, 3428, 0);
            c.sendMessage("Come back when you have achieved maxed stats, and have been playing for 1 month!");
      } else {
         if(c.playerLevel[0] < 98 && c.playerLevel[1] < 98 && c.playerLevel[2] < 98 && c.playerLevel[3] < 98 && c.playerLevel[4] < 98 && c.playerLevel[5] < 98 && c.playerLevel[6] < 98 && c.playerLevel[7] < 98 && c.playerLevel[8] < 98 && c.playerLevel[9] < 98 && c.playerLevel[10] < 98 && c.playerLevel[11] < 98 && c.playerLevel[12] < 98 && c.playerLevel[13] < 98 && c.playerLevel[14] < 98 && c.playerLevel[15] < 98 && c.playerLevel[16] < 98 && c.playerLevel[17] < 98 && c.playerLevel[18] < 98 && c.playerLevel[19] < 98 && c.playerLevel[20] < 99 && c.playerLevel[21] < 98 && c.playerLevel[22] < 98 && c.playerLevel[23] < 98 && c.pTime >= 86400) {
            c.getPA().movePlayer(3212, 3428, 0);
            c.sendMessage("Come back when you have achieved maxed stats!");
      } else {
         if(c.playerLevel[0] >= 98 && c.playerLevel[1] >= 98 && c.playerLevel[2] >= 98 && c.playerLevel[3] >= 98 && c.playerLevel[4] >= 98 && c.playerLevel[5] >= 98 && c.playerLevel[6] >= 98 && c.playerLevel[7] >= 98 && c.playerLevel[8] >= 98 && c.playerLevel[9] >= 98 && c.playerLevel[10] >= 98 && c.playerLevel[11] >= 98 && c.playerLevel[12] >= 98 && c.playerLevel[13] >= 98 && c.playerLevel[14] >= 98 && c.playerLevel[15] >= 98 && c.playerLevel[16] >= 98 && c.playerLevel[17] >= 98 && c.playerLevel[18] >= 98 && c.playerLevel[19] >= 98 && c.playerLevel[20] >= 99 && c.playerLevel[21] >= 98 && c.playerLevel[22] >= 98 && c.playerLevel[23] >= 98 && c.pTime < 86400) {
            c.getPA().movePlayer(3212, 3428, 0);
            c.sendMessage("Come back when you have been playing for 1 month!");         
         }
      }
   }
}

Now your going to need a total time played in the server code sadly I don't use them or know much about them so that one is on you to find out. Okay moving on, In DialogueHandler.java Hold Ctrl+F Search public void sendDialogues(int dialogue, int npcId) { Then under switch(dialogue) { Place this code in..



case 3515:
      sendOption2("Get the Completionist cape", "Don't get the Completionist cape");
      c.dialogueAction = 3516;
      break;


This makes it give a option if the player wants the cape or not.
Also you need to add the dialogueAction ID in your clickingbuttoms file but you can look at my dialogue tutorial on that to find out how to. Moving on, Go to ObjectManager.java Hold Ctrl+F Search public void loadCustomSpawns(Client c) { then add this code in..



c.getPA().checkObjectSpawn(####, ####, ####, #, 10);


Now this means it will put the object somewhere, The first #### is the Object ID you picked, The second #### is the X coords then the last #### is the Y Coords then the # is the hight level you want it to be at, Okay your done! Good job.



How to change your Exp rate on your server

Okay, This tutorial is about 1/10.
Files needed.
-Config.java


Okay, Open Config.java Hold Ctrl+F Search public static final int SKILL_EXP =
Okay, Now some servers are not the same when it comes to this but I'm sure this is the same for you.

You should see something like this..



   //public static final int SKILL_EXP = ##; // Runescape Skills Xp * SKILL_EXP
   
   public static final int MELEE_EXP_RATE = ###; // damage * exp rate
   public static final int RANGE_EXP_RATE = ###;
   public static final int MAGIC_EXP_RATE = ###;
   public static final double SERVER_EXP_BONUS = #;


Okay now where you see the first ## is the xp rate for skills most servers have it at 10-20 so just pick a number there you want, Now you see the Melee/Range/Magic ###, Most servers have that above 1000 but that is really fast Exp so if you want someone to not get 99s within 20mins make it like 600 or 400. Now the last # is the server double XP just put that at 1 and if you want double xp make it 2. Moving on, Now search for * Skill Experience Multipliers then you should see something like this..



   public static final int WOODCUTTING_EXPERIENCE = #;
   public static final int MINING_EXPERIENCE = #;
   public static final int SMITHING_EXPERIENCE = #;
   public static final int FARMING_EXPERIENCE = #;
   public static final int FIREMAKING_EXPERIENCE = #;
   public static final int HERBLORE_EXPERIENCE = #;
   public static final int FISHING_EXPERIENCE = #;
   public static final int AGILITY_EXPERIENCE = #;
   public static final int PRAYER_EXPERIENCE = #;
   public static final int RUNECRAFTING_EXPERIENCE = #;
   public static final int CRAFTING_EXPERIENCE = #;
   public static final int THIEVING_EXPERIENCE = #;
   public static final int SLAYER_EXPERIENCE = #;
   public static final int COOKING_EXPERIENCE = #;
   public static final int FLETCHING_EXPERIENCE = #;
   
   public static final int XP_RATE = #;


Now the skills with # are the Xp rates, Now how this works is if you put 20 then it will be kinda hard to get that skill 99, If you put 60 then that skill will be fast to get 99
If you put 100 then that skill will be really easy to get 99. Now the XP RATE = # is the rate of xp they will get for the skills so you can make that 1 this will make it that they don't get so much xp so fast.

You can also change XP RATES in other files but I'll show that with my other tutorials.



Adding more food to cook and Eat

This is about 2/10.
Files needed.
-Cooking.java
-Food.java

Before anything, Most servers are not the same with the cooking side as my.
Okay, Open cooking.java Hold Ctrl+F Search private int[][] cookingItems =
Now you should see something like this..



private int[][] cookingItems = {{317,315,323,1,6}


Okay, Let me try to tell you how this is setup. the 317 is the raw ID then the 315 is the Cooked ID then the 323 is the burnt ID then the 1 is the Level req then the 6 is the EXP gain. Now if you want to add more to that you need to do something like this..


{{317,315,323,1,6},{15270,15272,15274,95,100}};


Alright now go to Food.java Hold ctrl+F public static enum FoodToEat {
Now you should see something like this..



   public static enum FoodToEat {      
      ROCKTAIL(15272,23,"Rocktail"),
      MANTA(391,22,"Manta Ray"),
      SHARK(385,20,"Shark"),
      LOBSTER(379,12,"Lobster"),
      GIANT_CRAP(337,15,"Giant Crap"),


Now see where ROCKTAIL is when you add the name it must be all CAPS, then the Cooked ID then how much HP you get from it then the lower case name of the cooked ID.

And that's about it. Good luck!



How to change players ranks on your server

Okay, This should be easy for anyone.
Go to your characters Folder
and find the players name that you want to change.
Okay, Now it should look something like this..




[ACCOUNT]
character-username = TheTechGame
character-password = TheTechGame



Bankpins are fun
hasBankPin = false
bankPin1 = 0
bankPin2 = 0
bankPin3 = 0
bankPin4 = 0
[CHARACTER]
character-height = 0
character-posx = 3093
character-posy = 3104
character-rights = 0
crystal-bow-shots = 0
VLS-hits = 0
skull-timer = -1
EP = 0

dungeonPoints = 0
character-longsword = 1000
character-warhammer = 1000
character-spear = 1000
character-chainbody = 1000
character-chainskirt = 1000
character-full helm = 1000
character-platebody = 1000
character-platelegs = 1000
character-hood = 1000
character-staff = 1000
character-robe top = 1000
character-robe bottom = 1000
character-leather body = 1000
character-chaps = 1000
magic-book = 0
brother-info = 0   0
brother-info = 1   0
brother-info = 2   0
brother-info = 3   0
brother-info = 4   0
brother-info = 5   0
special-amount = 10.0
selected-coffin = 0
barrows-killcount = 0
teleblock-length = 0
pc-points = 0
gwdelay = 0
Altar = 0
Arma-KC = 0
Band-KC = 0
Zammy-KC = 0
Sara-KC = 0

pk-points = 0

isDonator = 0
donatorChest = 0
slayerTask = 0
xpLock = false
Agrith = false
Flambeed = false
Karamel = false
Dessourt = false
culin = false
taskAmount = 0
magePoints = 0
KC =0
DC =1
totalstored = 0
autoRet = 0
trade11 = 0
SpeDelay = 0
barrowskillcount = 0
flagged = false
Rules = false
shopping = false
Jailed = false
wave = 0
dfs-charges = 0
lastsummon = 0
summoningnpcid = 0
fightMode = 0
SPoints = 0
Monkey-Kc = 0
void = 0   0   0   0   0

[EQUIPMENT]
character-equip = 0   -1   1   
character-equip = 1   6568   1   
character-equip = 2   1725   1   
character-equip = 3   -1   0   
character-equip = 4   544   1   
character-equip = 5   -1   1   
character-equip = 6   -1   0   
character-equip = 7   542   1   
character-equip = 8   -1   0   
character-equip = 9   -1   1   
character-equip = 10   -1   1   
character-equip = 11   -1   0   
character-equip = 12   -1   1   
character-equip = 13   -1   0   

[LOOK]
character-look = 0   0
character-look = 1   0
character-look = 2   24
character-look = 3   28
character-look = 4   35
character-look = 5   39
character-look = 6   44
character-look = 7   14
character-look = 8   7
character-look = 9   8
character-look = 10   9
character-look = 11   5
character-look = 12   0

[SKILLS]
character-skill = 0   6   600
character-skill = 1   1   0
character-skill = 2   1   0
character-skill = 3   12   1671
character-skill = 4   1   0
character-skill = 5   1   0
character-skill = 6   5   505
character-skill = 7   1   0
character-skill = 8   1   0
character-skill = 9   1   0
character-skill = 10   1   0
character-skill = 11   1   0
character-skill = 12   1   0
character-skill = 13   1   0
character-skill = 14   1   0
character-skill = 15   1   0
character-skill = 16   1   0
character-skill = 17   1   0
character-skill = 18   1   0
character-skill = 19   1   0
character-skill = 20   1   0
character-skill = 21   1   0
character-skill = 22   1   0
character-skill = 23   1   0
character-skill = 24   1   0

[ITEMS]
character-item = 0   996   10000
character-item = 1   566   50
character-item = 2   555   100
character-item = 3   556   100
character-item = 4   557   99
character-item = 5   559   99
character-item = 6   561   80
character-item = 7   381   50
character-item = 8   1324   1
character-item = 9   842   1
character-item = 10   883   100
character-item = 15   1334   1

[BANK]

[FRIENDS]
character-friend = 0   43186678

[STORED]
stored = 0   0
stored = 1   0
stored = 2   0
stored = 3   0
stored = 4   0
stored = 5   0
stored = 6   0
stored = 7   0
stored = 8   0
stored = 9   0
stored = 10   0
stored = 11   0
stored = 12   0
stored = 13   0
stored = 14   0
stored = 15   0
stored = 16   0
stored = 17   0
stored = 18   0
stored = 19   0
stored = 20   0
stored = 21   0
stored = 22   0
stored = 23   0
stored = 24   0
stored = 25   0
stored = 26   0
stored = 27   0
stored = 28   0

[OCCUPY]
occupy = 0   false
occupy = 1   false
occupy = 2   false
occupy = 3   false
occupy = 4   false
occupy = 5   false
occupy = 6   false
occupy = 7   false
occupy = 8   false
occupy = 9   false
occupy = 10   false
occupy = 11   false
occupy = 12   false
occupy = 13   false
occupy = 14   false
occupy = 15   false
occupy = 16   false
occupy = 17   false
occupy = 18   false
occupy = 19   false
occupy = 20   false
occupy = 21   false
occupy = 22   false
occupy = 23   false
occupy = 24   false
occupy = 25   false
occupy = 26   false
occupy = 27   false
occupy = 28   false

[EOF]


Now where you see character-rights = 0
is how you change the rank in the server for that player.
1 = mod
2 = admin
3 = Owner

You can also make them donator this way to but you need to find isDonator = 0
1 = Donator

There is other stuff in this file that you can change but it's not all that hard to find it out.



Last edited by -3Dz- ; edited 5 times in total
#2. Posted:
B16
  • Powerhouse
Status: Offline
Joined: Nov 28, 201112Year Member
Posts: 442
Reputation Power: 18
Status: Offline
Joined: Nov 28, 201112Year Member
Posts: 442
Reputation Power: 18
-3Dz- wrote
Hey, TTG Members. I have been seeing more and more RSPS now on TTG and some people have been asking how to do things like easy coding also I know there is a topic about tutorial on how to make a rsps but this is PI Coding for PI sources and servers So, I'm going to show you some easy coding for PI's only and how to do some stuff and hints. I do know there is sites like rune-server and so on for this but TTG has no tutorials on coding PI servers so I think this would be good for TTG to help some of the members. Arlight lets start!


Remember to make a backup of the files before adding these codes or editing them in,
You have been warned!


If you get any errors post them & I'll try to help you fix them!


I'll add more tutorials soon.


Coords

2867 9955 - Ice Queen Lair
3429 3538 - Slayer Tower
2710 9466 - Brimhaven Dungeon
2856 3812 - Ice Path
2480 3437 - Gnome Agility Training
3281 2765 - Pyramid Plunder room
3345 3251 - Duel Arena
2717 9808 - King Black Dragon Cave
3044 4973 - Rouges Den
Big water fall ::tele 2534,3511
Very back of wild ::tele 3100,3957
Varrock east bank ::tele 3250,3423
Varrock ::tele 3210,3424
Falador ::tele 2964,3378
Lumbridge ::tele 3222,3218
Camelot ::tele 2757,3477
East Ardougne ::tele 2662,3305
West Ardougne ::tele 2529,3307
King Lathas Training Grounds ::tele 2516,3369
Tree Gnome Stronghold ::tele 2461,3443
Al Kharid ::tele 3293,3174
Shantays Pass ::tele 3304,3116
Kalphite Lair ::tele 3226,3107
Pyramid ::tele 3233,2902
Pollnivneach ::tele 3359,2910
Menaphos/Sophanem ::tele 3274,2784
Yanille ::tele 2606,3093
Gul'Tanoth ::tele 2516,3044
Tutorial Island ::tele 3094,3107
Barbarian Village ::tele 3082,3420
Entrana ::tele 2834,3335
Heroes Guild ::tele 2902,3510
Rangers Guild ::tele 2658,3439
Coal Trucks ::tele 2582,3481
Goblin Village ::tele 2956,3506
Druids Circle ::tele 2926,3482
Burthorpe ::tele 2926,3559
White wolf mountain ::tele 2848,3498
Catherby ::tele 2813,3447
Seers village ::tele 2708,3492
Fishing guild ::tele 2603,3414
Barbarian Agility Course ::tele 2541,3546
Prifddinas ::tele 2242,3278
Elf camp (Tirannwn) ::tele 2197,3252
Isafdar (Tirannwn) ::tele 2241,3238
Duel arena ::tele 3360,3213
Desert mining camp ::tele 3286,3023
Bedabin camp ::tele 3171,3026
Bandit camp ::tele 3176,2987
Sophanem ::tele 3305,2755
Ruins of Uzer ::tele 3490,3090
Mort'ton ::tele 3489,3288
Canifis ::tele 3506,3496
Port Phasmatys ::tele 3687,3502
Fenkenstrain's castle ::tele 3550,3548
Dig site ::tele 3354,3402
Exam centre ::tele 3354,3344
Edgeville ::tele 3093,3493
Crafting guild ::tele 2933,3285
Port Sarim ::tele 3023,3208
Rimmington ::tele 2957,3214
Draynor village ::tele 3093,3244
Fight arena ::tele 2585,3150
Tree gnome village ::tele 2525,3167
Port Khazard ::tele 2665,3161
Monastery ::tele 3051,3490
Karamja ::tele 2948,3147
Crandor ::tele 2851,3238
King Black Dragon Lair ::tele 2717,9816
KQ Lair ::tele 3487,9493
Underground pass level 2 ::tele 2337,9798
Weird water place ::tele 2676,3008
Members Karajama ::tele 2815,3182
Grave island ::tele 3504,3575
HAM camp ::tele 3165,9629
Pyramid under Sophanem ::tele 3277,9171
Juna the snake ::tele 3251,9517
Smoky tunnels/dark room (This place needs more tests) 3206,9379
Underground pass level 1 ::tele 2495,9715
Mage Arena ::tele 3107,3937
Ape Atoll ::tele 2755,2784
Jungle demon area bottom level ::tele 2714,9183
Jungle demon area top level (use Burst of Strength) ::tele 2703,9178
Wilderness Agility Course ::tele 3003,3934
Keldagram ::tele 2937,9999
Agility arena on Karamja ::tele 2761,9557
Metal dragon dungeon (back) ::tele 2713,9459
Metal dragon dungeon (front) ::tele 2713,9564
Inside the desert treasure pyramid ::tele 3233,9315
Tree gnome hanger ::tele 2390,9886
Fishing platform ::tele 2782,3273
Boat crash island place ::tele 2795,3321
Legends quest jungle dungeon ::tele 2772,9341
TzHaar ::tele 2480,5175
Essence mine ::tele 2911,4832
Morings end part 1 mine ::tele 2044,4649
Dwarf cut scene meeting area ::tele 2035,4529
New KBD lair ::tele 2273,4695
Elven forest cut scene area ::tele 2309,4597
Gold mine rock ::tele 2358,4959
White knight tasks area ::tele 2443,4956
Rouge maze (Press Burst of Strength) ::tele 3050,5071
The shadow guys dungeon ::tele 2738,5081
Barrows top ::tele 3564,3288
Barrows tunnel ::tele 3568,9695
Barrows chest ::tele 3551,9694
CW bank= 2441,3090
CW center= 2400,3103
Blue dragons= 2910,9801
Black demons= 2860 9775
Hell Hounds= 2867,9844
Black dragons= 2829,9826
Chaos rune crafting alter ::tele 2269,4843
Legends dungeon prt2 ::tele 2375,4705
Mage arena dungeon ::tele 2519,4719
Evil Bobs island "scaperune" ::tele 2525,4776
Distant kingdom (alive) 2576,4655
Distant kingdom (dead) 2803,4723
Forester random event ::tele 2602,4775
Alt area ::tele 2527,4547
Fremmy maze ::tele 2652,9999
Death rune altar ::tele 2207,4836
Cosmic alter ::tele 2162,4833
Middle of under ground pass ::tele 2168 4726
Quiz random event ::tele 1952,4768
Trawler boat ::tele 2013,4820
Sunk trawler mini game boat ::tele 1951,4825
Trawler boat empty of water ::tele 1886,4830
Mime stage ::tele 2008,4762
"Draynor" ::tele 2130,4913
Game room ::tele 2196,4961
Mind alter ::tele 2796,4818
Air Alter ::tele 2845,4832
Water Alter ::tele 2713,4836
Earth Alter ::tele 2660,4839
Fire Alter ::tele 2584,4836
Body Alter ::tele 2527,4833
Law Alter ::tele 2464,4834
Nature Alter ::tele 2398,4841
Gas hole ::tele 2464,4782
Edge of maze ::tele 2885,4550
Center of maze ::tele 2912,4576
Falador mine ::tele 3038,9800
::tele 3157 4822 = drill deamon camp

::tele 2477 4768 = frog cave

::tele 2596 4780 = freaky forester

::tele 2095 4428 = prison pete

::tele 1952 4764 = quiz show

::tele 2338 4747 = Lost and found

::tele 1960 4824 = Twarler Mini-Game

::tele 2015 4826 = twarler mini-game inside

::tele 1971 5001 = WIERD CHRUCH! NOT ON RUNESCAPE!

::tele 1928 5002 = Grave digger

::tele 2584 4838 = fire alter

::tele 2966 9633 = somekind of rat-hole never seen this

::tele 2929 9649 = dragon slayer mace

::tele 2907 9705 = quest place (dont remember (or newer seen) what quest)

::tele 2981 9914 = recipes goblin cook place

::tele 2916 9912 = heroes guild cave

::tele 2932 9848 = chaos druids

::tele 2898 9766 = baby bluedragons

::tele 3048 9582 = ice-warriors & giants

::tele 2977 9515 = recipes crabs

::tele 2973 9505 = recipe water "mini-quest"

::tele 2783 9574 = agility arena

::tele 2835 9562 = karamja lessers

::tele 1891 4947 = quest place (dont remember (or newer seen) what quest)

::tele 2007 4431 = x-mas workshop event wooot!

::tele 2400 4850 = nature altar!

::tele 3421 9622 = quest place (dont remember (or newer seen) what quest)

::tele 1865 5330 = recipe the lum kitchen when started recipe near the secret sky must check if it is possible to see in rs.

::tele 1860 5345 = same as above but no barrier & no chairs expet one why?

::tele 2393 4713 = i don't know prob: quest place (dont remember (or newer seen) what quest)

::tele 2385 4685 = have a relation to the place above what is that?

::tele 2525 4776 = evil bob's island

::tele 2633 4700 = quest place (dont remember (or newer seen) what quest)

::tele 2650 4565 = monkey sadness fight the jungle demon?

::tele 2650 4508 = monkey sadness the gnome glider puzzle!

::tele 3300 9825 = A Soul's Bane quest

::tele 3345 9715 = mage training arena (telegrab) ftw

::tele 3350 9680 = mage training arena (telegrab) ftw another one

::tele 3345 9712 = mage training arena (telegrab) ftw another one NOTE: if you see the same arenas try changin height level!

::tele 2152 5095 = Secret island

::tele 2721 4828 = water alter

::tele 2784 4840 = mind alter

::tele 2842 4835 = air alter

::tele 2898 4819 = rune essent mining

::tele 3029 4834 = abyss

::tele 2528 4833 = wierd alter

::tele 2471 4838 = law alter

::tele 1823 4835 = two ships

::tele 3105 3930 = mage arena

::tele 1894 5333 = secret sky

::tele 1865 5341 = recipie for desaster feast

::tele 3424 9891 = under passage way to canfis

::tele 3681 9889 = ecto plasm floor

::tele 2470 9899 = under gnomes grand tree

::tele 2319 9804 = i'bans trap drop

::tele 2856 3809 = slippery ice path

::tele 3551 9693 = barrows chest

::tele 3177 9753 = under draynore mannor

::tele 3040 9741 = faladore mining guild

::tele 3079 9505 = toturial mining

::tele 3110 9512 = toturial combat train

::tele 3232 2896 = top of piramid for desert tresure

::tele 3291 2764 = desert city

::tele 3298 9179 = under desert city

::tele 2861 3165 = volcano

::tele 2863 9570 = under volcano

::tele 2835 3268 = candor

::tele 2766 3277 = fishing docks

::tele 2446 10147 = daganoth cave ( go to "::tele 2446 9999" then keep walking the right direction then ul get there )

::tele 2438 5172 = volcano lava

::tele 2395 5154 = fight pits

::tele 3234 9896 = wierd place

::tele 3132 9909 = under edgevill

::tele 3233 9313 = under piramid at acent alter

::tele 3363 9639 = mage train up ( shapes )

::tele 3363 9637 = mage train up ( bones )

::tele 3365 9637 = mage train up ( alching )

::tele 3363 2984 = a desert city

::tele 2396 5093 = fight caves

::tele 3559 9895 = football traning corse

::tele 3541 9891 = jumping corse

::tele 3528 9871 = zip line

::tele 3539 9872 = jumping steps

::tele 3555 9947 = cave

::tele 2972 9507 = Under water

::tele 2545 4715 = mage arena room

::tele 2505 4707 = mage arena statues

::tele 3551 9712 = barrows coffins

::tele 2716 9816 = black king dragon

::tele 3487 9493 = kaphite queen place

::tele 2744 3444 = camalot flax

::tele 2273 4695 = king black drags

::tele 2516 4646 = daganoth quest place mother

::tele 2121 4918 = Draynor private from map

::tele 2142 4834 = cosmic alter

::tele 2134 4717 = slave cages ( look up to see them,,cannot be walked on )

::tele 2091 3210 = wierd grass land??


/*Guilds*/
rangeguild = 2657 3439
rangingguild = 2657 3439

fishguild = 2611 3393
fishingguild = 2611 3393

mineguild = 3016 3339
miningguild = 3016 3339

craftguild = 2933 3289
craftingguild = 2933 3289

heroguild = 2902 3510
herosguild = 2902 3510
heroesguild = 2902 3510

/*End Guilds*/

crystalchest = 2914 3450

/*Altars*/
deathaltar = 2207 4836
cosmicaltar = 2162 4833
chaosaltar = 2269 4843
mindaltar = 2796 4818
airaltar = 2845 4832
wateraltar = 2713 4836
earthaltar = 2660 4839
firealtar = 2584 4836
bodyaltar = 2527 4833
lawaltar = 2464 4834
naturealtar = 2398 4841

/*End Altars*/

falador = 2965 3380
goblinvillage = 2956 3506
druidscircle = 2926 3482
burthrope = 2926 3561

whitewolf = 2848 3498
catherby = 2815 3447
camelotcastle = 2758 3495
seersvillage = 2708 3492


barbagil = 2541 3546
grandtree1 = 2480 3488
grandtree2 = 2466 3490
treegnome = 2441 3429
westardy = 2535 3305
eastardy = 2659 3308
prifddinas = 2242 3278
elfcamp = 2197 3252
isafdar = 2241 3238
duelarena = 3360 3213
alkharid = 3288 3189
desertmine = 3286 3023
bedabincamp = 3171 3026
banditcamp = 3176 2987
pollnivneach = 3365 2970
pyramid = 3233 2901
sophanem = 3305 2755
uzer = 3490 3090
mortton = 3489 3288
canifis = 3506 3496
phasmatys = 3687 3502
fenkencastle = 3550 3548
digsite = 3354 3402
examcentre = 3354 3344
varrock = 3214 3424
barbvillage = 3081 3424
edgeville = 3093 3493

sarim = 3023 3208
rimmington = 2957 3214
draynor = 3093 3244
lumbridge = 3223 3218
fightarena = 2585 3150
gnomevillage1 = 2521 3177
gnomevillage2 = 2525 3167
khazard = 2665 3161
yanille = 2569 3098
monestary = 3051 3490
karamja = 2814 3182
crandor = 2851 3238
tutisland = 3123 3100
tzhaar = 2480 5175
mineess = 2911 4832
bobsiland = 2526 4777

membersdungeon = 2884 9798
dramentree = 2861 9736
karamjadungeon = 2843 9636
steeldragons = 2719 9433
bluedragons = 2591 9439
theogre = 2584 9737
shadowwarrior = 2705 9758
subwhitewolf = 2822 9882
gloryfountain = 2918 9895
spampdungeon = 3168 9572
barriwscenter = 3551 9693
canifis = 3477 9845
werewolfagil = 3549 9865
eledungeon = 2715 9889
blurite = 3007 9550
miniagil = 2759 9557
runerocks = 3061 3886
kalphites = 3485 9509
smokedungeon = 3207 9377
pyramid4 = 3233 9313
crashisland = 2893 2724
apeatoll = 2801 2704
marimpray = 2807 9201
marimcreate = 2764 9164
magedungeon = 2805 9142
kharazi = 2822 2911
jungledemon = 2657 4568
hangar = 2584 4516
gnomedungeon = 2596 4435
purplecrystal = 2792 4427
submage = 2538 4717
godpray = 2507 4718
lighttower = 2519 4642
bigdwarfs = 2776 10162
bigdwarfs2 = 2838 10126
bigdwarfs3 = 2923 10191
waterfall = 2534 3511
endwild = 3100 3957
eastbank = 3250 3423
varrock = 3210 3424
falador2 = 2964 3378
lumbridge = 3222 3218
camelot = 2757 3477
eardy2 = 2662 3305
wardy2 = 2529 3307
lathas = 2516 3369
gnomestrong = 2461 3443
kharid = 3293 3174
shantay = 3304 3116
kalphlair = 3226 3107
pyramid2 = 3233 2902
pollnivneach = 3359 2910
menaphos = 3274 2784
yanille = 2606 3093
gultanoth = 2516 3044
tutisland2 = 3094 3107
barbarins = 3082 3420
entrana = 2834 3335

coaltrucks = 2582 3481
gvillage = 2956 3506
stonehenge2 = 2926 3482
burth = 2926 3559
wwolf = 2848 3498
catherb = 2813 3447
seers = 2708 3492
barbyagil = 2541 3546
prifdinas = 2242 3278
elfcamp2 = 2197 3252
isafdar2 = 2241 3238
darena = 3360 3213
dminecamp = 3286 3023
bedcamp = 3171 3026
bandcamp = 3176 2987
soph = 3305 2755
uzerruins = 3490 3090
morton = 3489 3288
canif = 3506 3496
portp = 3687 3502
fenken = 3550 3548
dsite = 3354 3402
ecentre = 3354 3344
edgeville = 3093 3493

psarim = 3023 3208
rimm = 2957 3214
farena = 2585 3150
tgvill = 2525 3167
pkhazard = 2665 3161
monkies = 3051 3490
karamj = 2948 3147
crandor2 = 2851 3238
thekbd = 2717 9816
thebigkq = 3487 9493
thepass2 = 2337 9798
wiredwater = 2676 3008
karamja4memb = 2815 3182
meetjuna = 3251 9517
darkroom = 3206 9379
thepass1 = 2495 9715
magicarena = 3107 3937
aatoll = 2755 2784
jungledemonb = 2714 9183
jungledemont = 2703 9178
wagility = 3003 3934
keldagrim = 2937 9999
karamjaagil = 2761 9557
metaldragback = 2713 9459
metaldragfront = 2713 9564
desertpyramid = 3233 9315
thehangar = 2390 9886
fishplatform = 2782 3273
boatcrash = 2795 3321
legendsjungle = 2772 9341
tzhaar2 = 2480 5175
mineess2 = 2911 4832
morningsend = 2044 4649
dwarfs = 2035 4529
kbdlair = 2273 4695
elvenforest = 2309 4597
goldmine = 2358 4959
initiate = 2443 4956
shadowguys = 2738 5081
barrowstop = 3564 3288
barrowstunnel = 3568 9695
barrowschest = 3551 9694
cwbank = 2441 3090
castlewars = 2400 3103
bluedrags = 2910 9801
blackdemons = 2860 9775
hellhounds = 2867 9844
blackdrags = 2829 9826

legends2 = 2377 4705
magearena = 2519 4719
scaperune = 2525 4776
forester = 2602 4775
theisland = 2527 4547
fremmymaze = 2652 9999

quizgame = 1952 4768
trawler = 2013 4820
sunktrawler = 1951 4825
emptytrawler = 1886 4830
mimestage = 2008 4762
draynor = 2130 4913
gameroom = 2196 4961
gashole = 2464 4782
shilo = 2827 2995
karamja1 = 2973 2890
karamja2 = 2973 2910
greater = 3288 3886
wildpalace = 3288 3886
slayertower = 3428 3535
misc = 2512 3860

party = 2739 3472
rellaka = 2659 3661



How to make Shops and Add items to them with prices

Alright lets start off with Shops.
If you want to make a shop yourself you would have to do 6 things:
1. Find a NPC that does not have a Combat level or HP, Lets use Horvik His ID is "549"
2. Spawn the NPC where you would like him "You can do this in spawn-config.cfg"
3. Creating the shop.
4. Adding items to the shop.
5. Making the NPC work when you click him.
6. Setting up the prices for the items.

Okay, Go to spawn-config.cfg. You should see something like this.



spawn = 1   2855   9637   0   1   1   3   5   Man



Remember to use Tabs after the NPC ID.

Now I'm going to try and help you learn what this means,
spawn = 1 " This means what is going to spawn in the game and the "1" means what npc ID you will be using to spawn. 2855 and 9637 is the Coords for that npc to be spawned, So you need to find a place to put that npc. "0" means height level so if you want the npc in a second floor building you will put 1 not 0, this also works for height 2,3,so on. Now the "1" means if you want the npc to walk around and 0 means the npc does not walk, There is more like south,east,west,north too but some servers don't have it, If you do then this is the setup for that 2-North, 3-South, 4-East, 5-West. The next "1" stands for maxhit so if you want your npc hitting 50s or 5s then put in "5". Now the "3" is attack, If you want your npc hitting a lot then put it around 70-120 if you do not want that npc hitting a lot then pick it under 50. Now the "5" means defence, This is use for the npcs defence level as if you don't want the npc getting hit all the time put it around 50-70 if not make it around 10-30. Last thing is the name of the npc, You don't need to put a name there but it's good to have it so when you look for the npc it will be there. Alright we have a npc spawned now! Lets move on to the nexr part. Making the npc into a shop, To do this you need to open up shops.cfg and look for a id that is not in use, Like so



shop = 17   Mage_Shop   2   2


Okay I'm going to show you how to do this part.
Shop = 17, when doing this part you need to put shop lower case and tab and = and tab and the ID of the shop, Remember that you can't use to of the same ids for a shop so make sure to find a ID that is not in use. Now do tab, now we are going to name the shop, When naming the shop make sure to put a _ when you space it out like Mage_Shop Also you can add this @yel@ to make the name a colour in the shop, Just remember to use @ when doing this. so it would look like @yel@Mage_Shop ,Alright tab again now put in 2 then tab 2. There you go you made a shop but were not done yet, Now if you want to add items to the shop you need to use tab then the ID of the item then tab then how much you want of that item in the shop. So like this.


shop = 17   @yel@Mage_Shop   2   2   6889   1


Okay now your shop is ready but not fully done. Lets move on to the next part.
Now look for ActionHandler.java and Hold Ctrl+F and search for c.getShops().openShop now you will see something like this.



      case 549:
               c.getShops().openShop(17);
      break;


Do remember that the numbers wont be the same as yours. Okay, Now when you found this I'm going to show you how it's done. The case is needed to start this so don't forget it, then put in the NPC ID then make sure to use a ":" at the end and hit enter. Now put in
c.getShops().openShop(##); and change the ## to the Shop ID you are using from the shop File and hit enter. Now make sure to add this or you will get errors, Add break; then your done. You made a npc into a shop! Good job! But we are not done yet.

Now setting up the prices for the items. Open up prices and you should see something like this.



4151 1600


Now this part is pretty easy, The first numbers 4151 is the Item ID and the 1600 is the price of the item so 4151 is 1,600coins Also make sure to space them out or you will get some big errors. Okay that's it to making a shop and I hope this helped you out and understanding how things work, Also if you want to see more just look at my other guide's!




Making Ladders and stairs work

Okay so second tutorial, Now this is maybe a 2/10 if your new to this but don't worry I'll be here showing you how it's done!

The files we are going to be using is..
-ActionHandler.java

Okay lets start! Alright first open your ActionHandler.java and Hold Ctrl+F search switch(objectType) { ,Now below that your going to make a new case with the ID of the ladder or stair you want to use, Now before this you need to find the ID of the ladder or stair you want to use and make work. When you got that then lets move on with the tutorial. Now this can be a bit tricky sometimes so follow. I'm going to show you what it should look like.



      case ####: //Name
          if (obX == #### && obY == ####) {
            c.getPA().movePlayer(####, ####, #);
         }
         break;



Okay, Now the first set of #### is the ID of the object and when you click on the object aka Stairs or ladder you will get the ID this only works if your owner on the server! Okay all you need to do is add the ID there moving on. Now with the Name part you don't need this if you don't want it but I use them for easy searching just remember to put the too // then name or the server will read the name and make errors. Now the obX #### is the X coords of the object do remember this is not the teleport coords this is use for making the server read that you want to use this Object for teleporting. Now the obY #### Y coords for the object, Pick both of them in and now should look something like this..




      case 1738: //Stairs
          if (obX == 3255 && obY == 3421) {
            c.getPA().movePlayer(####, ####, #);
         }
         break;




Okay Now your about to be done with this, Now you need the coords for where the player will go, So if your adding the ladder to go up a level then get the coords of were your standing and do ::tele X Y H Something like this ::tele 6868 6868 1 ,Okay now that you have the coords for place you want them going you now need to put the X coords in the first #### then Y coords in the second #### and the H level in the last #. Alright you got it going up but now you need it going down, Just redo this over again and your done also I'm going to show you something that is useful,




      case 1738: //Stairs
          if (obX == 3255 && obY == 3421) {
            c.getPA().movePlayer(3255, 3420, 1);
         } else if (obX == 3237 && obY == 3447) {
            c.getPA().movePlayer(3239, 3447, 1);
         } else if (obX == 3258 && obY == 3487) {
            c.getPA().movePlayer(3258, 3487, 1);
         } else if (obX == 3144 && obY == 3447) {
            c.getPA().movePlayer(3143, 3448, 1);
         }
         break;





Now the } else if is use to add more of the same Object IDs in that case as your going to run into a lot of the same ladder or stair IDs so if you look at this you will see what I mean.





      case 1738: //Stairs
          if (obX == 3255 && obY == 3421) {
            c.getPA().movePlayer(3255, 3420, 1);
         } else if (obX == 3237 && obY == 3447) {
            c.getPA().movePlayer(3239, 3447, 1);
         } else if (obX == 3258 && obY == 3487) {
            c.getPA().movePlayer(3258, 3487, 1);
         } else if (obX == 3144 && obY == 3447) {
            c.getPA().movePlayer(3143, 3448, 1);
         [color=green]}[/color]
         break;




This is what you would do if you want to add more ladders that had the same ID also
Never forget that last "}" as seen up there.




Setting up Dialogues

Okay, 3rd Guide now. Now this may get a bit hard but I'm sure you can do it!
This Guide is maybe a 4/10, Now the Files you will be using is.


-DialogueHandler.java
-ActionHandler.java
-Clickingbuttoms.java




Okay lets start off in DialogueHandler.java, Now Hold Ctrl+F search switch(dialogue) { and Below that you should see some case's okay, I'm going to show you what your going to be adding..



   case ###:
         sendNpcChat2("Talking", "Talking", c.talkingNpc, "Npc Name");
         c.nextChat = ###;
      break;



Okay, Now there is many ways to do this but I like this way more, Okay now when adding numbers for the case part you need a number that is not in used so something like 200+ should be good. Now for sendNpcChat2, Now you can only have up to 4 chat lines for a npc but you can add more next chats for the npc so like a story line kinda but if you want 4 lines then you change the sendNpcChat2 to sendNpcChat4 and add ", " after your done writing whatever you want in the " " but make sure not to go over 4 lines! okay, nwo the c.talkingNpc, "Npc Name"); is who will be talking in the Pop box interface at the top.
Now the next line is the next case like case ###: above, So when you get it done You should have it like this.




          case 458:
         sendNpcChat2("Buy me a drink.", "", c.talkingNpc, "Dr Harlow");
         c.nextChat = 459;
      break;




Now see how I never added a line 2 well you can do this and never do sendNpcchat1 as you will get some errors as I have in my time from that, So it's better off just leaving the second line blank. Now making a line 2 is just like this.





   case 459:
         sendNpcChat2("I think you've had enough", "", c.talkingNpc, "Player");
         c.nextChat = 0;
      break;



Okay, See how I added the next case but with 459: now these are ID case's not NPC IDS.
There is many ways to do player talking back to the NPC but I like it like that. Now you will see that c.nextChat = 0; is "0" This means that the chat will end for that npc but if I wanted to add something like a Option menu like Runescape I would need to do this




   case 459:
         sendNpcChat2("I think you've had enough", "", c.talkingNpc, "Player");
         c.nextChat = 460;
      break;




Then start up a Option dialogue like so




               case 460:
         sendOption2("No buy me more", "Sorry, I need to leave now..");
         c.dialogueAction = 233;
      break;


Okay, Now from the last one you will see the nextChat is 460 and you see from this one it's case 460: Now you need to set this up a bit new now, we are done with sendNpcChat2
and now moving on the Option send. Now the c.dialogueAction is what we use to make the dialouge go to the clickingbuttoms file, Now you need to pick a number that is not in use with the c.dialogueAction = 233; So I picked 233 for it as I'm not using that number.

Okay now your going to need to setup a sendNpcChat for the No buy me more and Sorry, I need to leave now.. When your done with that open ActionHandler.java Hold Ctrl+F search public void firstClickNpc(int npcType) { and below, Okay, Now you need to add the first dialogue ID you made in the dialogue file, So for me it would be..



         case 645:
            c.getDH().sendDialogues(458, npcType);
         break;


Okay let me try to say how this is setup, The Case 645: is the Npc ID of the npc you want to talk and send the Options. The 458 is the Dialogue ID we use in the dialogue file. Remember you need to use the first dialogue ID you made to start the chat. NpcType is use to check the Npcs if I'm for sure, Some servers is i for that. Okay, Were done now with that now time to Compile and check for errors or not if you didn't get any errors move on to the next part. Okay go into the game and look for the npc you put the dialogues on and when you get to the option part click both on them and look in your Cmd and you should see something like Yourusername - actionbutton: ####, Now this part is where clickingbuttoms come into use, Go over to your clickingbuttoms.java Hold Ctrl+F search the numbers you seen in the Cmd also Cmd is your run.bat or server run file and now you found the case needed for the option part, Okay you should see something like this now..




case ####:
            if (c.dialogueAction == 2)
               c.getPA().startTeleport(2884, 3395, 0, "modern");
            if (c.dialogueAction == 3)
               c.getPA().startTeleport(3243, 3513, 0, "modern");
            if (c.dialogueAction == 4)
               c.getPA().startTeleport(2444, 5170, 0, "modern");
            if (c.dialogueAction == 20) {
               c.getPA().startTeleport(2897, 3618, 12, "modern");
            }
            if (c.dialogueAction == 88) {
               c.getDH().sendDialogues(487, 946);
            }
            if(c.dialogueAction == 101) {
               c.getDH().sendDialogues(21, 946);
            }
            if (c.dialogueAction == 201) {
               c.getDH().sendDialogues(464, 946);
            }
            if (c.dialogueAction == 202) {
               c.getDH().sendDialogues(477, 946);
            }
            if(c.dialogueAction == 100) {
               c.getGamble().gambleBlackJack(c);
            }   
         break;



Okay now your going to add this into the case menu,



                                }
            if (c.dialogueAction == ###) {
               c.getDH().sendDialogues(###, ###);
                                }



Okay now were you see the first ### Is the DialogueAction you use for the sendOption dialogue so my was, c.dialogueAction = 233; So I would add a 233 there, Now the second ###
Is the Next Dialogues chat you want the option to go to so my would be 461 and the last ### is the Npc ID. Okay, Now you need to do the same thing for the other actionbutton: ####, Then your done, You made a Npc talking with Options Also Some people do this in other ways also but I do it like this.

Also before I end this Guide I would like to show you some other things you can do with the Options.




                                }
            if (c.dialogueAction == ###) {
               c.getPA().movePlayer(####, ####, #);
                                }


With the c.getPA().movePlayer you can Teleport players with the option with the npcs
So just replace the first #### with the X coords and the other one with the Y coords.


How to jar a client


Alright Going to show you how to Make a .jar file!
First off your going to need to download Jar maker

[ Register or Signin to view external links. ]

To start things off make sure to change the IPs in your client folder to the no-ip or whatever you use.

Okay, run the file.
Now time to start the tutorial.
This is maybe a 2/10
Alright first go to Output File and set it to your Desktop, Alright good now lets move on
Click on Input Directory and make sure your client in on your Desktop, Find your Client and you will see 2 Folders alright some servers use Java folder and some use Class folder,
for my server I use Class folder so click on the class folder and now you should see a folder called sign, click it once and click ok. Now You should see something called application.jar Delete it and put your server name then .jar now go to Manifest Template and In Main-Class: Put client <-- Must be lower case! when your done that click Set Manifest. Now Click Create JAR! then your done!




How to setup drops and drop Rates


Okay, This is maybe 1/10 to do.
Files needed
-NPCDrops.tsm

Okay, To start this off here is what you will be adding..




#NPCNAME
####:##   ###:#
###:#   ###:#



Okay, The first part with #NPCNAME is the name of the npc you want to add drops.
The second ####:## Is the NPC ID then The Rate drop. The next one is ###:# The first one is Item ID then how much of that item drops same with the last 2 but the last too is the rare items that will be hard to get. So when your done that it should look like this,



#Fareed
1977:70   526:1
985:1   987:1


See how I got the name then the NPCs ID and the Drop Rate "Drop rate works as Up is hard and down is Not. Then the item that will drop all the time and how much of it, Then the Rare item that will drop sometimes and how much of it. That's about it for that.



How to setup Doors with Levels needed or Items and Making them open

Okay this is about 3/10
Files needed
-doors.cfg
-ActionHandler.java


Now there is 2 ways you can do this, If you want the door to use a key like the brass key in RS then that will take sometime if you just want the doors to open then that wont take much time, But I'm going to start off with opening doors. Go into your doors.cfg
You should see something like this..



door = 3206   3472   0   1   0


Okay 3206 3472 is the coords you need, You can get the coords by clicking the door, okaying now the 0 means Height so the Height level where you want the door to open.
The 1 means the Face, Even myself I'm not 100% sure about that one so it's better off with "1". 0 means the door will be closed and you can change it to a 1 then it will be open.
Now that you have that setup you need to add the door ID into the ActionHandler.java so the server knows to open the door. Go into ActionHandler Hold Ctrl+F search Server.objectHandler.doorHandling(objectType, c.objectX, c.objectY, 0); you should see something like this..





         // DOORS
      case 1530:
      case 1531:
      case 1533:
      case 1517:
      case 1553:
      case 1551:
      case 2712:
      case 1536:
      case 1512:
      case 1519:
      case 2399:
      case 2051:
      case 2050:
      case 2032:
      case 2398:
      case 1528:
      case 1805:
      case 1516:
      case 1534:
      case 11712:
      case 11711:
      case 11707:
      case 11708:
      case 6725:
      case 3198:

      case 3197:
         Server.objectHandler.doorHandling(objectType, c.objectX, c.objectY, 0);   
         break;





Okay now that you see this you need to add the case then the door ID then : like so,
case 1530: and you need to do that with every new Door ID, You can get the door ID by clicking on the doors.

Okay second way of doing this is, Using teleports kinda the same way I did with the ladders and stairs, So this is what you will be adding..





      case ####: //Door
         if(obX == #### && obY == #### && c.getItems().playerHasItem(###, #)) {
            c.getPA().movePlayer(####, ####, #);
            c.getItems().deleteItem(###, #);
         } else if (obX == #### && obY == ####) {
            c.getDH().sendDialogues(###, #);
         }
         break;



[align=center]Okay the first thing you need to do is look for switch(objectType) { In ActionHandler
Then below that you need to add that code. Now let me try to say how this works,
The case is the Door ID Then the obX and obY is the coords of the door and the playerHasItem is what makes it that you need that item to get inside the door and the morePlayer teleports the player inside if he has the item on him and the c.getItems().deleteItem(###, #); is what deletes the item when he enters. Then the } else if (obX == #### && obY == ####) { is the coords of the same door and this makes it if the player does not have the item he will get a msg from c.getDH().sendDialogues(###, #); that you will have added, And then your done a door that reqs a item to enter. So when your done it should look something like this..
[/align]




      case 1804: //Door
         if(obX == 3115 && obY == 3450 && c.getItems().playerHasItem(983, 1)) {
            c.getPA().movePlayer(3115, 3450, 0);
            c.getItems().deleteItem(983, 1);
         } else if (obX == 3115 && obY == 3450) {
            c.getDH().sendDialogues(552, 0);
         }
         break;




This can also be use for Objects like crates and stuff like the create in Varrock..




      case 6839: //Buy crate in Varrock
         if(obX == 3226 && obY == 3413 && c.getItems().playerHasItem(995, 3)) {
            c.getDH().sendDialogues(550, 0);
            c.getItems().addItem(2518, 1);
            c.getItems().deleteItem(995, 3);
         } else if (obX == 3226 && obY == 3413) {
            c.getDH().sendDialogues(551, 0);
         }
         break;



Now for level req the same as above just one line needed..



      case ####: //
         } else if (obX == #### && obY == ####) {
         if (c.playerLevel[##] >= ##) {
         }
         break;


So I hope this tutorial help you out and Hope you the best with this!



How to add a yell when someone gets 99

Alright this is maybe a 2/10
Go into PlayerAssistant.java Hold ctrl+F search public void levelUp(int skill) {
Then replace the Void with..



public void levelUp(int skill) {
      int totalLevel = (getLevelForXP(c.playerXP[0]) + getLevelForXP(c.playerXP[1]) + getLevelForXP(c.playerXP[2]) + getLevelForXP(c.playerXP[3]) + getLevelForXP(c.playerXP[4]) + getLevelForXP(c.playerXP[5]) + getLevelForXP(c.playerXP[6]) + getLevelForXP(c.playerXP[7]) + getLevelForXP(c.playerXP[8]) + getLevelForXP(c.playerXP[9]) + getLevelForXP(c.playerXP[10]) + getLevelForXP(c.playerXP[11]) + getLevelForXP(c.playerXP[12]) + getLevelForXP(c.playerXP[13]) + getLevelForXP(c.playerXP[14]) + getLevelForXP(c.playerXP[15]) + getLevelForXP(c.playerXP[16]) + getLevelForXP(c.playerXP[17]) + getLevelForXP(c.playerXP[18]) + getLevelForXP(c.playerXP[19]) + getLevelForXP(c.playerXP[20]));
      sendFrame126("Total Lvl: "+totalLevel, 3984);
      switch(skill) {
         case 0:
         sendFrame126("Congratulations, you just advanced an attack level!", 6248);
         sendFrame126("Your attack level is now "+getLevelForXP(c.playerXP[skill])+".", 6249);
         c.sendMessage("Congratulations, you just advanced an attack level.");   
         sendFrame164(6247);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Attack!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 1:
            sendFrame126("Congratulations, you just advanced a defence level!", 6254);
            sendFrame126("Your defence level is now "+getLevelForXP(c.playerXP[skill])+".", 6255);
            c.sendMessage("Congratulations, you just advanced a defence level.");
         sendFrame164(6253);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Defence!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 2:
            sendFrame126("Congratulations, you just advanced a strength level!", 6207);
            sendFrame126("Your strength level is now "+getLevelForXP(c.playerXP[skill])+".", 6208);
            c.sendMessage("Congratulations, you just advanced a strength level.");
         sendFrame164(6206);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Strength!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 3:
            sendFrame126("Congratulations, you just advanced a hitpoints level!", 6217);
            sendFrame126("Your hitpoints level is now "+getLevelForXP(c.playerXP[skill])+".", 6218);
            c.sendMessage("Congratulations, you just advanced a hitpoints level.");
         sendFrame164(6216);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Hitpoints!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 4:
            sendFrame126("Congratulations, you just advanced a ranged level!", 5453);
            sendFrame126("Your ranged level is now "+getLevelForXP(c.playerXP[skill])+".", 6114);
            c.sendMessage("Congratulations, you just advanced a ranging level.");
         sendFrame164(4443);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Range!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 5:
            sendFrame126("Congratulations, you just advanced a prayer level!", 6243);
            sendFrame126("Your prayer level is now "+getLevelForXP(c.playerXP[skill])+".", 6244);
            c.sendMessage("Congratulations, you just advanced a prayer level.");
         sendFrame164(6242);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Prayer!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 6:
            sendFrame126("Congratulations, you just advanced a magic level!", 6212);
            sendFrame126("Your magic level is now "+getLevelForXP(c.playerXP[skill])+".", 6213);
            c.sendMessage("Congratulations, you just advanced a magic level.");
         sendFrame164(6211);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Magic!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 7:
            sendFrame126("Congratulations, you just advanced a cooking level!", 6227);
            sendFrame126("Your cooking level is now "+getLevelForXP(c.playerXP[skill])+".", 6228);
            c.sendMessage("Congratulations, you just advanced a cooking level.");
         sendFrame164(6226);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Cooking!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 8:
         sendFrame126("Congratulations, you just advanced a woodcutting level!", 4273);
         sendFrame126("Your woodcutting level is now "+getLevelForXP(c.playerXP[skill])+".", 4274);
         c.sendMessage("Congratulations, you just advanced a woodcutting level.");
         sendFrame164(4272);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Woodcutting!", "Global Chat", 2);
               }
            }
         }
            break;
         
                                               case 9:
            sendFrame126("Congratulations, you just advanced a fletching level!", 6232);
            sendFrame126("Your fletching level is now "+getLevelForXP(c.playerXP[skill])+".", 6233);
            c.sendMessage("Congratulations, you just advanced a fletching level.");
         sendFrame164(6231);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Fletching!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 10:
            sendFrame126("Congratulations, you just advanced a fishing level!", 6259);
            sendFrame126("Your fishing level is now "+getLevelForXP(c.playerXP[skill])+".", 6260);
            c.sendMessage("Congratulations, you just advanced a fishing level.");
         sendFrame164(6258);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Fishing!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 11:
         sendFrame126("Congratulations, you just advanced a fire making level!", 4283);
         sendFrame126("Your firemaking level is now "+getLevelForXP(c.playerXP[skill])+".", 4284);
         c.sendMessage("Congratulations, you just advanced a fire making level.");
         sendFrame164(4282);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Fire Making!", "Global Chat", 2);
               }
            }
         }
            break;
         
                                                case 12:
         sendFrame126("Congratulations, you just advanced a crafting level!", 6264);
         sendFrame126("Your crafting level is now "+getLevelForXP(c.playerXP[skill])+".", 6265);
         c.sendMessage("Congratulations, you just advanced a crafting level.");
         sendFrame164(6263);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Crafting!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 13:
         sendFrame126("Congratulations, you just advanced a smithing level!", 6222);
         sendFrame126("Your smithing level is now "+getLevelForXP(c.playerXP[skill])+".", 6223);
         c.sendMessage("Congratulations, you just advanced a smithing level.");
         sendFrame164(6221);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Smithing!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 14:
         sendFrame126("Congratulations, you just advanced a mining level!", 4417);
         sendFrame126("Your mining level is now "+getLevelForXP(c.playerXP[skill])+".", 4438);
         c.sendMessage("Congratulations, you just advanced a mining level.");
         sendFrame164(4416);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Mining!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 15:
            sendFrame126("Congratulations, you just advanced a herblore level!", 6238);
            sendFrame126("Your herblore level is now "+getLevelForXP(c.playerXP[skill])+".", 6239);
            c.sendMessage("Congratulations, you just advanced a herblore level.");
         sendFrame164(6237);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Herblore!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 16:
         sendFrame126("Congratulations, you just advanced a agility level!", 4278);
         sendFrame126("Your agility level is now "+getLevelForXP(c.playerXP[skill])+".", 4279);
         c.sendMessage("Congratulations, you just advanced an agility level.");
         sendFrame164(4277);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Agility!", "Global Chat", 2);
               }
            }
         }
            break;
         
         case 17:
         sendFrame126("Congratulations, you just advanced a thieving level!", 4263);
         sendFrame126("Your theiving level is now "+getLevelForXP(c.playerXP[skill])+".", 4264);
            c.sendMessage("Congratulations, you just advanced a thieving level.");
         sendFrame164(4261);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Thieving!", "Global Chat", 2);
               }
            }
         }
         break;
         
         case 18:
         sendFrame126("Congratulations, you just advanced a slayer level!", 12123);
         sendFrame126("Your slayer level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
         c.sendMessage("Congratulations, you just advanced a slayer level.");
         sendFrame164(12122);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Slayer!", "Global Chat", 2);
               }
            }
         }
            break;
                                                case 19:
         sendFrame126("Congratulations, you just advanced a farming level!", 12123);
         sendFrame126("Your farming level is now "+getLevelForXP(c.playerXP[skill])+".", 12124);
         c.sendMessage("Congratulations, you just advanced a farming level.");
         sendFrame164(12122);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Farming!", "Global Chat", 2);
               }
            }
         }
            break;

                                                case 20:
         sendFrame126("Congratulations, you just advanced a runecrafting level!", 4268);
         sendFrame126("Your runecrafting level is now "+getLevelForXP(c.playerXP[skill])+".", 4269);
         c.sendMessage("Congratulations, you just advanced a runecrafting level.");
         sendFrame164(4267);
         if(getLevelForXP(c.playerXP[skill]) == 99) {
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
               if (Server.playerHandler.players[j] != null) {
                  Client c2 = (Client)Server.playerHandler.players[j];
                  c2.sendClan("SERVER", c.playerName+" just advanced to "+getLevelForXP(c.playerXP[skill])+" Runecrafting!", "Global Chat", 2);
               }
            }
         }
            break;
      }
      c.dialogueAction = 0;
      c.nextChat = 0;
   }






Then your done that.



Fixing Attack and Dead anims for npcs

Okay, To start this off this is 1/10
And the files needed
-NpcHandler.java
Also you need 602 Animations/Npcs


First go into NpcHandler.java Hold ctrl+F search public static int getAttackEmote(int i) {
Then you will see some case's below, Now you need the Animations for this I'll show you what you will be adding and how it works.



case ####: //NPCNAME
return ####;


Okay so the case ####: is the Npc ID the //NPCNAME is the name of the npc then return ####; is the Animtion for the npc, I have a list of Animtions for you too at the bottom of the guide. So when you add in the code it should look like this..



case 8528: //Nomad
return 12697;


Now remember you may have some of the NPC IDS in here so you will have to replace them or remove them. This is the same setup for public int getDeadEmote(int i) { in the file, This means you get the Animtions for the getdead. So in other words when they die..
Here is the list.


public static int getAttackEmote(int i) {

      case 1219://Leech
         return 1273;
      case 2031://Bloodwyrm
         return 2070;
      case 134: case 58://Spider
         return 5327;
      case 2034://Crypt Spider
         return 6249;
      case 6379: case 6380://Giant and Worker/Soldier
         return 7237;
      case 6046://Giant Wolf
         return 6559;
      case 1198://Dire Wolf
         return 6559;
      case 5414://Animated Spade
         return 5597;
      case 1832: case 5750://Cave Bugs
         return 6079;
      case 63://Red spider
         return 5327;
      case 6363://Zamorak Warrior
         return 390;
      case 6365://Zamorak Ranger
         return 426;
      case 111://Ice Giant
         return 4672;
      case 5361://Waterfiend
         return 299;
      case 188://Monk of zamorak
         return 422;
      case 7138://Dag'Hai Monk
         return 422;
      case 5386://Skeleton
         return 5487;
      case 1961://Mummy
         return 5549;
      case 5413://Possesed Pickaxe
         return 5591;
      case 9172://Aquanite
         return 12041;
      case 4382://Ankou
         return 422;
      case 1624://Dust Devil
         return 1557;
      case 1019://Fire Elemental
         return 1029;
      case 124://Earth Warrior
         return 393;
      case 1203://Tyras Guard
         return 414;
      case 1976://Shadow Hound
         return 6565;   
      case 2745://Jad
         if (npcs[i].attackType == 1)
            return 9276;
         if (npcs[i].attackType == 2)
            return 9300;
         else
            return 9277;   
      case 8133://Corporeal Beast
         if (npcs[i].attackType == 2)
            return 10053;
         else if (npcs[i].attackType == 1)
            return 10059;
         else if (npcs[i].attackType == 0)
            return 10057;
      case 6715://Revenant Imp
         if (npcs[i].attackType == 1)
            return 7517;
         else
            return 7407;
      case 6687://Revenant Cyclops
         if (npcs[i].attackType == 1)
            return 7510;
         else
            return 7403;
      case 6688://Revenant Hellhound
         if (npcs[i].attackType == 1)
            return 7514;
         else
            return 7460;
      case 6680://Revenant Demon
         if (npcs[i].attackType == 1)
            return 7512;
         else
            return 7474;
      case 6713://Revenant Ork
         if (npcs[i].attackType == 1)
            return 7518;
         else
            return 7411;   
      case 6691://Revenant Dark Beast
         if (npcs[i].attackType == 1)
            return 7515;
         else
            return 7467;
      case 6692://Revenant Knight
         if (npcs[i].attackType == 1)
            return 7522;
         else
            return 7441;   
      case 8528://Nomad
         return 12697;
      case 3847://Sea Troll Queen
         return 3992;      
      case 3340://Giant Mole
         return 3312;   
      case 2881://Dagannoth Supreme
         return 2855;
      case 2882://Dagannoth Prime
         return 2854;
      case 2883://Dagannoth Rex
         return 2851;   
      case 8349://Tormented Demon
         return 10922;
      case 2028://Karil
         return 2075;   
      case 2025://Ahrim
         return 729;
      case 2026://Dharok
         return 2067;
      case 2027://Guthan
         return 2080;
      case 2029://Torag
         return 0x814;
      case 2030://Verac
         return 2062;
      case 6260://General Graardor
         if (npcs[i].attackType == 2)
            return 7063;
         else if (npcs[i].attackType == 1)
            return 7063;
         else if (npcs[i].attackType == 0)
            return 7063;      
      case 6261://Sergeant Strongstack
      case 6263://Sergeant Steelwill
      case 6265://Sergeant Grimspike
         return 6154;
      case 6222://Kree'arra
         return 3505;
      case 6225://Flockleader Geerin
         return 6953;
      case 6223://Wingman Skree
         return 6952;
      case 6227://Flight Kilisa
         return 6954;
      case 6247://Commander Zilyana
         return 6964;
      case 6248://Starlight
         return 6376;
      case 6250://Growler
         return 7018;
      case 6252://Bree
         return 7009;         
      case 4291: case 4292://Cyclops
         return 4652;
      case 1600://Cave Crawler
         return 266;
      case 1631://Rock Slug
         return 9506;
      case 1620://Cockatrice
         return 7762;
      case 1633://Pyrefiend
         return 8080;
      case 7799: case 1616://Basilisk
         return 260;
      case 1637: case 1638: case 1639: case 1640://Jellies
         return 8569;      
      case 7800: case 1611: case 1626://Turoth
         return 9476;
      case 7797: case 7805: case 1608://Kurask
         return 9439;
      case 1657: case 7640: case 7641: case 1648://Crawling Hands
         return 9125;
      case 7786: case 7793://Banshee's
         return 9449;
      case 1643: case 1644: case 1645: case 1646: case 1647://Infernal Mage's
         return 7183;
      case 7642: case 7643:case 1618://Bloodveld's
         return 9102;
      case 1604://Abbarent Spectre
         return 9466;
      case 1610://Gargoyle
         return 9454;
      case 1613://Nechryael
         return 9487;
      case 1615://Abyssal Demon
         return 1537;
      case 2783://Dark Beasts
         return 2731;         
      case 90://Skeleton   
         return 12632;
      case 103://Ghost
         return 5540;
      case 181: case 193: case 2547: case 7105://Chaos Druids
         return 7182;
      case 78://Giant Bat's
         return 4915;
      case 2698://Black Knight
         return 422;
      case 127://Magic Axe
         return 185;
      case 4697://Lesser Demon
         return 4629;      
      case 119://Chaos Dwarf
         return 99;
      case 52: case 51: case 1589://Baby Dragons
         return 25;
      case 53: case 54: case 55: case 941: case 1590: case 1591: case 1592: case 5363://Dragons
         return 80;      
      case 84://Black Demon
         return 64;
      case 49: case 1575: case 3586://Hellhounds
         return 6579;
      case 110: case 1583: case 1584: case 1586: case 10755://Fire Giant's
         return 4667;
      case 112: case 1587: case 1588: case 1681: case 4688: case 4706://Moss Giant's
         return 4658;
      case 77://Zombie's
         return 5568;
      case 86: case 87: case 88://Rat's
         return 4933;
      case 125://Ice warrior
         return 391;         
      case 912: case 913: case 914://Battle Mage's
         return 811;
      case 172: case 174: case 3242: case 3243: case 3244: case 3245: case 8871: case 8872: case 8874://Dark Wizzard's
         return 422;
      case 1317: case 2236://Market Guard
         return 390;
      case 1265: case 2452://Rock Crab's
         return 1312;
      case 1184: case 1183://Elf Warrior's
         return 428;
      case 3252://Barbarian
         return 2067;
      case 1092://White Knight
         return 7042;
      case 81://Cow
         return 245;
      case 101://Goblin
         return 6184;         
      case 41://Chicken
         return 5387;
      case 9: case 15://Guards, Warrior Woman
         return 386;   
      case 189: case 190://Monk of zamorak
         return 422;      
      case 89: case 1328: case 6823://Unicorns
         return 6376;
      case 2455: case 1351: case 2454: case 9089: case 9092: case 9107://Dagannoth's
         return 1342;      
      case 2889://Rock Lobster
         return 2859;   
      case 1156: case 1154: case 1157://Kalphite's
         return 6241;
      case 3200://Chaos Elemental
         return 3146;      
      case 1158://Kalphite Queen
         return 6231;
      case 50://King Black Dragon
         return 81;               
      case 6203://K'ril
         if (npcs[i].attackType == 0)
            return 6945;
         else
            return 6947;


public int getDeadEmote(int i) {

      case 1219://Leech
         return 1272;
      case 2031://Bloodwyrm
         return 2073;
      case 134: case 58://Spider
         return 5329;
      case 2034://Crypt Spider
         return 6251;
      case 6379: case 6380://Giant and Worker/Soldier
         return 7238;
      case 6046://Giant Wolf
         return 6558;
      case 1198://Dire Wolf
         return 6558;
      case 5414://Animated Spade
         return 5596;
      case 1832: case 5750://Cave Bugs
         return 6081;
      case 63://Red spider
         return 5329;
      case 6363://Zamorak Warrior
         return 836;
      case 6365://Zamorak Ranger
         return 836;
      case 111://Ice Giant
         return 4673;
      case 5361://Waterfiend
         return 300;
      case 188://Monk of zamorak
         return 836;
      case 7138://Dag'Hai Monk
         return 836;
      case 5386://Skeleton
         return 5491;
      case 1961://Mummy
         return 5555;
      case 5413://Possesed Pickaxe
         return 5592;      
      case 9172://Aquanite
         return 12039;
      case 4382://Ankou
         return 836;
      case 1624://Dust Devil
         return 1558;
      case 1019://Fire Elemental
         return 1031;
      case 124://Earth Warrior
         return 836;
      case 1203://Tyras Guard
         return 836;
      case 1976://Shadow Hound
         return 6564;
      case 8528://Nomad
         return 12694;      
      case 5666://Barrelchest
         return 5898;
      case 7133://Bork
         return 8756;
      case 3340://Giant Mole
         return 3310;
      case 8349://Tormented Demon
         return 10924;      
      case 2881://Dagannoth Supreme
      case 2882://Dagannoth Prime
      case 2883://Dagannoth Rex
         return 2856;      
      case 6247://Commander Zilyana
         return 6965;      
      case 6248://Starlight
         return 6377;
      case 6250://Growler
         return 7016;   
      case 6252://Bree
         return 7011;
      case 6222://Kree'ara
         return 3503;   
      case 6223://Wingman Skree
      case 6225://Flockleader Geerin
      case 6227://Flight Kilisa
         return 6956;   
      case 2745://TzTok-Jad
         return 9279;                           
      case 6261://Seargent Strongstack
      case 6263://Seargent Steelwill
      case 6265://Seargent Grimspike
         return 6156;
      case 6260://General Graardor
         return 7062;   
      case 6715://Revenant Imp
         return 7408;
      case 6687://Revenant Cyclops
         return 7454;
      case 6688://Revenant Hellhound
         return 7461;
      case 6689://Revenant Demon
         return 7475;
      case 6713://Revenant Ork
         return 7412;
      case 6691://Revenant Dark Beast
         return 7468;
      case 6692://Revenant Knight
         return 7442;   
      case 8133://Corporeal Beast
         return 10059;
      case 1028: case 1029: case 1031: case 1032: case 1033: case 1034: case 1035: case 6063: case 6064://Implings
         return 6613;
      case 4291: case 4292://Cyclops
         return 4653;
      case 1600://Cave Crawler
         return 265;
      case 1631://Rock Slug
         return 9507;
      case 1620://Cockatrice
         return 7763;      
      case 1633://Pyrefiend
         return 11211;   
      case 7799: case 1616://Basilisk
         return 264;
      case 1637: case 1638: case 1639: case 1640://Jellies
         return 8570;
      case 7800: case 1611: case 1626://Turoth
         return 9477;
      case 7797: case 7805: case 1608://Kurask
         return 9440;
      case 1657: case 7640: case 7641: case 1648://Crawling Hands
         return 9445;   
      case 7786: case 7793://Banshee's
         return 9450;   
      case 1643: case 1644: case 1645: case 1646: case 1647://Infernal Mage's
         return 7185;
      case 7642: case 7643:case 1618://Bloodveld's
         return 9131;   
      case 1604://Abbarent Spectre
         return 9467;
      case 1610://Gargoyle
         return 9454;
      case 1613://Nechryael
         return 9488;
      case 1615://Abyssal Demon
         return 1538;
      case 2783://Dark Beasts
         return 2733;
      case 90://Skeleton   
         return 5491;
      case 103://Ghost
         return 5542;
      case 181: case 193: case 2547: case 7105://Chaos Druids
         return 836;         
      case 78://Giant Bat's
         return 4917;      
      case 2698://Black Knight
         return 836;   
      case 127://Magic Axe
         return 188;   
      case 4697://Lesser Demon
         return 4677;
      case 119://Chaos Dwarf
         return 102;
      case 51: case 52: case 1589://Baby Dragons
         return 28;
      case 53: case 54: case 55: case 941: case 1590: case 1591: case 1592: case 5363://Dragons
         return 28;   
      case 84://Black Demon
         return 67;   
      case 49: case 1575: case 3586://Hellhounds
         return 6576;   
      case 110: case 1583: case 1584: case 1586: case 10755://Fire Giant's
         return 4668;   
      case 112: case 117: case 1587: case 1588: case 1681: case 4688: case 4706://Giant's
         return 4659;   
      case 77://Zombie's
         return 5569;
      case 86: case 87: case 88://Rat's
         return 4935;   
      case 125://Ice warrior
         return 843;
      case 912: case 913: case 914://Battle Mage's
         return 836;   
      case 172: case 174:   case 3242: case 3243: case 3244: case 3245: case 8871: case 8872: case 8874://Dark Wizzard's
         return 836;   
      case 1317: case 2236://Market Guard
         return 836;         
      case 1265: case 2452://Rock Crab's
         return 1314;   
      case 1184: case 1183://Elf Warrior's
         return 836;         
      case 3252://Barbarian
         return 836;   
      case 1092://White Knight
         return 836;         
      case 81://Cow
         return 244;         
      case 101://Goblin
         return 6182;
      case 41://Chicken
         return 5389;
      case 9: case 15://Guard, Warrior Woman
         return 836;
      case 189: case 190://Monk of zamorak
         return 836;
      case 89: case 1328: case 6823://Unicorns
         return 6377;   
      case 2455: case 1351: case 2454: case 9089: case 9092: case 9107://Dagannoth's
         return 1342;
      case 2889://Rock Lobster
         return 2862;
      case 1156: case 1154: case 1157://Kalphite's
         return 6242;   
      case 3200://Chaos Elemental
         return 3147;   
      case 1158://Kalphite Queen
         return 6228;   
      case 50://King Black Dragon
         return 28;



Better Woodcutting

Okay this may be a long tutorial but it's good to have.
5/10
Files needed
-player.java
-woodcutting.java
-clickitem.java
-itemassistant.java
-actionhandler.java



Okay, Open player.java Hold ctrl+F Search public int[] woodcut = new int
Then replace that line with public int[] woodcut = new int [7];
Okay now close that file, and open woodcutting.java and you can do 2 things..
Replace everything in the file with this code or take parts of the code out.



package server.model.players.skills;


import server.model.players.*;
import server.Config;
import server.util.Misc;
import server.Server;
import java.lang.Math;
import server.model.players.Client;
import server.model.players.PacketType;
import server.model.objects.Object;
import server.model.players.PlayerHandler;


public class Woodcutting {
   
   Client c;
   
   private final int VALID_AXE[] = {1351,1349,1353,1361,1355,1357,1359,6739};
   private final int[] AXE_REQS = {1,1,6,6,21,31,41,61};
   private int logType;
   private int exp;
   private int levelReq;
   private int axeType;
   private int treeX;
   private int treeY;
   private int density;
   private int treeType;
   public int logsCutFromTree;
   public int tempTimer = 0;
   
   public static int TREE_TIMER = 2000;
   
   public Woodcutting(Client c) {
      this.c = c;
   }
 
   public void startWoodcutting(int logType, int levelReq, int exp, int treeX, int treeY, int density, int treeType) {
      if (goodAxe() > 0) {
         c.turnPlayerTo(treeX, treeY);
         if (c.playerLevel[c.playerWoodcutting] >= levelReq) {
            this.logType = logType;
            this.exp = exp;
            this.levelReq = levelReq;
            this.treeX = treeX;
            this.treeY = treeY;
            this.density = density;
            this.treeType = treeType;
            this.axeType = goodAxe();
            c.wcTimer = getWcTimer(density);
            c.startAnimation(getWcEmote());
         } else {
            c.getPA().resetVariables();
            c.startAnimation(65535);
            c.sendMessage("You need a woodcutting level of " + levelReq + " to cut this tree.");
         }      
      } else {
         c.startAnimation(65535);             
         c.sendMessage("You don't have an axe for which you have the level to use.");
         c.getPA().resetVariables();
      }
   }

   public void resetWoodcut() {
            this.logType = -1;
            this.exp = -1;
            this.levelReq = -1;
            this.axeType = -1;

      this.density = -1;
      this.treeX = -1;
      this.treeY = -1;
      this.treeType = -1;
      c.wcTimer = -1;   
      logsCutFromTree = 0;
   }
public void randomNestdrop() {
c.sendMessage("A nest has fallen out of the tree!");
Server.itemHandler.createGroundItem(c, 5073, c.getX(), c.getY(), 1, c.getId());
   }
   
   public int getWcEmote() {
      if (axeType == 1351) // bronze
         return 879;
      if (axeType == 1349) // iron
         return 877;
      if (axeType == 1353) // steel
         return 875;
      if (axeType == 1355) // mith
         return 871;
      if (axeType == 1357) // addy
         return 869;
      if (axeType == 1359) // rune
         return 867;
      if (axeType == 6739) // d axe
         return 2846;
      if (axeType == 13661) // d axe
         return 2846;
      if (axeType == 1361) // black
         return 873;
      else
         return 0;
   }
   
   public void cutWood() {
      int maxLogsPerTree = cutForChop(treeType);
      if (logsCutFromTree < maxLogsPerTree) {

         if (c.getItems().addItem(logType,1)) {
            c.startAnimation(getWcEmote());
            logsCutFromTree += 1;
            c.sendMessage("You get some logs.");
            c.getPA().addSkillXP(exp * Config.WOODCUTTING_EXPERIENCE, c.playerWoodcutting);
            c.getPA().refreshSkill(c.playerWoodcutting);
            c.wcTimer = getWcTimer(density);
         } else {
            c.getPA().resetVariables();
             c.frame1();         
            return;
      }
            
         }else if(c.getItems().freeSlots() >= 1){
            for (int j = 0; j < Server.playerHandler.players.length; j++) {
            if (Server.playerHandler.players[j] != null) {
            c.getItems().addItem(logType,1);
            c.sendMessage("You get some logs.");
            c.getPA().addSkillXP(exp * Config.WOODCUTTING_EXPERIENCE, c.playerWoodcutting);

               Client c2 = (Client)Server.playerHandler.players[j];
               new Object(1343, treeX, treeY, 0, 1, 10, treeType, getTicksForTree());
               c.getPA().resetVariables();
                c.frame1();
            
               resetWoodcut();
               if (Misc.random(25) == 1)
               randomNestdrop();
               return;
            }
         }
         return;
      }
}
   public int getTicksForTree() {
      return (2000-PlayerHandler.getPlayerCount())/100 + additionalTicksPerTree();
   }
   
   public int additionalTicksPerTree() {
      if (treeType == 1276) // reg
         return 1;
      if (treeType == 1278) // reg
         return 1;
      if (treeType == 1281) // oak
         return 1;
      if (treeType == 1308) // willow
         return 3;
      if (treeType == 1307) // maple
         return 4;
      if (treeType == 1309) // yew
         return 6;
      if (treeType == 1306) // magic
         return 7;
      else
         return 0;
   }
   
   public int cutForChop(int tree) {
      if (tree == 1276 || tree == 1278)
         return 0;
      if (tree == 1281)
         return 0 + Misc.random(5);
      if (tree == 1308)
         return 0 + Misc.random(6);
      if (tree == 1307)
         return 0 + Misc.random(8);
      if (tree == 1309)
         return 0 + Misc.random(7);
      if (tree == 1306)
         return 0 + Misc.random(10);
      else
         return 0;
   }
   
   public int axePower(int axe) {
      if (axe == 1351) // bronze
         return 1;
      if (axe == 1349) // iron
         return 1;
      if (axe == 1353) // steel
         return 2;
      if (axe == 1361) // black
         return 2;
      if (axe == 1355) // mith
         return 3;
      if (axe == 1357) // addy
         return 4;
      if (axe == 1359) // rune
         return 5;
      if (axe == 6739) //daxe
         return 7;
      if (axe == 13661) //daxe
         return 8;
      else
         return 0;
   }
   
   public int goodAxe() {
      for (int j = VALID_AXE.length - 1; j >= 0; j--) {
         if (c.playerEquipment[c.playerWeapon] == VALID_AXE[j]) {
            if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
               return VALID_AXE[j];
         }      
      }
      for (int i = 0; i < c.playerItems.length; i++) {
         for (int j = VALID_AXE.length - 1; j >= 0; j--) {
            if (c.playerItems[i] == VALID_AXE[j] + 1) {
               if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
                  return VALID_AXE[j];
            }
         }      
      }
      return - 1;
   }
   
   public int getWcTimer(int density) {
      int time = Misc.random(2);
      return density + time - axePower(goodAxe());
   }

}


Now close that file and open itemassistant.java and place this code somewhere in there



   public int[] Nests = {5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304};
   public void handleNests(int itemId) {
         int reward = Nests[Misc.random(14)];
         addItem(reward, 3 + Misc.random(5));
         deleteItem(itemId, 1);
         c.sendMessage("You search the nest");
      }


Now close that and open clickitem.java in there added this somewhere



      if (itemId == 5073) {
c.getItems().addItem(5075, 1);
         c.getItems().handleNests (itemId);
}


Close that and open ActionHandler.java and find your tree IDs and replace them with this code.



   
      case 1276:
      case 1278://trees
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1511;
         c.woodcut[1] = 1;
         c.woodcut[2] = 25;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 8;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
      }
break;
      case 1281: //oak
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1521;
         c.woodcut[1] = 15;
         c.woodcut[2] = 37;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 9;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1308: //willow
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1519;
         c.woodcut[1] = 30;
         c.woodcut[2] = 68;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 10;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1307: //maple
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1517;
         c.woodcut[1] = 45;
         c.woodcut[2] = 100;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 11;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1309: //yew
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1515;
         c.woodcut[1] = 60;
         c.woodcut[2] = 175;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 12;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;
      
      case 1306: // magic
if(c.getItems().freeSlots() <= 0){
         c.sendMessage("Your inventory is full");
}else{
         c.woodcut[0] = 1513;
         c.woodcut[1] = 75;
         c.woodcut[2] = 250;
         c.woodcut[3] = obX;
         c.woodcut[4] = obY;
         c.woodcut[5] = 13;
         c.woodcut[6] = objectType;
         c.getWoodcutting().startWoodcutting(c.woodcut[0], c.woodcut[1], c.woodcut[2], c.woodcut[3], c.woodcut[4], c.woodcut[5], c.woodcut[6]);
}break;


Not all trees in there but It's not hard to add them.
And that's it!

Also creds go to cres for making the code.



Changing the Auto msg in the server chatbox

Alright this is a 0/10
Files needed
-Client.java


Okay, Open Client.java and search for public void mymessage() {
Then you will see this..



      public void mymessage() {
      EventManager.getSingleton().addEvent(new Event() {
         public void execute(EventContainer c) {
            int r3 = 0;
            r3 = Misc.random(6);
            if (r3 == 0) {
               sendMessage("");
            } else if (r3 == 1) {
               sendMessage("");      
            } else if (r3 == 2) {
               sendMessage("");
            } else if (r3 == 3) {
               sendMessage(" ");
            } else if (r3 == 4) {
               sendMessage("");
            } else if (r3 == 5) {
               sendMessage("");
            }
         }
      }, 320000); //milisecondsservermessage
   };


Just put whatever you want to say in the sendMessage(""); then for }, 320000); //milisecondsservermessage You can change how many times it comes up in the chatbox.



Mystery box that gives random items
Okay, this is a 0/10
Files needed
-Clickitem.java


Open Clickitem.java and add this code somewhere



}
if(itemId == 3062) {
c.getItems().deleteItem(3062, 1);
int[] arrayOfItems ={1149, 1187, 14479};
c.getItems().addItem(arrayOfItems[Misc.random(arrayOfItems.length)], 1);
}


Alright, See the int[] arrayifItems = { You just add more items were you see 1149, 1187.


great post man thanks for this!
#3. Posted:
-Pawn
  • TTG Addict
Status: Offline
Joined: Jan 15, 201113Year Member
Posts: 2,316
Reputation Power: 119
Status: Offline
Joined: Jan 15, 201113Year Member
Posts: 2,316
Reputation Power: 119
This post is great, really helpful for anyone interested in making runescape private servers.
#4. Posted:
-3Dz-
  • Powerhouse
Status: Offline
Joined: Feb 24, 201212Year Member
Posts: 414
Reputation Power: 16
Status: Offline
Joined: Feb 24, 201212Year Member
Posts: 414
Reputation Power: 16
Thanks everyone!
Hope it helps a lot of people!
#5. Posted:
Lord_blood65
  • New Member
Status: Offline
Joined: Apr 03, 201410Year Member
Posts: 1
Reputation Power: 0
Status: Offline
Joined: Apr 03, 201410Year Member
Posts: 1
Reputation Power: 0
Great post good for new coders. Keep it up
Jump to:
You are viewing our Forum Archives. To view or take place in current topics click here.