Realm Relay
can anyone fix this. this would supposed to be working, right?
@CrazyJani I hope you didn't abandoned on it. I'll be waiting for it if it works again. thanks in advz.
Code:
var ID_MOVE = $.findPacketId("MOVE");
var ID_UPDATE = $.findPacketId("UPDATE");
var ID_CREATE_SUCCESS = $.findPacketId("CREATE_SUCCESS");
var ID_NEW_TICK = $.findPacketId("NEW_TICK");
var ID_USEITEM = $.findPacketId("USEITEM");
var ID_PLAYERHIT = $.findPacketId("PLAYERHIT");
var playerObjectId = -1;
var health = -1;
var maxHealth = -1;
var defenceBonus = -1;
var playerLocation = null;
var TIMEOUTOFFSET = 250;
var potHealthPercentage = 45;
var clientTime = 0;
var potHealthCount = 0;
var skipHealthPotion = true;
var timeoutAt = -1;
function onClientPacket(event) {
var packet = event.getPacket();
if (packet.time) {
clientTime = packet.time;
if (skipHealthPotion && timeoutAt < clientTime) {
skipHealthPotion = false;
}
}
switch (packet.id()) {
case ID_MOVE: {
playerLocation = packet.newPosition;
break;
}
case ID_PLAYERHIT: {
var curPercentage = 100 * health / maxHealth;
if (!skipHealthPotion && potHealthCount > 0 && curPercentage <= potHealthPercentage) {
useHealthPotion();
}
break;
}
}
}
function onServerPacket(event) {
var packet = event.getPacket();
switch (packet.id()) {
case ID_UPDATE: {
for (var i = 0; i < packet.newObjs.length; i++) {
var objectData = packet.newObjs[i];
if (objectData.status.objectId == playerObjectId) {
for (var j = 0; j < objectData.status.data.length; j++) {
var statData = objectData.status.data[j];
if (statData.obf0 == 0) {
maxHealth = statData.obf1;
} else if (statData.obf0 == 1) {
health = statData.obf1;
} else if (statData.obf0 == 49) {
defenceBonus = statData.obf1;
} else if (statData.obf0 == 69) {
potHealthCount = statData.obf1;
}
}
}
}
break;
}
case ID_CREATE_SUCCESS: {
playerObjectId = packet.objectId;
break;
}
case ID_NEW_TICK: {
for (var i = 0; i < packet.statuses.length; i++) {
var status = packet.statuses[i];
if (status.objectId == playerObjectId) {
for (var j = 0; j < status.data.length; j++) {
var statData = status.data[j];
if (statData.obf0 == 1) {
health = statData.obf1;
} else if (statData.obf0 == 49) {
defenceBonus = statData.obf1;
} else if (statData.obf0 == 69) {
potHealthCount = statData.obf1;
}
}
}
}
break;
}
}
}
function useHealthPotion() {
potHealthCount--;
var useitemPacket = $.createPacket(ID_USEITEM);
useitemPacket.time = clientTime;
useitemPacket.slotObject = $.createSlotObject();
useitemPacket.slotObject.objectType = 2594;
useitemPacket.slotObject.slotId = 254;
useitemPacket.slotObject.objectId = playerObjectId;
useitemPacket.itemUsePos = playerLocation;
useitemPacket.useType = 0;
$.sendToServer(useitemPacket);
skipHealthPotion = true;
timeoutAt = clientTime + TIMEOUTOFFSET;
}
