示例#1
0
    public synchronized long getKamas(int guid) {
      int i = 0;
      if (perso1.get_GUID() == guid) i = 1;
      else if (perso2.get_GUID() == guid) i = 2;

      if (i == 1) return kamas1;
      else if (i == 2) return kamas2;
      return 0;
    }
示例#2
0
 public static void unloadPerso(int g) {
   Personnage toRem = Persos.get(g);
   if (!toRem.getItems().isEmpty()) {
     for (Entry<Integer, Objet> curObj : toRem.getItems().entrySet()) {
       Objets.remove(curObj.getKey());
     }
   }
   toRem = null;
   // Persos.remove(g);
 }
示例#3
0
 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);
     }
   }
 }
示例#4
0
 public synchronized void cancel() {
   if (perso1.get_compte() != null)
     if (perso1.get_compte().getGameThread() != null)
       SocketManager.GAME_SEND_EV_PACKET(perso1.get_compte().getGameThread().get_out());
   if (perso2.get_compte() != null)
     if (perso2.get_compte().getGameThread() != null)
       SocketManager.GAME_SEND_EV_PACKET(perso2.get_compte().getGameThread().get_out());
   perso1.set_isTradingWith(0);
   perso2.set_isTradingWith(0);
   perso1.setCurExchange(null);
   perso2.setCurExchange(null);
 }
示例#5
0
  public static void AddMarried(int ordre, Personnage perso) {
    Personnage Perso = Married.get(ordre);
    if (Perso != null) {
      if (perso.get_GUID() == Perso.get_GUID()) // Si c'est le meme joueur...
      return;
      if (Perso.isOnline()) // Si perso en ligne...
      {
        Married.remove(ordre);
        Married.put(ordre, perso);
        return;
      }

      return;
    } else {
      Married.put(ordre, perso);
      return;
    }
  }
示例#6
0
    public synchronized int getQuaItem(int itemID, int playerGuid) {
      ArrayList<Couple<Integer, Integer>> items;
      if (perso1.get_GUID() == playerGuid) items = items1;
      else items = items2;

      for (Couple<Integer, Integer> curCoupl : items) {
        if (curCoupl.first == itemID) {
          return curCoupl.second;
        }
      }

      return 0;
    }
示例#7
0
 public static void addSeller(Personnage p) {
   if (Seller.get(p.get_curCarte().get_id()) == null) {
     ArrayList<Integer> PersoID = new ArrayList<Integer>();
     PersoID.add(p.get_GUID());
     Seller.put(p.get_curCarte().get_id(), PersoID);
   } else {
     ArrayList<Integer> PersoID = new ArrayList<Integer>();
     PersoID.addAll(Seller.get(p.get_curCarte().get_id()));
     PersoID.add(p.get_GUID());
     Seller.remove(p.get_curCarte().get_id());
     Seller.put(p.get_curCarte().get_id(), PersoID);
   }
 }
示例#8
0
 public static void Wedding(Personnage Homme, Personnage Femme, int isOK) {
   if (isOK > 0) {
     SocketManager.GAME_SEND_cMK_PACKET_TO_MAP(
         Homme.get_curCarte(),
         "",
         -1,
         "Prêtre",
         "Je déclare "
             + Homme.get_name()
             + " et "
             + Femme.get_name()
             + " unis par les liens sacrés du mariage.");
     Homme.MarryTo(Femme);
     Femme.MarryTo(Homme);
   } else {
     SocketManager.GAME_SEND_Im_PACKET_TO_MAP(
         Homme.get_curCarte(), "048;" + Homme.get_name() + "~" + Femme.get_name());
   }
   Married.get(0).setisOK(0);
   Married.get(1).setisOK(0);
   Married.clear();
 }
示例#9
0
    public synchronized void toogleOK(int guid) {
      int i = 0;
      if (perso1.get_GUID() == guid) i = 1;
      else if (perso2.get_GUID() == guid) i = 2;

      if (i == 1) {
        ok1 = !ok1;
        SocketManager.GAME_SEND_EXCHANGE_OK(
            perso1.get_compte().getGameThread().get_out(), ok1, guid);
        SocketManager.GAME_SEND_EXCHANGE_OK(
            perso2.get_compte().getGameThread().get_out(), ok1, guid);
      } else if (i == 2) {
        ok2 = !ok2;
        SocketManager.GAME_SEND_EXCHANGE_OK(
            perso1.get_compte().getGameThread().get_out(), ok2, guid);
        SocketManager.GAME_SEND_EXCHANGE_OK(
            perso2.get_compte().getGameThread().get_out(), ok2, guid);
      } else return;

      if (ok1 && ok2) apply();
    }
示例#10
0
  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;
    }
  }
示例#11
0
 public static void deletePerso(Personnage perso) {
   if (perso.get_guild() != null) {
     if (perso.get_guild().getMembers().size()
         <= 1) // Il est tout seul dans la guilde : Supression
     {
       World.removeGuild(perso.get_guild().get_id());
     } else if (perso.getGuildMember().getRank()
         == 1) // On passe les pouvoir a celui qui a le plus de droits si il est meneur
     {
       int curMaxRight = 0;
       Personnage Meneur = null;
       for (Personnage newMeneur : perso.get_guild().getMembers()) {
         if (newMeneur == perso) continue;
         if (newMeneur.getGuildMember().getRights() < curMaxRight) {
           Meneur = newMeneur;
         }
       }
       perso.get_guild().removeMember(perso);
       Meneur.getGuildMember().setRank(1);
     } else // Supression simple
     {
       perso.get_guild().removeMember(perso);
     }
   }
   perso.remove(); // Supression BDD Perso, items, monture.
   World.unloadPerso(perso.get_GUID()); // UnLoad du perso+item
 }
示例#12
0
 public static Personnage getPersoByName(String name) {
   ArrayList<Personnage> Ps = new ArrayList<Personnage>();
   Ps.addAll(Persos.values());
   for (Personnage P : Ps) if (P.get_name().equalsIgnoreCase(name)) return P;
   return null;
 }
示例#13
0
 public static void addPersonnage(Personnage perso) {
   Persos.put(perso.get_GUID(), perso);
 }
示例#14
0
    public synchronized void removeItem(int guid, int qua, int pguid) {
      int i = 0;
      if (perso1.get_GUID() == pguid) i = 1;
      else if (perso2.get_GUID() == pguid) i = 2;
      ok1 = false;
      ok2 = false;

      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso1.get_compte().getGameThread().get_out(), ok1, perso1.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso2.get_compte().getGameThread().get_out(), ok1, perso1.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso1.get_compte().getGameThread().get_out(), ok2, perso2.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso2.get_compte().getGameThread().get_out(), ok2, perso2.get_GUID());

      Objet obj = World.getObjet(guid);
      if (obj == null) return;
      String add = "|" + obj.getTemplate().getID() + "|" + obj.parseStatsString();
      if (i == 1) {
        Couple<Integer, Integer> couple = getCoupleInList(items1, guid);
        int newQua = couple.second - qua;
        if (newQua < 1) // Si il n'y a pu d'item
        {
          items1.remove(couple);
          SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso1, 'O', "-", "" + guid);
          SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
              perso2.get_compte().getGameThread().get_out(), 'O', "-", "" + guid);
        } else {
          couple.second = newQua;
          SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso1, 'O', "+", "" + guid + "|" + newQua);
          SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
              perso2.get_compte().getGameThread().get_out(),
              'O',
              "+",
              "" + guid + "|" + newQua + add);
        }
      } else if (i == 2) {
        Couple<Integer, Integer> couple = getCoupleInList(items2, guid);
        int newQua = couple.second - qua;

        if (newQua < 1) // Si il n'y a pu d'item
        {
          items2.remove(couple);
          SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
              perso1.get_compte().getGameThread().get_out(), 'O', "-", "" + guid);
          SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso2, 'O', "-", "" + guid);
        } else {
          couple.second = newQua;
          SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
              perso1.get_compte().getGameThread().get_out(),
              'O',
              "+",
              "" + guid + "|" + newQua + add);
          SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso2, 'O', "+", "" + guid + "|" + newQua);
        }
      }
    }
示例#15
0
    public synchronized void addItem(int guid, int qua, int pguid) {
      ok1 = false;
      ok2 = false;

      Objet obj = World.getObjet(guid);
      int i = 0;

      if (perso1.get_GUID() == pguid) i = 1;
      if (perso2.get_GUID() == pguid) i = 2;

      if (qua == 1) qua = 1;
      String str = guid + "|" + qua;
      if (obj == null) return;
      String add = "|" + obj.getTemplate().getID() + "|" + obj.parseStatsString();
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso1.get_compte().getGameThread().get_out(), ok1, perso1.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso2.get_compte().getGameThread().get_out(), ok1, perso1.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso1.get_compte().getGameThread().get_out(), ok2, perso2.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso2.get_compte().getGameThread().get_out(), ok2, perso2.get_GUID());
      if (i == 1) {
        Couple<Integer, Integer> couple = getCoupleInList(items1, guid);
        if (couple != null) {
          couple.second += qua;
          SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(
              perso1, 'O', "+", "" + guid + "|" + couple.second);
          SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
              perso2.get_compte().getGameThread().get_out(),
              'O',
              "+",
              "" + guid + "|" + couple.second + add);
          return;
        }
        SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso1, 'O', "+", str);
        SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
            perso2.get_compte().getGameThread().get_out(), 'O', "+", str + add);
        items1.add(new Couple<Integer, Integer>(guid, qua));
      } else if (i == 2) {
        Couple<Integer, Integer> couple = getCoupleInList(items2, guid);
        if (couple != null) {
          couple.second += qua;
          SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(
              perso2, 'O', "+", "" + guid + "|" + couple.second);
          SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
              perso1.get_compte().getGameThread().get_out(),
              'O',
              "+",
              "" + guid + "|" + couple.second + add);
          return;
        }
        SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso2, 'O', "+", str);
        SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
            perso1.get_compte().getGameThread().get_out(), 'O', "+", str + add);
        items2.add(new Couple<Integer, Integer>(guid, qua));
      }
    }
示例#16
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);
 }
示例#17
0
    public synchronized void setKamas(int guid, long k) {
      ok1 = false;
      ok2 = false;

      int i = 0;
      if (perso1.get_GUID() == guid) i = 1;
      else if (perso2.get_GUID() == guid) i = 2;
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso1.get_compte().getGameThread().get_out(), ok1, perso1.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso2.get_compte().getGameThread().get_out(), ok1, perso1.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso1.get_compte().getGameThread().get_out(), ok2, perso2.get_GUID());
      SocketManager.GAME_SEND_EXCHANGE_OK(
          perso2.get_compte().getGameThread().get_out(), ok2, perso2.get_GUID());

      if (i == 1) {
        kamas1 = k;
        SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso1, 'G', "", k + "");
        SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
            perso2.get_compte().getGameThread().get_out(), 'G', "", k + "");
      } else if (i == 2) {
        kamas2 = k;
        SocketManager.GAME_SEND_EXCHANGE_OTHER_MOVE_OK(
            perso1.get_compte().getGameThread().get_out(), 'G', "", k + "");
        SocketManager.GAME_SEND_EXCHANGE_MOVE_OK(perso2, 'G', "", k + "");
      }
    }
示例#18
0
 public static void PriestRequest(Personnage perso, Carte carte, int IdPretre) {
   Personnage Homme = Married.get(0);
   Personnage Femme = Married.get(1);
   if (Homme.getWife() != 0) {
     SocketManager.GAME_SEND_MESSAGE_TO_MAP(
         carte, Homme.get_name() + " est deja marier!", Ancestra.CONFIG_MOTD_COLOR);
     return;
   }
   if (Femme.getWife() != 0) {
     SocketManager.GAME_SEND_MESSAGE_TO_MAP(
         carte, Femme.get_name() + " est deja marier!", Ancestra.CONFIG_MOTD_COLOR);
     return;
   }
   SocketManager.GAME_SEND_cMK_PACKET_TO_MAP(
       perso.get_curCarte(),
       "",
       -1,
       "Prêtre",
       perso.get_name()
           + " acceptez-vous d'épouser "
           + getMarried((perso.get_sexe() == 1 ? 0 : 1)).get_name()
           + " ?");
   SocketManager.GAME_SEND_WEDDING(
       carte,
       617,
       (Homme == perso ? Homme.get_GUID() : Femme.get_GUID()),
       (Homme == perso ? Femme.get_GUID() : Homme.get_GUID()),
       IdPretre);
 }