Browse Source

hard cap 3 box limit

birdbane
FatBoy-DOTC 9 months ago
parent
commit
8cbcb15b50
  1. 16
      src/engine/InterestManagement/InterestManager.java
  2. 7
      src/engine/server/world/WorldServer.java

16
src/engine/InterestManagement/InterestManager.java

@ -28,6 +28,7 @@ import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger; import org.pmw.tinylog.Logger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import static engine.math.FastMath.sqr; import static engine.math.FastMath.sqr;
@ -37,6 +38,7 @@ public enum InterestManager implements Runnable {
INTERESTMANAGER; INTERESTMANAGER;
private static long lastTime; private static long lastTime;
public static HashMap<String,ArrayList<PlayerCharacter>> playersByMachine = new HashMap<>();
InterestManager() { InterestManager() {
Logger.info(" Interest Management thread is running."); Logger.info(" Interest Management thread is running.");
@ -522,12 +524,24 @@ public enum InterestManager implements Runnable {
if (origin == null) if (origin == null)
return; return;
if(playersByMachine.containsKey(origin.machineID)){
if(playersByMachine.get(origin.machineID) == null){
ArrayList<PlayerCharacter> newList = new ArrayList<>();
newList.add(player);
playersByMachine.put(origin.machineID,newList);
} else{
if(playersByMachine.get(origin.machineID).size() >= 3){
origin.disconnect();
}else{
playersByMachine.get(origin.machineID).add(player);
}
}
}
// Update loaded upbjects lists // Update loaded upbjects lists
player.setDirtyLoad(true); player.setDirtyLoad(true);
updateStaticList(player, origin); updateStaticList(player, origin);
updateMobileList(player, origin); updateMobileList(player, origin);
} }
public synchronized void HandleLoadForTeleport(PlayerCharacter playerCharacter) { public synchronized void HandleLoadForTeleport(PlayerCharacter playerCharacter) {

7
src/engine/server/world/WorldServer.java

@ -15,6 +15,7 @@ import engine.Enum.DispatchChannel;
import engine.Enum.MinionType; import engine.Enum.MinionType;
import engine.Enum.SupportMsgType; import engine.Enum.SupportMsgType;
import engine.InterestManagement.HeightMap; import engine.InterestManagement.HeightMap;
import engine.InterestManagement.InterestManager;
import engine.InterestManagement.RealmMap; import engine.InterestManagement.RealmMap;
import engine.InterestManagement.WorldGrid; import engine.InterestManagement.WorldGrid;
import engine.db.archive.DataWarehouse; import engine.db.archive.DataWarehouse;
@ -710,7 +711,11 @@ public class WorldServer {
} }
player.getTimestamps().put("logout", System.currentTimeMillis()); player.getTimestamps().put("logout", System.currentTimeMillis());
player.setEnteredWorld(false); player.setEnteredWorld(false);
if(InterestManager.playersByMachine.containsKey(player.getClientConnection().machineID)){
if(InterestManager.playersByMachine.get(player.getClientConnection().machineID).contains(player)){
InterestManager.playersByMachine.get(player.getClientConnection().machineID).remove(player);
}
}
// remove from simulation and zero current loc // remove from simulation and zero current loc
WorldGrid.RemoveWorldObject(player); WorldGrid.RemoveWorldObject(player);

Loading…
Cancel
Save