Go to config,
What number is your
public static final int MAX_PLAYERS =
At?
|
I've been using PI for a couple of weeks now.. hosted it pretty well, and works fine, but since i reached the 150 players online it keeps disconnecting randomly,
i'm assuming tha tit has to do that, if you restart your server everyone saves their game 1 minute later at the same time because PlayerSave counts from when you logged in till the nex tsave.
when they all save it crashes.
i tought of maybe adding a misc random system to savegame.
Any suggestions? Here's my method.
i will send you some dollars in papal if you fix it.public void process() {
synchronized (PlayerHandler.players) {
updatePlayerNames();
if(kickAllPlayers) {
for(int i = 1; i < Config.MAX_PLAYERS; i++) {
if(players[i] != null) {
players[i].disconnected = true;
}
}
}
for(int i = 0; i < Config.MAX_PLAYERS; i++) {
if(players[i] == null || !players[i].isActive) continue;
try {
if(players[i].disconnected && (System.currentTimeMillis() - players[i].logoutDelay > 10000 || players[i].properLogout || kickAllPlayers)) {
if(players[i].inTrade) {
Client o = (Client) Server.playerHandler.players[players[i].tradeWith];
if(o != null) {
o.getTradeAndDuel().declineTrade();
}
}
if(players[i].duelStatus == 5) {
Client o = (Client) Server.playerHandler.players[players[i].duelingWith];
if(o != null) {
o.getTradeAndDuel().duelVictory();
}
} else if (players[i].duelStatus <= 4 && players[i].duelStatus >= 1) {
Client o = (Client) Server.playerHandler.players[players[i].duelingWith];
if(o != null) {
o.getTradeAndDuel().declineDuel();
}
}
Client o = (Client) Server.playerHandler.players[i];
if(PlayerSave.saveGame(o)) {
System.out.println("Game saved for player "+players[i].playerName);
} else {
System.out.println("Could not save for "+players[i].playerName);
}
removePlayer(players[i]);
players[i] = null;
continue;
}
players[i].preProcessing();
while(players[i].processQueuedPackets());
players[i].process();
players[i].postProcessing();
players[i].getNextPlayerMovement();
} catch(Exception e) {
e.printStackTrace();
}
}
Thanks, Pim ( Owner of SoulSplit)
Go to config,
What number is your
public static final int MAX_PLAYERS =
At?
1024
change that to:Client o = (Client) Server.playerHandler.players[i];
if(PlayerSave.saveGame(o)) {
System.out.println("Game saved for player "+players[i].playerName);
} else {
System.out.println("Could not save for "+players[i].playerName);
}
removePlayer(players[i]);
players[i] = null;
continue;
}
Code:Client o = (Client) Server.playerHandler.players[i]; PlayerSave.saveGame(o); /*if(PlayerSave.saveGame(o)) { System.out.println("Game saved for player "+players[i].playerName); } else { System.out.println("Could not save for "+players[i].playerName); }*/ removePlayer(players[i]); players[i] = null; continue;
A BILLION times better if to make it only when it needs saving aka logout and xlog/rollback i have da fixes for it its fairly easy.
If it works post back and gimmi moneh :trollface:.
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |