Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Partage des drops des percepteurs ==> Fight => getGE()
- // En fin du for(Fighter F : TEAM2)
- if(_type == Constants.FIGHT_TYPE_PVT)
- {
- minkamas = (int)_perco.getKamas() / TEAM1.size();
- maxkamas = minkamas;
- possibleDrops.addAll(_perco.getDrops());
- }
- // Percepteur => Percepteur()
- public ArrayList<Drop> getDrops() {
- ArrayList<Drop> toReturn = new ArrayList<World.Drop>();
- for(Objet obj : _objets.values()) {
- toReturn.add(new Drop(obj.getTemplate().getID(),0, 100, obj.getQuantity()));
- }
- return toReturn;
- }
- // Fix du coup de poing ==> Fight => tryCac()
- // Remplacer :
- if(perso.getObjetByPos(Constants.ITEM_POS_ARME) == null)//S'il n'a pas de CaC
- {
- }
- // Par
- if(perso.getObjetByPos(Constants.ITEM_POS_ARME) == null)//S'il n'a pas de CaC
- {
- tryCastSpell(caster, World.getSort(0).getStatsByLevel(1), cellID);
- }else
- {
- //Reste de la condition
- // tryCastSpell()
- // Remplacer :
- if(fighter.isHide())showCaseToAll(fighter.getGUID(), fighter.get_fightCell().getID());
- // Par
- if(fighter.isHide())
- {
- if(Spell.getSpellID() == 0)// Si le coup est Coup de Poing alors on refait apparaitre le personnage
- {
- fighter.unHide(caseID);
- }else
- {
- showCaseToAll(fighter.getGUID(), fighter.get_fightCell().getID());
- }
- }
- // Protecteurs de ressource ==> Metier => JobAction=>endAction() en fin de méthode
- int maxPercent = 20+(P.getMetierBySkill(_skID).get_lvl()-20);
- if(P.getMetierBySkill(_skID).get_lvl() >= 20 && Formulas.getRandomValue(1, maxPercent) == maxPercent)
- {
- int[][] protectors = JobProtector.JOB_PROTECTORS;
- for(int i = 0; i < protectors.length; i++)
- {
- if(tID == protectors[i][1])
- {
- int monsterId = protectors[i][0];
- int monsterLvl = JobProtector.getProtectorLvl(P.get_lvl());
- P.get_curCarte().startFigthVersusMonstres(P, new Monstre.MobGroup(P.get_curCarte()._nextObjectID, cell.getID(), monsterId+","+monsterLvl+","+monsterLvl));
- break;
- }
- }
- }
- }
- }
- // JobProtector
- public static final int[][] JOB_PROTECTORS = //{protectorId, itemId}
- {
- {684,289},{684,2018},{685,400},{685,2032},{686,533},{686,1671},{687,401},{687,2021},{688,423},{688,2026},
- {689,532},{689,2029},{690,7018},{691,405},{692,425},{692,2035},{693,39},{694,441},{695,442},{696,443},
- {697,445},{698,444},{699,7032},{700,350},{701,446},{702,313},{703,7033},{704,421},{705,428},{706,395},
- {707,380},{708,593},{709,594},{710,7059},{711,303},{712,473},{713,476},{714,460},{715,2358},{716,2357},
- {717,471},{718,461},{719,7013},{720,7925},{721,474},{722,449},{723,7016},{724,470},{725,7014},{726,1782},
- {726,1790},{727,607},{727,1844},{727,1846},{728,603},{729,598},{730,1757},{730,1759},{731,1750},{732,1847},
- {732,1749},{733,1794},{733,1796},{734,1805},{734,1807},{735,600},{735,1799},{736,1779},{736,1792},{737,1784},
- {737,1788},{738,1801},{738,1803},{739,602},{739,1853}
- };
- public static int getProtectorLvl(int lvl)
- {
- if(lvl < 40)
- return 10;
- if(lvl < 80)
- return 20;
- if(lvl < 120)
- return 30;
- if(lvl < 160)
- return 40;
- if(lvl < 200)
- return 50;
- return 10;
- }
- // Libèrer la monture ==> GameThread => parseMountPacket
- case 'f'://Libère la monture
- Mount_free();
- private void Mount_free()
- {
- if(_perso.getMount() != null && _perso.isOnMount()) _perso.toogleOnMount();
- SocketManager.GAME_SEND_Re_PACKET(_perso, "-", _perso.getMount());
- SQLManager.DELETE_MOUNT(_perso);
- }
- // SQLManager
- public static void DELETE_MOUNT(Personnage perso)
- {
- String baseQuery = "DELETE FROM mounts_data WHERE id = ?";
- PreparedStatement p;
- try {
- p = newTransact(baseQuery, othCon);
- p.setInt(1, perso.getMount().get_id());
- p.execute();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- World.delDragoByID(perso.getMount().get_id());
- perso.setMountGiveXp(0);
- perso.setMount(null);
- SAVE_PERSONNAGE(perso, true);
- }
- // Refresh du statue de serveur lors d'une sauvegarde(Je ne sait pas si c'est fait sur la 48) ==> SocketManager
- public static void REALM_SEND_AH_PACKET(PrintWriter out)
- {
- StringBuilder packet = new StringBuilder();
- packet.append("AH").append(1).append(";").append(World.get_state()).append(";110;1").append('\000');
- send(out, packet.toString());
- }
- // World => SaveAll() Je te laisse les placer
- for (Compte c : Comptes.values())
- {
- if (c.getRealmThread() != null)
- SocketManager.REALM_SEND_AH_PACKET(c.getRealmThread()._out);
- }
- /* Quelque propositions */
- // Carte/SQLManager/Percepteur... : Faire le nombre réservistes par map pour une attaque de percepteur : On compte le nombre de cellID d'attaque et on ajoute ?
- // Formulas : Refaire le système de perte d'énergie :/ (A moins que sa soit la formule offi?)
- // Fight : Refaire le système de drop et mettre plusieurs StringBuilder
- // TryCac() TryCastSpell() CastSpell() GetGE() VerifyAllTeamDead() : Refaire le code plus propre ou alors l'alléger...
- // Quand un percepteur se fait attaqué est un personnage est sur une autre map que le percepteur on le remet sur la map où étais le perso avant
- // Pour finir les percepteurs il ne manque pas grand chose
- // Pour le FM il faudrait revoir ça de zéro :/
- // Dinde pas grand chose non plus a part l'élevage
- // Système d'énergie super simple à faire :
- // Quand le perso n'a plus d'énergie on le met en tombe on lui met les restrictions (AR3K) on lui send l'IM packet : M112 dans GameThread parseGamePacket case 'F' et _perso.FreeMySoul on altère le GM et pour la téléportation au plus proche cimetière :
- private void teleportToCemetery()
- {
- int[] cemeteryInfos = _curCarte.getSubArea().getArea().getCemetery();
- if(cemeteryInfos.length <= 0)
- return;
- teleport(cemeteryInfos[0], cemeteryInfos[1]);
- }
- // Faire les modif dans World,SQL area_data : cemetery et on met exemple 7411,100 si le joueur et dans la zone XX etc...
- // On send les phoénix les plus proches :
- // Constants :
- public static final String ALL_PHOENIX = "-11;-54|2;-12|-41;-17|5;-9|25;-4|36;5|12;12|10;19|-10;13|-14;31|-43;0|-60;-3|-58;18|24;-43|27;-33";
- // SocketManager :
- public static void GAME_SEND_INFO_HIGHLIGHT_PACKET(Personnage perso, String args)
- {
- String packet = "IH"+args;
- send(perso, packet);
- }
- // On send
- SocketManager.GAME_SEND_INFO_HIGHLIGHT_PACKET(this, Constants.ALL_PHOENIX);
- // L'abonnement pas très dur,juste à faire le système de perte de temps mais se qui dommage c'est que le temps va se perdre que quand l'émulateur est open a moins que sa soit du genre le site qui gère...
- /*
- Voici quelque formule officiel,autre bouts de code
- L'instant mathématique Initiative :
- Initiative = (Total PdV / 4 + Bonus Initiative) * (PdV restants / Total PdV)
- Initiative Sacrieur = (Total PdV / 8 + Bonus Initiative) * (PdV restants / Total PdV)
- L'instant mathématique Tacle :
- %Esquive = 300 * (Agi + 25) / (Agi + Agi Ennemi + 50) - 100
- */
- public static void GAME_OPEN_BUY(Personnage perso)
- {
- //On ouvre la PayZone.
- StringBuilder Packet = new StringBuilder();
- Packet.append("BP+");
- send(perso, Packet.toString());
- }
- public static void GAME_CLOSE_BUY(Personnage perso)
- {
- //On ferme la PayZone.
- StringBuilder Packet = new StringBuilder();
- Packet.append("BP+10");
- send(perso, Packet.toString());
- }
- // Corriger le cheat de càc où on pouvait se mettre 1000 de porté x)
- // Fight tryCac() arpès Objet arme perso.getObjetByPos(Constants.ITEM_POS_ARME);
- int dist = Pathfinding.getDistanceBetween(_map, caster.getFightCell().getID(), cellID);
- int MaxPO = arme.getTemplate().getPOmax();
- int MinPO = arme.getTemplate().getPOmin();
- if(dist < MinPO || dist > MaxPO)
- {
- //TODO: Y'a t'il un IM ?
- return;
- }
- // Il doit y avoir des fautes car j'ai modifier le nom des fonctions exemple : fight_id en fightId...
- // Quand on craft un objet on été obliger de fermer/ouvrir le panel de craft pour recrafter l'objet :
- // Métier : Recherche :
- //Baisse des stats ?
- //OQ82995355|2 Si echec renvoi les runes (une sorte de mise a jour de l'inventaire)
- //SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(_P, mod);
- // faut juste ajouter SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(_P, mod);
- // Augmenter la chance d'FM pour certaine runes
- // Ajout un serverId pour chaque gameserver
- /*
- Donc voilà pleins de petit codes qui servent très bien ;)
- Pour l'avancement de Ancestra Remake
- PS:Je suis prêt à commencer quand vous voulez ;)
- */
Advertisement
Add Comment
Please, Sign In to add comment