Résolu Ajouter les Ornements sur son émulateur

Statut
N'est pas ouverte pour d'autres réponses.

~SKyDroW~

Real Time Edit of PS3 Hen <3
Premium
Inscription
31 Décembre 2011
Messages
1 154
Réactions
523
Points
20 333
Bonjour/Bonsoir,

Cela fait quelque mois que j'ai été inactif, pour fêter mon retour je viens vous partager une exclusivité que personne n'as encore vraiment partagé du moins je ne l'ai pas encore vue sur un forum.

/!Attention!\ Toute reproduction ou partage de ce tutoriel mènera à la suppression du tutoriel et des prochaines exclusivités que je vous aient réservé.


Pré-Requis :

  • Les sources d'un émulateur
  • Avoir quelques bases de codages (même si j’essaye de simplifier ce tutoriel au maximum)
  • Base d'un Émulateur dérivés d'Ancestra ou bien iCore ( je n'ai pas adapter le code pour d'autres émulateurs)
Tutoriel pour les émulateurs de base Ancestra :

  1. Ouvrez vos sources puis ouvrez dans un premier temps, puis commençons par le fichier GameThread.java, une fois ouvert faites Ctrl + F puis recherchez ceci :
    Code:
    public void run()
    Ensuite à la fin de ce code après la boucle rajouter ce bout de code
    Code:
    private synchronized void parseOrnement(String packet)
        {
            try
            {
                switch (packet.charAt(1))
                {
                case 'G': // Ornement
                    String o1 = packet.substring(2);
                    int ornement = 0;
                    try
                    {
                      ornement  = Integer.parseInt(o1);
                    } catch (Exception e)
                    {
                        return;
                    }
                    int points = _compte.getPoints();
                    if (ornement == 6 || ornement == 9 || ornement == 12 || ornement == 17 || ornement == 21 || ornement == 26 || ornement == 30 || ornement == 33 || ornement == 37 || ornement == 38 || ornement == 39 || ornement == 40 || ornement == 41 || ornement == 42 || ornement == 43 || ornement == 44)
                    {
                        if (points >= 100)
                        {
                            int newPoints = points - 100;
                            _compte.addPoints(newPoints);
                             SocketManager.GAME_SEND_MESSAGE(this._perso, "Tu as obtenu un nouveau Ornement!", Ancestra.CONFIG_MOTD_COLOR);
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Tu a perdu 100 points boutique.", Ancestra.CONFIG_MOTD_COLOR);
                            this._perso.setOrnement(ornement);
                        }else
                            if (points < 100)
                            {
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Il faut au minimum 100 points boutique pour achèter cette Ornement.", Ancestra.CONFIG_MOTD_COLOR);
                            }
                    }else
                        if (ornement == 5 || ornement == 8 || ornement == 11 || ornement == 16 || ornement == 20 || ornement == 23 || ornement == 25 || ornement == 29 || ornement == 32 || ornement == 36)
                        {
                        if (points >= 60)
                        {
                            int newPoints = points - 60;
                            _compte.addPoints(newPoints);
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Tu as obtenu un nouveau Ornement!", Ancestra.CONFIG_MOTD_COLOR);
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Tu as perdu 60 points boutique.", Ancestra.CONFIG_MOTD_COLOR);
                            this._perso.setOrnement(ornement);
                        }else
                            if (points < 60)
                        {
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Il faut au minimum 60 points boutique pour achèter cette Ornement.", Ancestra.CONFIG_MOTD_COLOR);
                        }
                    }else
                        if (ornement == 4 || ornement == 7 || ornement == 10 || ornement == 13 || ornement == 14 || ornement == 15 || ornement == 18 || ornement == 19 || ornement == 22 || ornement == 24 || ornement == 28 || ornement == 31 || ornement == 34 || ornement == 35)
                        {
                        if (points >= 30)
                        {
                            int newPoints = points - 30;
                            _compte.addPoints(newPoints);
                             SocketManager.GAME_SEND_MESSAGE(_perso, "Tu as obtenu un nouveau Ornement!", Ancestra.CONFIG_MOTD_COLOR);
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Tu as perdu 30 points boutique.", Ancestra.CONFIG_MOTD_COLOR);
                            this._perso.setOrnement(ornement);
                        }else
                            if (points < 30)
                            {
                            SocketManager.GAME_SEND_MESSAGE(this._perso, "Il faut au minimum 30 points boutique pour achèter cette Ornement.", Ancestra.CONFIG_MOTD_COLOR);
                            }
                    }else
                        if (ornement == 0)
                        {
                        this._perso.setOrnement(ornement);
                    }else
                        if (ornement == 1 || ornement == 2 || ornement == 3)
                        {
                        SocketManager.GAME_SEND_MESSAGE(this._perso, "Tu as obtenu un nouveau Ornement!", Ancestra.CONFIG_MOTD_COLOR);
                        this._perso.setOrnement(ornement);
                        }
                    SocketManager.GAME_SEND_ERASE_ON_MAP_TO_MAP(_perso.get_curCarte(), _perso.get_GUID());
                    SocketManager.GAME_SEND_ADD_PLAYER_TO_MAP(_perso.get_curCarte(), _perso); break;
                }   
                } catch (Exception e)
                {
                SocketManager.GAME_SEND_BN(_out);
                }           
        }
  2. Ne paniquez pas je sais il y a des erreurs qui sont survenus, tout seras régler une fois le tutoriel finis. Ensuite recherchez
    Code:
    case 'G':
                    parseGamePacket(packet);
                break;
    Et après le break; sautez une ligne et insérez ce bout de code
    Code:
    case 'Z':
                    parseOrnement(packet);
                break;
  3. /!Attention!\ Si vous avez déjà le système de points boutique sur votre émulateur passez cette étape ! Ouvrez Compte.java et en dessous de private int _cadeau; mettez ceci
    Code:
    private int _points;
    Ensuite recherchez int cadeau, et mettez a coté
    Code:
     int points,
    puis cherchez this._cadeau = cadeau; sautez une linge et insérez ce code
    Code:
    this._points = points;
    En dessous de la fonction public void setCadeau(int cadeau) insérez ces codes
    Code:
    public int getPoints() {
            return _points;
        }
       
        public void addPoints(int point) {
            _points += point;
            SQLManager.UPDATE_POINTS(this._GUID, _points);
        }
  4. Rendez vous dans SQLManager allez tout à la fin et insérez ces codes avant la fin de la boucle final bien sûr
    Code:
    public static void UPDATE_POINTS(int accc, int puntos)
            {
                String baseQuery = "UPDATE accounts SET " +
                "`points` = ?" +
                " WHERE `guid` = ?;";
               
                try
                {
                    PreparedStatement p = newTransact(baseQuery, othCon);
                   
                    p.setInt(1, puntos);
                    p.setInt(2, accc);
                   
                    p.executeUpdate();
                    closePreparedStatement(p);
                }catch(SQLException e)
                {
                    RealmServer.addToLog("SQL ERROR: "+e.getMessage());
                    RealmServer.addToLog("Query: "+baseQuery);
                    e.printStackTrace();
                }
            }
            public static int LOAD_POINTS(String user)
            {
                try
                {
                    ResultSet RS = SQLManager.executeQuery("SELECT * from accounts WHERE `account` LIKE '"+user+"';",Ancestra.OTHER_DB_NAME);
                   
                    String baseQuery = "UPDATE accounts " +
                                        "SET `reload_needed` = 0 " +
                                        "WHERE guid = ?;";
                    PreparedStatement p = newTransact(baseQuery, othCon);
                    while(RS.next())
                    {
                    p.setInt(1, RS.getInt("guid"));
                        p.executeUpdate();
                        return RS.getInt("points");
                    }
                    closePreparedStatement(p);
                    closeResultSet(RS);
                   
                   
                }catch(SQLException e)
                {
                    RealmServer.addToLog("SQL ERROR: "+e.getMessage());
                    e.printStackTrace();
                }
                return 0;
            }
  5. Ouvrez Personnage.java en dessous de private boolean _isInBank; mettez ceci
    Code:
    //Ornements
        private int _ornement = 0;
    Cherchez public Personnage(int puis après int teamID, mettez
    Code:
     int ornement,
    Vous suivez ? Très bien. Maintenant ça va commencer à devenir un peu plus compliqué, déscendez jusqu'à la fin de la fonction public CREATE_PERSONNAGE puis vous voyez une série de chiffre comme ceci
    Code:
     0,
                    -1,
                     0,
                     0,
                     0,
                     z,
                     (byte)0,
                     0,
                     0,
                    "",
                    -1,
                     0,
                    -1
                    );
    A peu près mais ils sont en rouge Eclipse vous signale une erreur, mais pas de panique, rajoutez une , au dernier chiffre qui devrai être -1, sautez une ligne puis ajoutez seulement un 0 ce qui devrai ressembler à ceci par rapport à la série de chiffre qui est juste au dessus (sur ce topic le dernier code)
    Code:
        0,
                    -1,
                     0,
                     0,
                     0,
                     z,
                     (byte)0,
                     0,
                     0,
                    "",
                    -1,
                     0,
                    -1,
                     0
                    );
    Normalement votre erreur c'est évaporé si ce n'est pas le cas mettez un -1 à la place du 0 que vous avez ajouté sinon contactez moi pour plus d'aide. Recherchez str.append("0").append(";") puis remplacez cette ligne par ceci
    Code:
    str.append(this._ornement).append(";");//Code impératif afin de voir les ornements
    Popop ! C'est pas encore finis ! Allez à la fin du fichier personnage.java puis avant la fin de la dernière boucle (donc le dernier } ) mettez ces codes
    Code:
    public void setOrnement(int ornement) {
                _ornement = ornement;
            }
           
            public int getOrnement() {
                return _ornement;
            }
  6. Ouvrez SQLManager a nouveau, courage c'est la dernière étape ! Recherchez
    Code:
    public static void SAVE_PERSONNAGE
    Puis a la ligne ou ce trouve ce code
    Code:
    " WHERE `personnages`.`guid` = ? LIMIT 1 ;";
    Juste avant vous sautez une ligne puis vous ajoutez
    Code:
    "`ornement`= ?" +
    et à la ligne juste avant celle que vous avez ajoutez après le =? vous rajoutez une virgule ce qui devrait donner ceci "`isSeller`(c'est un exemple) =?,". Descendez puis toujours dans la même fonction cherche la ligne ou ce code est affiché
    Code:
        p.setInt(36,_perso.get_GUID());
    (Si vous ne trouvez pas cette ligne recherchez just _perso.get_GUID()); ) Saut une ligne au dessus de ce code et mettez ceci
    Code:
    p.setInt(35,_perso.getOrnement());
    Vérifiez bien que les numéros ce succèdes bien comme les précédents vous pouvez voir une suite de nombre par ligne de code suivez ces nombre par exemple si c'est bien 36 pour la ligne p.setInt(36,_perso.get_GUID()); le 36 devra être modifier en 37 et la ligne ou vous avez rajouté les ornements devra être le numéro 36. Cherchez LOAD_PERSO_BY_ACCOUNT puis allez vers ce bout de code
    Code:
    RS.getByte("title"),
                            RS.getInt("wife"),
                            RS.getInt("isSeller"),
                            RS.getString("quests"),
                            RS.getInt("teamID")
    Après le RS.getInt("teamID") rajoutez une virgule, sautez une ligne et rajouter ce bout de code
    Code:
    RS.getInt("ornement")
    Ce qui devrai vous donner
    Code:
    RS.getByte("title"),
                            RS.getInt("wife"),
                            RS.getInt("isSeller"),
                            RS.getString("quests"),
                            RS.getInt("teamID"),
                            RS.getInt("ornement")
    Faites pareil pour les fonctions public static void LOAD_PERSO puis public static void LOAD_PERSOS()
Voilà voilà la partie Java est ajouté ! Maintenant il ne vous reste plus qu'as adapter votre base de données, faites un clique droit sur votre table account puis rajouter cette ligne

Puis clique droit sur la table personnage et allez sur Design Table et rajoutez cette ligne comme sur l'image (n'ajoutez pas la ligne Incarnation)


Et voilà le tour est joué ! Si vous avez des questions surtout n'hésitez pas ! N'oubliez pas de vous munir du fichier Ornamentos.swf + d'un core adapté pour avoir les ornements sinon vous devrez utiliser votre base de donnée pour pouvoir mettre votre ornements ou vous devrez créer une commande.

Pour tout aide poser moi une question en privé ou sur le Topic ! Merci de respecter mon travail j'y est consacré du temps.

Cordialement iR3SH alias Swagg Man |Fan (Nom Fun)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut