public static void saveAll(Personnage saver) { PrintWriter _out = null; if (saver != null) _out = saver.get_compte().getGameThread().get_out(); set_state((short) 2); try { GameServer.addToLog("Lancement de la sauvegarde du Monde..."); Ancestra.isSaving = true; SQLManager.commitTransacts(); SQLManager.TIMER(false); // Arrête le timer d'enregistrement SQL Thread.sleep(10000); GameServer.addToLog("Sauvegarde des personnages..."); for (Personnage perso : Persos.values()) { if (!perso.isOnline()) continue; Thread.sleep(100); // 0.1 sec. pour 1 objets SQLManager.SAVE_PERSONNAGE(perso, true); // sauvegarde des persos et de leurs items } Thread.sleep(2500); GameServer.addToLog("Sauvegarde des guildes..."); for (Guild guilde : Guildes.values()) { Thread.sleep(100); // 0.1 sec. pour 1 guilde SQLManager.UPDATE_GUILD(guilde); } Thread.sleep(2500); GameServer.addToLog("Sauvegarde des percepteurs..."); for (Percepteur perco : Percepteurs.values()) { if (perco.get_inFight() > 0) continue; Thread.sleep(100); // 0.1 sec. pour 1 percepteur SQLManager.UPDATE_PERCO(perco); } Thread.sleep(2500); GameServer.addToLog("Sauvegarde des maisons..."); for (House house : Houses.values()) { if (house.get_owner_id() > 0) { Thread.sleep(100); // 0.1 sec. pour 1 maison SQLManager.UPDATE_HOUSE(house); } } Thread.sleep(2500); GameServer.addToLog("Sauvegarde des coffres..."); for (Trunk t : Trunks.values()) { if (t.get_owner_id() > 0) { Thread.sleep(100); // 0.1 sec. pour 1 coffre SQLManager.UPDATE_TRUNK(t); } } Thread.sleep(2500); GameServer.addToLog("Sauvegarde des enclos..."); for (Carte.MountPark mp : MountPark.values()) { if (mp.get_owner() > 0 || mp.get_owner() == -1) { Thread.sleep(100); // 0.1 sec. pour 1 enclo SQLManager.UPDATE_MOUNTPARK(mp); } } Thread.sleep(2500); GameServer.addToLog("Sauvegarde des Hdvs..."); ArrayList<HdvEntry> toSave = new ArrayList<HdvEntry>(); for (HDV curHdv : Hdvs.values()) { toSave.addAll(curHdv.getAllEntry()); } SQLManager.SAVE_HDVS_ITEMS(toSave); Thread.sleep(10000); GameServer.addToLog("Sauvegarde effectuee !"); set_state((short) 1); // TODO : Rafraichir } catch (ConcurrentModificationException e) { if (saveTry < 10) { GameServer.addToLog("Nouvelle tentative de sauvegarde"); if (saver != null && _out != null) SocketManager.GAME_SEND_CONSOLE_MESSAGE_PACKET( _out, "Erreur. Nouvelle tentative de sauvegarde"); saveTry++; saveAll(saver); } else { set_state((short) 1); // TODO : Rafraichir String mess = "Echec de la sauvegarde apres " + saveTry + " tentatives"; if (saver != null && _out != null) SocketManager.GAME_SEND_CONSOLE_MESSAGE_PACKET(_out, mess); GameServer.addToLog(mess); } } catch (Exception e) { GameServer.addToLog("Erreur lors de la sauvegarde : " + e.getMessage()); e.printStackTrace(); } finally { SQLManager.commitTransacts(); SQLManager.TIMER(true); // Redémarre le timer d'enregistrement SQL Ancestra.isSaving = false; saveTry = 1; } }
public static void addTrunk(Trunk trunk) { Trunks.put(trunk.get_id(), trunk); }