Compare commits

...

10 Commits

3 changed files with 49 additions and 5 deletions
+5
View File
@@ -12,6 +12,9 @@ package engine.jobs;
import engine.job.AbstractScheduleJob;
import engine.objects.PlayerCharacter;
import engine.server.world.WorldServer;
import org.pmw.tinylog.Logger;
public class LogoutCharacterJob extends AbstractScheduleJob {
@@ -26,9 +29,11 @@ public class LogoutCharacterJob extends AbstractScheduleJob {
@Override
protected void doJob() {
Logger.info("LogoutCharacterJob.doJob(): Logging out " + pc.getFirstName());
server.logoutCharacter(this.pc);
}
@Override
protected void _cancelJob() {
// TODO Auto-generated method stub
+7 -3
View File
@@ -215,13 +215,17 @@ public class ClientConnection extends AbstractConnection {
@Override
public void disconnect() {
Logger.info("ClientConnection.disconnect() called");
super.disconnect();
try {
if (ConfigManager.serverType.equals(Enum.ServerType.WORLDSERVER))
if (ConfigManager.serverType.equals(Enum.ServerType.WORLDSERVER)) {
Logger.info("ClientConnection.disconnect(): Calling WorldServer.removeClient()");
ConfigManager.worldServer.removeClient(this);
else
} else {
Logger.info("ClientConnection.disconnect(): Calling LoginServer.removeClient()");
ConfigManager.loginServer.removeClient(this);
}
// TODO There has to be a more direct way to do this...
SessionManager.remSession(
+37 -2
View File
@@ -9,6 +9,7 @@
package engine.server.world;
import java.util.Iterator;
import engine.Enum;
import engine.Enum.BuildingGroup;
import engine.Enum.DispatchChannel;
@@ -664,7 +665,7 @@ public class WorldServer {
Mine.releaseMineClaims(playerCharacter);
// logout
long delta = MBServerStatics.LOGOUT_TIMER_MS;
long delta = 0;
if (System.currentTimeMillis() - playerCharacter.getTimeStamp("LastCombatPlayer") < 60000) {
delta = 60000;
@@ -686,6 +687,7 @@ public class WorldServer {
playerCharacter.getLoadedObjects().clear();
playerCharacter.getLoadedStaticObjects().clear();
Logger.info("Scheduling LogoutCharacterJob for " + playerCharacter.getFirstName());
LogoutCharacterJob logoutJob = new LogoutCharacterJob(playerCharacter, this);
JobContainer jc = JobScheduler.getInstance().scheduleJob(logoutJob,
System.currentTimeMillis() + delta);
@@ -704,6 +706,32 @@ public class WorldServer {
Logger.error("Unable to find PlayerCharacter to logout");
return;
}
// DEBUG: Log all current effects on the player
Logger.info("=== EFFECTS ON LOGOUT for " + player.getFirstName() + " ===");
for (Effect e : player.getEffects().values()) {
Logger.info("Effect: " + e.getName());
}
Iterator<Effect> it = player.getEffects().values().iterator();
while (it.hasNext()) {
Effect effect = it.next();
String name = effect.getName();
if (name.equals("Blessing of Power") ||
name.equals("Blessing of Wisdom") ||
name.equals("Blessing of Fortune")) {
it.remove();
Logger.info("Removed effect " + name + " from " + player.getFirstName());
}
}
Logger.info("Realm run blessings removed from " + player.getFirstName());
//remove player from loaded mobs agro maps
for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(player.getLoc(),MBServerStatics.CHARACTER_LOAD_RANGE,MBServerStatics.MASK_MOB)) {
Mob loadedMob = (Mob) awo;
@@ -866,4 +894,11 @@ public class WorldServer {
}
}
}
}
public void init() {
Logger.info("WorldServer.init() called");
// Your original init logic should go here
// Or you can leave it empty for testing
}