given = highTasks[Misc.random2(highTasks.length - 1)];
loaep.
|
I have an ArrayIndexOutOfBounds error for my slayer .. can anyone fix it?
[SPOIL][1/22/13 3:51 PM]: java.lang.ArrayIndexOutOfBoundsException: 12
[1/22/13 3:51 PM]: at server.model.players.skills.Slayer.giveTask(Slayer .ja
va:74)
[1/22/13 3:51 PM]: at server.model.players.skills.Slayer.assignNewTask(S lay
er.java:41)
[1/22/13 3:51 PM]: at server.model.players.packets.ClickingButtons.proce ssP
acket(ClickingButtons.java:904)
[1/22/13 3:51 PM]: at server.model.players.PacketHandler.processPacket(P ack
etHandler.java:138)
[1/22/13 3:51 PM]: at server.model.players.Client.processQueuedPackets(C lie
nt.java:1209)
[1/22/13 3:51 PM]: at server.model.players.PlayerHandler.process(PlayerH and
ler.java:137)
[1/22/13 3:51 PM]: at server.Server$4.execute(Server.java:144)
[1/22/13 3:51 PM]: at server.task.Task.run(Task.java:109)
[1/22/13 3:51 PM]: at java.util.concurrent.Executors$RunnableAdapter.cal l(U
nknown Source)
[1/22/13 3:51 PM]: at java.util.concurrent.FutureTask$Sync.innerRunAndRe set
(Unknown Source)
[1/22/13 3:51 PM]: at java.util.concurrent.FutureTask.runAndReset(Unknow n S
ource)
[1/22/13 3:51 PM]: at java.util.concurrent.ScheduledThreadPoolExecutor$S che
duledFutureTask.access$101(Unknown Source)
[1/22/13 3:51 PM]: at java.util.concurrent.ScheduledThreadPoolExecutor$S che
duledFutureTask.runPeriodic(Unknown Source)
[1/22/13 3:51 PM]: at java.util.concurrent.ScheduledThreadPoolExecutor$S che
duledFutureTask.run(Unknown Source)
[1/22/13 3:51 PM]: at java.util.concurrent.ThreadPoolExecutor$Worker.run Tas
k(Unknown Source)
[1/22/13 3:51 PM]: at java.util.concurrent.ThreadPoolExecutor$Worker.run (Un
known Source)
[1/22/13 3:51 PM]: at java.lang.Thread.run(Unknown Source)[/SPOIL]
here is my slayer.java
[SPOIL]package server.model.players.skills;
import server.Config;
import server.Server;
import server.model.players.Client;
import server.util.Misc;
/**
* Slayer.java
*
* @author Russian
**/
public class Slayer {
public static final int[] lowTasks = {1648, 1612, 117, 1265, 103, 78, 119, 18,101,1265,181};
public static final int[] medTasks = {1643,1618,941,119,82,52,1612,117,1265,112,125,134 1};
public static final int[] highTasks = {1624,1610,1613,1615,55,84,49,1618,941,82,2783,134 1};
public static final int[][] slayerTasks = {{1648, 5}, {1612, 15}, {1643, 45}, {1618, 50}, {1624, 65}, {1610, 75}, {1613, 80}, {1615, 85}, {2783, 90}};
public static void currentTask(Client c) {
c.sendMessage("You have " + c.taskAmount + " " + Server.npcHandler.getNpcListName(c.slayerTask) + "'s left to kill.");
c.sendMessage("You currently have " + c.slayerPoints + " slayer points.");
c.getPA().removeAllWindows();
}
public static void assignNewTask(Client c) {
c.getPA().removeAllWindows();
if (Misc.random(4) == 0) {
for (int[] slayerTask : slayerTasks) {
if (slayerTask[1] <= c.playerLevel[c.playerSlayer]) {
setTask(c, slayerTask[0], "a slayer");
return;
}
}
}
if (c.playerLevel[c.playerSlayer] < 25) {
giveTask(c, 1);
} else if (c.playerLevel[c.playerSlayer] < 60) {
giveTask(c, 2);
} else {
giveTask(c, 3);
}
}
public static void assignEasierTask(Client c) {
c.getPA().removeAllWindows();
for (int highTask : highTasks) {
if (highTask == c.slayerTask) {
giveTask(c, 2);
return;
}
}
for (int medTask : medTasks) {
if (medTask == c.slayerTask) {
giveTask(c, 1);
return;
}
}
c.sendMessage("You already have an easy task... to kill " + c.taskAmount + " " + Server.npcHandler.getNpcListName(c.slayerTask) + ".");
}
public static void giveTask(Client c, int taskLevel) {
int given = 0;
String task = "an easy-level";
switch (taskLevel) {
case 1 :
given = lowTasks[Misc.random2(lowTasks.length)];
break;
case 2 :
given = medTasks[Misc.random2(medTasks.length)];
task = "a medium-level";
break;
case 3 :
given = highTasks[Misc.random2(highTasks.length)];
task = "a hard-level";
break;
}
if(CheckReq(c, given))
setTask(c, given, task);
else
giveTask(c, taskLevel);
}
public static boolean CheckReq(Client c, int task) {
int havetocheck = 0;
int npc = 0;
for(int i = 0; i < slayerTasks.length; i++) {
if(task == slayerTasks[i][0]) {
havetocheck = 1;
npc = i;
}
}
if(havetocheck == 1)
if(c.playerLevel[c.playerSlayer] >= slayerTasks[npc][1])
return true;
else
return false;
return true;
}
public static void setTask(Client c, int given, String task) {
if (given < 1) {
return;
}
c.slayerTask = given;
c.taskAmount = Misc.random(35) + 15;
c.sendMessage("You have been assigned " + task + " task to kill " + c.taskAmount + " " + Server.npcHandler.getNpcListName(given) + ".");
}
public static void checkTask(Client c) {
c.getPA().removeAllWindows();
if (c.slayerTask < 1) {
c.sendMessage("You don't have any task at this moment.");
return;
}
String task = "a slayer";
for (int lowTask : lowTasks) {
if (lowTask == c.slayerTask) {
task = "an easy-level";
break;
}
}
for (int medTask : medTasks) {
if (medTask == c.slayerTask) {
task = "a medium-level";
break;
}
}
for (int highTask : highTasks) {
if (highTask == c.slayerTask) {
task = "a high-level";
break;
}
}
c.sendMessage("You have " + task + " task to kill " + c.taskAmount + " " + Server.npcHandler.getNpcListName(c.slayerTask) + ".");
}
public static boolean slayerTask(Client c, int npcType) {
if (c.slayerTask == npcType) {
return true;
}
int[][][] multiTasks = {{{3223, 3224, 3225, 3226}, {6006}}, {{1880, 1881, 1882, 1883, 1884, 1885}, {1880}}, {{1964}, {1962}}};
for (int[][] multiTask : multiTasks) {
if (c.slayerTask == multiTask[1][0]) {
for (int p = 0; p < multiTask[0].length; p++) {
if (npcType == multiTask[0][p]) {
return true;
}
}
}
}
return false;
}
}[/SPOIL]
and here is line 74-77:
[SPOIL] given = highTasks[Misc.random2(highTasks.length)];
task = "a hard-level";
break;
}[/SPOIL]
please help (:
Then your Misc.random2(int) method should be wrong. Or you didn't recompile.
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |