themantheman

 tutoriel / partage [JAVA] Implantation DD caméléone

Recommended Posts

Bonjour à vous !

Pour mon premier tutoriel sur ce forum je vais vous montrer comment implanter les dragodindes Caméléone , ainsi que l'ActionID 100 et l'Args 9

 

Pour savoir comment compiler etc , veuillez vous référer à ce post tuto

 

**Ouvrez votre source Dragodinde.java

et copier/coller par ceci ou bien regarder les modifications effectuer :

package objects;

import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;

import common.Constants;
import common.SQLManager;
import common.World;

import objects.Personnage.Stats;

public class Dragodinde {

   private int _id;
   private int _color;
   private int _sexe;
   private int _amour;
   private int _endurance;
   private int _level;
   private long _exp;
   private String _nom;
   private int _fatigue;
   private int _energie;
   private int _reprod;
   private int _maturite;
   private int _serenite;
   private Stats _stats = new Stats();
   private String _ancetres = ",,,,,,,,,,,,,";
   private ArrayList _items = new ArrayList();
   /*Baskwo:Cameleone
   Mathias52: Modification */
private List capacite = new ArrayList(2);
String _ability = ",";


   public Dragodinde(int color)
   {
       _id = World.getNextIdForMount();
       _color = color;
       _level = 1;
       _exp = 0;
       _nom = "SansNom";
       _fatigue = 0;
       _energie = getMaxEnergie();
       _reprod = 0;
       _maturite = getMaxMatu();
       _serenite = 0;
       _stats = Constants.getMountStats(_color,_level);
       _ancetres = ",,,,,,,,,,,,,";
       //Baskwo:Cameleone
       _ability = "0";

       World.addDragodinde(this);
       SQLManager.CREATE_MOUNT(this);
   }

   public Dragodinde(int id, int color, int sexe, int amour, int endurance,
           int level, long exp, String nom, int fatigue,
           int energie, int reprod, int maturite, int serenite,String items,String anc,
           //Baskwo:Cameleone
           String ability)
   {
       _id = id;
       _color = color;
       _sexe = sexe;
       _amour = amour;
       _endurance = endurance;
       _level = level;
       _exp = exp;
       _nom = nom;
       _fatigue = fatigue;
       _energie = energie;
       _reprod = reprod;
       _maturite = maturite;
       _serenite = serenite;
       _ancetres = anc;
       _stats = Constants.getMountStats(_color,_level);
       /*Baskwo:Cameleone
       Mathias52 : Modification*/
        _ability = ability;
        for (String s : ability.split(",",2)) {// 2 : Maximum 2 capa 
           if (s != null) {
           int a = Integer.parseInt(s);
       try{
           capacite.add(a);
       }catch(Exception e){}
   }
}
       for(String str : items.split(";"))
       {
           try
           {
               Objet obj = World.getObjet(Integer.parseInt(str));
               if(obj != null)_items.add(obj);
           }catch(Exception e){continue;}
       }
   }

   public int get_id() {
       return _id;
   }

   public int get_color() {
       return _color;
   }

   public int get_sexe() {
       return _sexe;
   }

   public int get_amour() {
       return _amour;
   }

   public String get_ancetres() {
       return _ancetres;
   }

   public int get_endurance() {
       return _endurance;
   }
   public int get_level() {
       return _level;
   }

   public long get_exp() {
       return _exp;
   }

   public String get_nom() {
       return _nom;
   }

   public int get_fatigue() {
       return _fatigue;
   }

   public int get_energie() {
       return _energie;
   }

   public int get_reprod() {
       return _reprod;
   }

   public int get_maturite() {
       return _maturite;
   }

   public int get_serenite() {
       return _serenite;
   }

   public Stats get_stats() {
       return _stats;
   }

   public ArrayList get_items() {
       return _items;
   }

   public String parse()
   {
       String str = _id+":";
       str += _color+":";
       str += _ancetres+":";
       str += ",," + _ability + ":";//Baskwo:Cameleone
        str += _nom+":";
       str += _sexe+":";
       str += parseXpString()+":";
       str += _level+":";
       str += "1"+":";//FIXME
       str += getTotalPod()+":";
       str += "0"+":";//FIXME podActuel?
       str += _endurance+",10000:";
       str += _maturite+","+getMaxMatu()+":";
       str += _energie+","+getMaxEnergie()+":";
       str += _serenite+",-10000,10000:";
       str += _amour+",10000:";
       str += "-1"+":";//FIXME
       str += "0"+":";//FIXME
       str += parseStats()+":";
       str += _fatigue+",240:";
       str += _reprod+",20:";
       return str;
   }

   private String parseStats()
   {
       String stats = "";
       for(Entry entry : _stats.getMap().entrySet())
       {
           if(entry.getValue() <= 0)continue;
           if(stats.length() >0)stats += ",";
           stats += Integer.toHexString(entry.getKey())+"#"+Integer.toHexString(entry.getValue())+"#0#0";
       }
       return stats;
   }

   private int getMaxEnergie()
   {
       int energie = 10000;
       return energie;
   }

   private int getMaxMatu()
   {
       int matu = 1000;
       return matu;
   }

   private int getTotalPod()
   {
       int pod = 1000;

       return pod;
   }

   private String parseXpString()
   {
       return _exp+","+World.getExpLevel(_level).dinde+","+World.getExpLevel(_level+1).dinde;
   }

   public boolean isMountable()
   {
       if(_energie <10
       || _maturite < getMaxMatu()
       || _fatigue == 240)return false;
       return true;
   }

   public String getItemsId()
   {
       String str = "";
       for(Objet obj : _items)str += (str.length()>0?";":"")+obj.getGuid();
       return str;
   }

   public void setName(String packet)
   {
       _nom = packet;
       SQLManager.UPDATE_MOUNT_INFOS(this);
   }

   public void addXp(long amount)
   {
       _exp += amount;

       while(_exp >= World.getExpLevel(_level+1).dinde && _level<100)
           levelUp();

   }

   public void levelUp()
   {
       _level++;
       _stats = Constants.getMountStats(_color,_level);
   }
   //Baskwo:Cameleone
   public String get_color(String a)
   {
          String b = "";
          if (capacite.contains(9)) b = b + "," + a;
             return _color + b;
   }
   public boolean isCameleone() {
          return capacite.contains(9);
   }
   public String get_ability() {
          return _ability;
   }
   public boolean addCapacity(String capa) {
   int c = 0;
   for(String s : capa.split(",",2)) {
       if(capacite.size() >= 2) return false;
       try{
               c = Integer.parseInt(s);
       }catch(Exception e){}
               if(c != 0) {
               capacite.add(c);
       }
               if(capacite.size() == 1) {
           this._ability = capacite.get(0) + ",";
               } else {
                   this._ability = capacite.get(0) + "," + capacite.get(1);
           }
       }
       return true;
   }

} 
 

 

Fermer puis sauvegarder celle-ci

 

**Ouvrez la source SQLmanager.java

Et trouver cette partie du code et fait en la modification apporté :

new Dragodinde
                   (
                       RS.getInt("id"),
                       RS.getInt("color"),
                       RS.getInt("sexe"),
                       RS.getInt("amour"),
                       RS.getInt("endurance"),
                       RS.getInt("level"),
                       RS.getLong("xp"),
                       RS.getString("name"),
                       RS.getInt("fatigue"),
                       RS.getInt("energie"),
                       RS.getInt("reproductions"),
                       RS.getInt("maturite"),
                       RS.getInt("serenite"),
                       RS.getString("items"),
                       RS.getString("ancetres"),
                       //Baskwo:Cameleone
                       RS.getString("ability")
                   ) 
 

 

Fermer et sauvegarder.

 

**Ouvrez la source Personnage.java

Copier/coller celle-ci ou regarder les modifications apportées.

}
		str+= ";";//Emote
		str+= ";";//Emote timer
		if(this._guildMember!=null && this._guildMember.getGuild().getMembers().size()>9)
		{
			str += this._guildMember.getGuild().get_name()+";"+this._guildMember.getGuild().get_emblem()+";";
		}
		else str+= ";;";
		str+= /* Restriction */ "0;";//TODO: Restriction
		str+= (_onMount&&_mount!=null?_mount.get_color(parsecolortomount()):"")+";";//Cameleone
		str+= ";";
	}
	return str;
 

 

et a la fin

}
   //Baskwo:Cameleone
   public String parsecolortomount() {
          return (_color1 == -1 ? "" : Integer.toHexString(_color1)) + "," + (_color2 == -1 ? "" : Integer.toHexString(_color2)) + "," + (_color3 == -1 ? "" : Integer.toHexString(_color3));
   }
}
 

 

Fermer et sauvegarder.

 

** Ouvrez la source Action.java

Ajouter ceci ( nouvelle action ID) ( regarder comment les autres sont placer et faite de même avec celle-ci )

case 100://Donner x abileter
                     Dragodinde mount = perso.getMount();
                     World.addDragodinde(
                       new Dragodinde(
                      mount.get_id(),
                      mount.get_color(),
                      mount.get_sexe(),
                      mount.get_amour(),
                      mount.get_endurance(),
                      mount.get_level(),
                      mount.get_exp(),
                      mount.get_nom(),
                      mount.get_fatigue(),
                      mount.get_energie(),
                      mount.get_reprod(),
                      mount.get_maturite(),
                      mount.get_serenite(),
                      mount.getItemsId(),
                      mount.get_ancetres(),
                      args));
                     perso.setMount(World.getDragoByID(mount.get_id()));
                     SocketManager.GAME_SEND_Re_PACKET(perso, "+", World.getDragoByID(mount.get_id()));
                     SQLManager.UPDATE_MOUNT_INFOS(mount);
        break; 
 

Fermer et sauvegarder.

 

**Compiler votre Ancestra.jar comme le tuto en début de post le montre.

 

**Ajouter un colonne "ability" dans mount_data ( navicat)

 

** Créé votre PNJ caméleone si vous voulez ( ICI marche sous ancestra remake )

 

** Aller en jeu et transformer votre Monture via le PNJ

 

BUG TROUVE : Au reboot du serveur la dragodinde n'est plus caméléone....

J'ai réctifié ce problème en allant dans Navicat=>ancestra_other=>mount_data et dans ability mettre 9. Et là votre monture sera toujours caméléone même après le reboot.

 

AIDE : Si quelqu'un serait trouvé comment réctifié le Bug dite le moi :)

Et si vous savez comment je pourrais faire pour mettre ability 9 à toute les monture créé ?

 

Des questions ? Je vous aiderez si j'y arrive :)

 

Cordialement !

 

SOURCE : Merci à Dark-roopsamoi pour le tuto PNJ

Merci à Baskow pour ses sources de son émulateur modifier

  • Like 2

Share this post


Link to post
Share on other sites

Merci du tutoriel.

 

Indice, le bug de la camé qui se sauvegarde pas se trouve dans SQLmanager.

Share this post


Link to post
Share on other sites

Merci du tutoriel.

 

Indice, le bug de la camé qui se sauvegarde pas se trouve dans SQLmanager.

 

 

Merci.

Tu vois , grâce a ton aide dans la section Aide/support je me suis penché sur les sources de baskow :)

Par contre pour mon bug serais-tu m'aider ? Car ton indice m'aide un peu , mais comme je code pas en java c'est bien dur ^^'

Share this post


Link to post
Share on other sites

J'ouvre mon eclipse et je te copie / colle ;)

 

Edit : mon ordi' bug vaudrait mieux pas que je l'ouvre maintenant, tu auras ton code ce soir maximum ;) Bon tampis j'ouvre quand même huhu.

 

Il me semble que sa se passe ici :

 

Fait CTRL + F et tu recherches : public static void CREATE_MOUNT(Dragodinde DD)

 

Ensuite tu remplaces par ça :P

 

public static void CREATE_MOUNT(Dragodinde DD)
{
	String baseQuery = "REPLACE INTO `mounts_data`(`id`,`color`,`sexe`,`name`,`xp`,`level`," +
			"`endurance`,`amour`,`maturite`,`serenite`,`reproductions`,`fatigue`,`items`," +
			"`ancetres`,`energie`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";

 

Si tu peux tester et me dire si sa marche. :P

Share this post


Link to post
Share on other sites

J'ouvre mon eclipse et je te copie / colle ;)

 

Je pense avoir trouver , j'y suis presque^^'

Je te montre le mien aussi pour voir si je me suis pas tromper^^'

 

Edit , non sa marche point x)

 

J'avais rajouter sa

public static void UPDATE_MOUNT_INFOS(Dragodinde DD)
{
	String baseQuery = "UPDATE mounts_data SET " +
	"`name` = ?," +
	"`xp` = ?," +
	"`level` = ?," +
	"`endurance` = ?," +
	"`amour` = ?," +
	"`maturite` = ?," +
	"`serenite` = ?," +
	"`reproductions` = ?," +
	"`fatigue` = ?," +
	"`energie` = ?," +
	"`ancetres` = ?," +
	"`items` = ?" +
       //Baskwo:Cameleone
       "`ability` = ?" +
" WHERE `id` = ?;";

 

et

try
	{
		PreparedStatement p = newTransact(baseQuery, othCon);
		p.setString(1,DD.get_nom());
		p.setLong(2,DD.get_exp());
		p.setInt(3,DD.get_level());
		p.setInt(4,DD.get_endurance());
		p.setInt(5,DD.get_amour());
		p.setInt(6,DD.get_maturite());
		p.setInt(7,DD.get_serenite());
		p.setInt(8,DD.get_reprod());
		p.setInt(9,DD.get_fatigue());
		p.setInt(10,DD.get_energie());
		p.setString(11,DD.get_ancetres());
		p.setString(12,DD.getItemsId());
           //Baskwo:Cameleone
           p.setString(13, DD.get_ability());
		p.setInt(14,DD.get_id());

Mais sa marche pas^^'

Share this post


Link to post
Share on other sites

Pour la drago avec caméléonne direct sa doit etre sa dans dragodinde.java

 

_id = World.getNextIdForMount();
       _color = color;
       _level = 1;
       _exp = 0;
       _nom = "SansNom";
       _fatigue = 0;
       _energie = getMaxEnergie();
       _reprod = 0;
       _maturite = getMaxMatu();
       _serenite = 0;
       _stats = Constants.getMountStats(_color,_level);
       _ancetres = ",,,,,,,,,,,,,";
       //Baskwo:Cameleone
       _ability = "9";

 

Mettre direct 9 a ability comme level 100 au départ enfin vous voyez :P

Share this post


Link to post
Share on other sites

Si tu veux que sa soit directement caméléone, mais certain joueur n'aiment pas camé donc non, et le bug c'est pas ici :P voir plus haut.

Share this post


Link to post
Share on other sites

Pour la drago avec caméléonne direct sa doit etre sa dans dragodinde.java

 

_id = World.getNextIdForMount();
       _color = color;
       _level = 1;
       _exp = 0;
       _nom = "SansNom";
       _fatigue = 0;
       _energie = getMaxEnergie();
       _reprod = 0;
       _maturite = getMaxMatu();
       _serenite = 0;
       _stats = Constants.getMountStats(_color,_level);
       _ancetres = ",,,,,,,,,,,,,";
       //Baskwo:Cameleone
       _ability = "9";

 

Mettre direct 9 a ability comme level 100 au départ enfin vous voyez :P

 

J'ai mis le 9 à la place du 0 mais sa ne résolu pas le problème , mais merci de ton aide :)

 

Share this post


Link to post
Share on other sites

J'ai édit mon post, go tester le seul truc que j'ai mis ;) flemme de faire les ajouts et compilé :P

Share this post


Link to post
Share on other sites

J'ai édit mon post, go tester le seul truc que j'ai mis ;) flemme de faire les ajouts et compilé :P

 

Hum , dans le SQL Manager j'ai exactement sa , mais il faut changer quoi ?^^ Il faut ajouter ability ?

Share this post


Link to post
Share on other sites

Non, tu remplaces par ce que je t'ai dit, bien dans l'ordonné comme ça, il me semble que c'est ça.

Share this post


Link to post
Share on other sites

Non, tu remplaces par ce que je t'ai dit, bien dans l'ordonné comme ça, il me semble que c'est ça.

 

Avant j'avais :

public static void CREATE_MOUNT(Dragodinde DD)
{
	String baseQuery = "REPLACE INTO `mounts_data`(`id`,`color`,`sexe`,`name`,`xp`,`level`," +
			"`endurance`,`amour`,`maturite`,`serenite`,`reproductions`,`fatigue`,`items`," +
			"`ancetres`,`energie`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";

et sa marcher pas.

J'ai essayé

	public static void CREATE_MOUNT(Dragodinde DD)
{
	String baseQuery = "REPLACE INTO `mounts_data`(`id`,`color`,`sexe`,`name`,`xp`,`level`," +
			"`endurance`,`amour`,`maturite`,`serenite`,`reproductions`,`fatigue`,`items`," +
			"`ancetres`,`energie`,`ability`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";

 

J'ai ajouté ability et un "?" mais sa marche toujours pas :S

Share this post


Link to post
Share on other sites

ajoute pas d'ability ^^

 

Bin même sans sa marche pas^^

J'ai vu que ancestra rebellion v3 avait sa "Les pnj dragodindes (ability) save la table dragodinde (après un reboot la DD reste camé"

 

J'ai DL les sources , mais c'est bien dur de trouver l'erreur :S

Share this post


Link to post
Share on other sites

Merci pour ton tuto, mais je serai toi j’aurai enlevé le lien vers Aid*** :S

 

Derien, mais pour le lien , je le trouve assez bien expliquer. Dois-je vraiment le supprimer ?

 

 

Share this post


Link to post
Share on other sites

^^ Moi petit probleme, En jeu dragodinde : caméléonne et tout sauf que les couleur ne change pas xD

 

Il faut remplir la source Personnage

Et il faut descende/remonter de la monture

Share this post


Link to post
Share on other sites

Sa ne change rien xD

 

 

Edit : corrigé, Une { en trop ;)

 

Edit : Et moi la drago reste camé après un reboot :P

Share this post


Link to post
Share on other sites

Sa ne change rien xD

 

 

Edit : corrigé, Une { en trop ;)

 

Edit : Et moi la drago reste camé après un reboot :P

 

Nickel si sa marche :) ( des erreurs dans mes codes ou c'était une erreur de ta part ? )

 

tu a fait comment pour quelle reste came O_o

Share this post


Link to post
Share on other sites

Aucune idé, j'ai reprit un peu de t code, et aussi sinon, les code de baskwo car il y a aussi du code de caméleonne dans Fight.java

Share this post


Link to post
Share on other sites