Thread: [PI] Random Dc's

Results 1 to 4 of 4
  1. #1 [PI] Random Dc's 
    ZRPS
    Guest
    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.

    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();
    }
    }
    i will send you some dollars in papal if you fix it.

    Thanks, Pim ( Owner of SoulSplit)
     

  2. #2  
    Fake Love


    Join Date
    Jun 2008
    Age
    28
    Posts
    439
    Thanks given
    224
    Thanks received
    312
    Rep Power
    4385
    Go to config,

    What number is your

    public static final int MAX_PLAYERS =

    At?
     

  3. #3  
    ZRPS
    Guest
    1024
     

  4. #4  
    Banned

    Join Date
    Dec 2009
    Posts
    833
    Thanks given
    8
    Thanks received
    8
    Rep Power
    0
    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;
    }
    change that to:

    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:.
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •