Jump to content
×
×
  • Create New...

[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

  • J'adore 2
Link to comment

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 ^^'

Link to comment

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

 

 

Link to comment

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^^'

Link to comment

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

Link to comment

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 :)

 

Link to comment

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

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.