2011-05-13 04:24:42 -04:00
|
|
|
package org.moparscape.msc.ls.packethandler.loginserver;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
import org.apache.mina.common.IoSession;
|
2011-05-13 04:24:42 -04:00
|
|
|
import org.moparscape.msc.ls.Server;
|
|
|
|
import org.moparscape.msc.ls.model.PlayerSave;
|
|
|
|
import org.moparscape.msc.ls.model.World;
|
|
|
|
import org.moparscape.msc.ls.net.Packet;
|
|
|
|
import org.moparscape.msc.ls.packethandler.PacketHandler;
|
|
|
|
import org.moparscape.msc.ls.util.DataConversions;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
|
|
|
|
public class PlayerSaveHandler implements PacketHandler {
|
|
|
|
|
|
|
|
public void handlePacket(Packet p, IoSession session) throws Exception {
|
|
|
|
World world = (World) session.getAttachment();
|
|
|
|
long usernameHash = p.readLong();
|
|
|
|
int owner = p.readInt();
|
|
|
|
PlayerSave save = Server.getServer().findSave(usernameHash, world);
|
|
|
|
if (save == null) {
|
|
|
|
System.out.println("Error loading data for: " + DataConversions.hashToUsername(usernameHash));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
System.out.println("Adding save data for: " + save.getUsername());
|
|
|
|
|
|
|
|
if (owner != save.getOwner()) {
|
|
|
|
System.out.println("WARNING ATTEMPTED DUPE");
|
|
|
|
}
|
|
|
|
|
|
|
|
save.setOwner(owner);
|
|
|
|
save.setLogin(p.readLong(), p.readLong());
|
|
|
|
save.setTotals(p.readShort(), p.readShort());
|
|
|
|
save.setLocation(p.readShort(), p.readShort());
|
|
|
|
save.setFatigue(p.readShort());
|
|
|
|
save.setAppearance(p.readByte(), p.readByte(), p.readByte(), p.readByte(), p.readByte(), p.readByte(), p.readByte() == 1, p.readLong());
|
|
|
|
save.setCombatStyle(p.readByte());
|
|
|
|
//save.setPoints(p.readInt());
|
|
|
|
|
|
|
|
for (int i = 0; i < 18; i++) {
|
|
|
|
save.setStat(i, p.readLong(), p.readShort());
|
|
|
|
}
|
|
|
|
|
|
|
|
int invCount = p.readShort();
|
|
|
|
save.clearInvItems();
|
|
|
|
for (int i = 0; i < invCount; i++) {
|
|
|
|
save.addInvItem(p.readShort(), p.readInt(), p.readByte() == 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
int bnkCount = p.readShort();
|
|
|
|
save.clearBankItems();
|
|
|
|
for (int i = 0; i < bnkCount; i++) {
|
|
|
|
save.addBankItem(p.readShort(), p.readInt());
|
|
|
|
}
|
|
|
|
|
|
|
|
save.setQuestPoints(p.readShort());
|
|
|
|
int qstCount = p.readShort();
|
|
|
|
for (int i = 0; i < qstCount; i++)
|
|
|
|
save.setQuestStage(p.readShort(), p.readShort());
|
|
|
|
|
|
|
|
save.setEventCD(p.readLong());
|
|
|
|
|
|
|
|
save.setLastUpdate(System.currentTimeMillis());
|
|
|
|
if (!save.save()) { // we shouldnt always save right away
|
|
|
|
System.out.println("Error saving: " + save.getUsername());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|