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
 }
Example #2
0
  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);
		}
	}
Example #5
0
 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;
 }
Example #6
0
  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);
 }
Example #10
0
  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();
  }
Example #11
0
 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);
 }
Example #12
0
 public static void addGuild(Guild g, boolean save) {
   Guildes.put(g.get_id(), g);
   if (save) SQLManager.SAVE_NEWGUILD(g);
 }