public static void removeGuild(int id) { // Maison de guilde+SQL House.removeHouseGuild(id); // Enclo+SQL Carte.MountPark.removeMountPark(id); // Percepteur+SQL Percepteur.removePercepteur(id); // Guilde Guildes.remove(id); SQLManager.DEL_ALL_GUILDMEMBER(id); // Supprime les membres SQLManager.DEL_GUILD(id); // Supprime la guilde }
public static void main(String[] args) { Runtime.getRuntime() .addShutdownHook( new Thread() { public void run() { DarkOrbit.closeServers(); } }); System.out.println("#========================= #"); System.out.println("# DarkOrbit v" + VERSION + "\t #"); System.out.println("# Creadopor:Elieaz Neor1326#"); System.out.println("# [email protected] #"); System.out.println("#========================= #"); System.out.println("Cargando configuracion:"); cargarConfiguracion(); isInit = true; System.out.println("Cargado con exito!"); System.out.println("Conexion con la Base de datos..."); if (SQLManager.setUpConnexion()) System.out.println("Conectado!"); else { System.out.println("Conexion invalida"); DarkOrbit.closeServers(); System.exit(0); } System.out.println("Creando DarkOrbit..."); long startTime = System.currentTimeMillis(); // Start Policy Server System.out.println("Creando Policy Server..."); policyServer = new PolicyServer(_this); World.createWorld(); long endTime = System.currentTimeMillis(); long differenceTime = (endTime - startTime) / 1000; System.out.println("Creado con exito ! en : " + differenceTime + " s"); isRunning = true; String Ip = ""; try { Ip = InetAddress.getLocalHost().getHostAddress(); } catch (Exception e) { System.out.println(e.getMessage()); try { Thread.sleep(10000); } catch (InterruptedException e1) { } System.exit(1); } Ip = IP; gameServer = new GameServer(Ip); System.out.println("Servidor del juego lanzado en el puerto " + CONFIG_GAME_PORT); chatServer = new ChatServer(Ip); System.out.println("Servidor del chat lanzado en el puerto " + CONFIG_CHAT_PORT); logServer = new SOSLoggingServer(Ip); System.out.println("Servidor de Logs lanzado en el puerto " + CONFIG_LOG_PORT); if (CONFIG_USE_IP) System.out.println("IP del servidor " + IP + " encriptada: " + GAMESERVER_IP); System.out.println("Esperando conexiones..."); System.out.println("Visit http://mycom69.tk"); }
public static void ReassignAccountToChar(Compte C) { C.get_persos().clear(); SQLManager.LOAD_PERSO_BY_ACCOUNT(C.get_GUID()); for (Personnage P : Persos.values()) { if (P.getAccID() == C.get_GUID()) { C.addPerso(P); P.setAccount(C); } } }
/*** * When a player leaves the server, their join timestamp and playtime is removed to free up memory. * Playtime will get stored into database if the time since his joining is more than 45 seconds * to prevent database overloading when player tries to spam logins/logouts. * @param e */ @EventHandler(priority = EventPriority.NORMAL) public void pQuit(PlayerQuitEvent e) { String pName = e.getPlayer().getName(); Integer stamp = Utils.getUnixTimestamp(0L); // schedule player's IP removal CommandsEX.plugin.getServer().getScheduler().scheduleSyncDelayedTask(CommandsEX.plugin, new DelayedIpRemoval(pName), (20 * getConf().getInt("maxIPholdTime"))); // save player's playtime if (sqlEnabled && joinTimes.containsKey(pName)) { Integer played = (stamp - joinTimes.get(pName)); if (played >= minTimeToSavePlayTime) { // player was online for more than minTimeToSavePlayTime seconds, count this visit if (playTimes.containsKey(pName) && (playTimes.get(pName) > -1)) { // update playtime directly if we have previous time loaded playTimes.put(pName, (playTimes.get(pName) + played)); } else { // get total playtime from database, since we don't have it loaded yet try { // first, reset the time, so we don't add to -1 later Integer pTime = 0; ResultSet res = SQLManager.query_res("SELECT seconds_played FROM " + SQLManager.prefix + "playtime WHERE player_name = ?", pName); while (res.next()) { pTime = res.getInt("seconds_played"); } res.close(); playTimes.put(pName, (pTime + played)); } catch (Throwable ex) { // something went wrong... LogHelper.logSevere("[CommandsEX] " + _("dbTotalPlayTimeGetError", "")); LogHelper.logDebug("Message: " + ex.getMessage() + ", cause: " + ex.getCause()); } } // update DB with new value played = playTimes.get(pName); SQLManager.query("INSERT "+ (SQLManager.sqlType.equals("mysql") ? "" : "OR REPLACE ") +"INTO " + SQLManager.prefix + "playtime VALUES (?, ?)"+ (SQLManager.sqlType.equals("mysql") ? " ON DUPLICATE KEY UPDATE seconds_played = VALUES(seconds_played)" : ""), pName, played); } joinTimes.remove(pName); playTimes.remove(pName); } }
public static void closeServers() { System.out.println("Deteniendo la peticion del servidor..."); if (isRunning) { isRunning = false; DarkOrbit.gameServer.kickAll(); DarkOrbit.chatServer.kickAll(); World.saveAll(null); SQLManager.closeCons(); } System.out.println("Detener servidor: OK"); isRunning = false; }
public long updatePlans() { boolean changeFlag = false; SQLManager sqlManager = SQLManager.getInstance(); if (sqlManager.getVersion() != sqlVersion) { sqlVersion = sqlManager.getVersion(); Cursor c = sqlManager.selectFuturePlan(); plans.clear(); if (c.moveToFirst()) { do { int id = SQLManager.getId(c); String title = SQLManager.getTitle(c); String text = SQLManager.getText(c); boolean remindFlag = false; boolean dailyFlag = false; int repeat = SQLManager.getRepeat(c); if (repeat > 0) { remindFlag = true; } int type = SQLManager.getType(c); if (type == Constants.DAILY_TYPE) { dailyFlag = true; } long time = SQLManager.getActualTime(c); int period = SQLManager.getPeriod(c); Plan p = new Plan(id, title, text, time, remindFlag, dailyFlag, period); plans.add(p); } while (c.moveToNext()); } changeFlag = true; } long now = System.currentTimeMillis(); for (Plan p : plans) { long pt = p.getTime(); long delta = pt - now; long newBefore = 0; String newBeforeString = ""; if (delta / Constants.DAY_TIME > 0) { long day = delta / Constants.DAY_TIME; newBefore = day * Constants.DAY_TIME; newBeforeString = "还有" + day + "天"; } else if (delta / Constants.HOUR_TIME > 0) { long hour = delta / Constants.HOUR_TIME; newBefore = hour * Constants.HOUR_TIME; newBeforeString = "还有" + hour + "小时"; } else if (delta / Constants.MINUTE_TIME > 0) { long minute = delta / Constants.MINUTE_TIME; newBefore = minute * Constants.MINUTE_TIME; newBeforeString = "还有" + minute + "分钟"; } else if (delta / Constants.SECOND_TIME > 0) { long second = delta / Constants.SECOND_TIME; newBefore = second * Constants.SECOND_TIME; newBeforeString = "还有" + second + "秒"; } if (p.checkBefore(newBefore)) { changeFlag = true; p.setBefore(newBefore); p.setBeforeString(newBeforeString); } } if (changeFlag) { version++; } return version; }
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 removeItem(int guid) { Objets.remove(guid); SQLManager.DELETE_ITEM(guid); }
public static void addObjet(Objet item, boolean saveSQL) { Objets.put(item.getGuid(), item); if (saveSQL) SQLManager.SAVE_NEW_ITEM(item); }
public static void createWorld() { System.out.println("====>Donnees statique<===="); System.out.println("Chargement des niveaux d'experiences:"); SQLManager.LOAD_EXP(); System.out.println(ExpLevels.size() + " niveaux ont ete charges"); System.out.println("Chargement des sorts:"); SQLManager.LOAD_SORTS(); System.out.println(Sorts.size() + " sorts ont ete charges"); System.out.println("Chargement des templates de monstre:"); SQLManager.LOAD_MOB_TEMPLATE(); System.out.println(MobTemplates.size() + " templates de monstre ont ete chargees"); System.out.println("Chargement des templates d'objet:"); SQLManager.LOAD_OBJ_TEMPLATE(); System.out.println(ObjTemplates.size() + " templates d'objet ont ete chargees"); System.out.println("Chargement des templates de NPC:"); SQLManager.LOAD_NPC_TEMPLATE(); System.out.println(NPCTemplates.size() + " templates de NPC ont ete chargees"); System.out.println("Chargement des questions de NPC:"); SQLManager.LOAD_NPC_QUESTIONS(); System.out.println(NPCQuestions.size() + " questions de NPC ont ete charges"); System.out.println("Chargement des reponses de NPC:"); SQLManager.LOAD_NPC_ANSWERS(); System.out.println(NPCReponses.size() + " reponses de NPC ont ete chargees"); System.out.println("Chargement des zones:"); SQLManager.LOAD_AREA(); System.out.println(Areas.size() + " zones ont ete chargees"); System.out.println("Chargement des sous-zone:"); SQLManager.LOAD_SUBAREA(); System.out.println(SubAreas.size() + " sous-zones ont ete chargees"); System.out.println("Chargement des template d'objet interactifs:"); SQLManager.LOAD_IOTEMPLATE(); System.out.println(IOTemplate.size() + " template d'IO ont ete charges"); System.out.println("Chargement des recettes:"); SQLManager.LOAD_CRAFTS(); System.out.println(Crafts.size() + " recettes ont ete chargses"); System.out.println("Chargement des metiers:"); SQLManager.LOAD_JOBS(); System.out.println(Jobs.size() + " metiers ont ete charges"); System.out.println("Chargement des panolies:"); SQLManager.LOAD_ITEMSETS(); System.out.println(ItemSets.size() + " panoplies ont ete chargees"); System.out.println("Chargement des maps:"); SQLManager.LOAD_MAPS(); System.out.println(Cartes.size() + " maps ont ete chargees"); System.out.println("Chargement des Triggers:"); int nbr = SQLManager.LOAD_TRIGGERS(); System.out.println(nbr + " triggers ont ete charges"); System.out.println("Chargement des actions de fin de combat:"); nbr = SQLManager.LOAD_ENDFIGHT_ACTIONS(); System.out.println(nbr + " actions ont ete charges"); System.out.println("Chargement des npcs:"); nbr = SQLManager.LOAD_NPCS(); System.out.println(nbr + " npcs ont ete chargees"); System.out.println("Chargement des actions des objets:"); nbr = SQLManager.LOAD_ITEM_ACTIONS(); System.out.println(nbr + " actions ont ete chargees"); System.out.print("Chargement des Drops: "); SQLManager.LOAD_DROPS(); System.out.println("Ok !"); System.out.println("Chargement des Animations: "); SQLManager.LOAD_ANIMATIONS(); System.out.println(Animations.size() + " ont ete chargees"); System.out.println("====>Donnees dynamique<===="); System.out.print("Mise a 0 des logged: "); SQLManager.LOGGED_ZERO(); System.out.println("Ok !"); System.out.print("Chargement des items: "); SQLManager.LOAD_ITEMS_FULL(); System.out.println("Ok !"); System.out.print("Chargement des comptes: "); SQLManager.LOAD_COMPTES(); System.out.println(Comptes.size() + " comptes charges"); System.out.print("Chargement des personnages: "); SQLManager.LOAD_PERSOS(); System.out.println(Persos.size() + " personnages charges"); System.out.print("Chargement des guildes: "); SQLManager.LOAD_GUILDS(); System.out.println(Guildes.size() + " guildes chargees"); System.out.print("Chargement des dragodindes: "); SQLManager.LOAD_MOUNTS(); System.out.println(Dragodindes.size() + " dragodindes chargees"); System.out.print("Chargement des membres de guildes: "); SQLManager.LOAD_GUILD_MEMBERS(); System.out.println("Ok !"); System.out.print("Chargement des donnees d'enclos: "); nbr = SQLManager.LOAD_MOUNTPARKS(); System.out.println(nbr + " enclos charges"); System.out.print("Chargement des percepteurs: "); nbr = SQLManager.LOAD_PERCEPTEURS(); System.out.println(nbr + " percepteurs charges"); System.out.print("Chargement des maisons: "); nbr = SQLManager.LOAD_HOUSES(); System.out.println(nbr + " maisons chargees"); System.out.print("Chargement des coffres: "); nbr = SQLManager.LOAD_TRUNK(); System.out.println(nbr + " coffres chargees"); System.out.print("Chargement des zaaps: "); nbr = SQLManager.LOAD_ZAAPS(); System.out.println(nbr + " zaaps chargees"); System.out.print("Chargement des zaapis: "); nbr = SQLManager.LOAD_ZAAPIS(); System.out.println(nbr + " zaapis chargees"); System.out.print("Chargement des BAN_IP: "); nbr = SQLManager.LOAD_BANIP(); System.out.println(nbr + " BAN_IP chargees"); System.out.print("Chargement des HDV: "); SQLManager.LOAD_HDVS(); SQLManager.LOAD_HDVS_ITEMS(); nextObjetID = SQLManager.getNextObjetID(); }
public synchronized void apply() { // Gestion des Kamas perso1.addKamas((-kamas1 + kamas2)); perso2.addKamas((-kamas2 + kamas1)); for (Couple<Integer, Integer> couple : items1) { if (couple.second == 0) continue; if (!perso1.hasItemGuid( couple.first)) // Si le perso n'a pas l'item (Ne devrait pas arriver) { couple.second = 0; // On met la quantité a 0 pour éviter les problemes continue; } Objet obj = World.getObjet(couple.first); if ((obj.getQuantity() - couple.second) < 1) // S'il ne reste plus d'item apres l'échange { perso1.removeItem(couple.first); couple.second = obj.getQuantity(); SocketManager.GAME_SEND_REMOVE_ITEM_PACKET(perso1, couple.first); if (!perso2.addObjet(obj, true)) // Si le joueur avait un item similaire World.removeItem(couple.first); // On supprime l'item inutile } else { obj.setQuantity(obj.getQuantity() - couple.second); SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(perso1, obj); Objet newObj = Objet.getCloneObjet(obj, couple.second); if (perso2.addObjet(newObj, true)) // Si le joueur n'avait pas d'item similaire World.addObjet(newObj, true); // On ajoute l'item au World } } for (Couple<Integer, Integer> couple : items2) { if (couple.second == 0) continue; if (!perso2.hasItemGuid( couple.first)) // Si le perso n'a pas l'item (Ne devrait pas arriver) { couple.second = 0; // On met la quantité a 0 pour éviter les problemes continue; } Objet obj = World.getObjet(couple.first); if ((obj.getQuantity() - couple.second) < 1) // S'il ne reste plus d'item apres l'échange { perso2.removeItem(couple.first); couple.second = obj.getQuantity(); SocketManager.GAME_SEND_REMOVE_ITEM_PACKET(perso2, couple.first); if (!perso1.addObjet(obj, true)) // Si le joueur avait un item similaire World.removeItem(couple.first); // On supprime l'item inutile } else { obj.setQuantity(obj.getQuantity() - couple.second); SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(perso2, obj); Objet newObj = Objet.getCloneObjet(obj, couple.second); if (perso1.addObjet(newObj, true)) // Si le joueur n'avait pas d'item similaire World.addObjet(newObj, true); // On ajoute l'item au World } } // Fin perso1.set_isTradingWith(0); perso2.set_isTradingWith(0); perso1.setCurExchange(null); perso2.setCurExchange(null); SocketManager.GAME_SEND_Ow_PACKET(perso1); SocketManager.GAME_SEND_Ow_PACKET(perso2); SocketManager.GAME_SEND_STATS_PACKET(perso1); SocketManager.GAME_SEND_STATS_PACKET(perso2); SocketManager.GAME_SEND_EXCHANGE_VALID(perso1.get_compte().getGameThread().get_out(), 'a'); SocketManager.GAME_SEND_EXCHANGE_VALID(perso2.get_compte().getGameThread().get_out(), 'a'); SQLManager.SAVE_PERSONNAGE(perso1, true); SQLManager.SAVE_PERSONNAGE(perso2, true); }
public static void addGuild(Guild g, boolean save) { Guildes.put(g.get_id(), g); if (save) SQLManager.SAVE_NEWGUILD(g); }