globox62

 tutoriel / partage [JAVA/SWF] Créer une nouvelle classe

Recommended Posts

TUTO pour créer un nouvelle classe sous ancestra remake

 

Je vais expliquer, dans ce tuto comment créer une nouvelle classe.

/!\ pas terminé, je n'ai pas trouvé comment faire en sorte que cette classe soit sélectionnable a partir de la création de personnage. Si quelqu'un sais comment régler ce problème, ne pas hésiter a me contacter

 

Pour rendre le tuto plus simple, je vais seulement recréer la classe féca (au pif, parsque c'est la plus accessible)

Toutes les données modifiables pour votre classe seront indiquées.

 

 

Requis :

Sources ancestra remake (voir le lien du tuto un peu plus bas)

logiciel Eclipse

Sothink quicker (cracké)

de la patiente =P

 

 

Alors pour commencer, nous allons reprendre ce tuto a l'étape avant l'exportation. lien du tuto

On ouvre donc tous les dossiers contenus dans SRC :

 

101225014406226875.png

 

On ouvre une recherche avec ctrl+f dans chaque fichier et on tape "feca"

 

101225014708374487.png

 

On ajoute donc une ligne qui est ici

public static final int CLASS_RANGER = 13;

pour moi.

Le numéro de la fin est l'ID de la classe (a retenir /!\)

 

Vous ajoutez une ligne identique au feca pour chaque fois que vous trouvez quelque chose ayant un rapport avec les classes.

 

Ici, ce sont les sorts de base : le premier nombre représente l'ID du sort, la lettre, l'endroit où il sera positionné dans votre barre de sorts (message expliquant le système de lettres).

Par conséquant, si vous souhaitez changer les sort de base de votre personnage, il suffira de donner l'ID du sort a l'endroit où sont les numéros.

 

101225015019488444.png

 

Ici, vous avez un peu de code.

Traduction pour le premier sort :

if(lvl == 3)

perso.learnSpell(4, 1,true,false);//Renvoie de sort

 

Ca veut dire en gros que quand on passe lvl 3, on gagne le sort d'ID 4 (renvoie de sort) et que ce sort est de lvl 1. (true false, je sais pas)

 

101225015449884744.png

 

Bon, quand on a finit cette partie, on peux passer a la partie la plus simple, sothink.

 

On ouvre donc classes_fr_167.swf

on copie la ligne :

 

G[1] = {b15: [[0, 1], [100, 2], [200, 3], [300, 4], [400, 5]], b14: [[0, 1], [20, 2], [40, 3], [60, 4], [80, 5]], b13: [[0, 1], [20, 2], [40, 3], [60, 4], [80, 5]], b12: [[0, 3]], b11: [[0, 1]], b10: [[0, 2], [50, 3], [150, 4], [250, 5]], cc: [[[100, 1, 5, 1]], 3, 4, 1, 1, 20, 50, false, false, [], [1, 3, 18, 42]], s: [3, 17, 6, 4, 2, 1, 9, 18, 20, 14, 19, 5, 16, 8, 12, 11, 10, 7, 15, 13, 1901], sd: "Une classe de protecteurs. Leurs armures réduisent les dégâts infligés à leurs alliés.", d: "Les Fecas sont des Protecteurs loyaux. Ils sont appréciés dans les groupes d\'aventuriers à cause de leurs pouvoirs de protection, mais aussi parce qu\'ils manient le bâton comme pas deux. Des générations de Fécas s\'enorgueillissent d\'être des protecteurs hors pair à qui les Sages ont confié les objets les plus précieux qui soient, en toute confiance.", ep: 1, ln: "Le bouclier Féca", sn: "Féca"};

 

petite explication :

G[1] ID de la classe (pour ça qu'il faut se mémoriser de l'ID choisit)

sd : description de la classe

ep : toujours 1

ln : le décriptif rapide

sn : nom de la classe

s : les sorts de classe dans l'ordre, le reste j'ai pas encore trouvé

 

On copie colle donc cette ligne en modifiant G[1], sd, ln, sn et s si vous avez mis vos propres a la classe.

101225015924481181.png

 

Voilà, votre classe est terminée. Cependant, il y a toujours un problème.

 

Je vais maintenant expliquer comment debug le morph, image et le reste.

 

On passe donc a la partie la plus *******

 

On ouvre le dossier dofus.

maintenant, on ouvre clips.

dans clips, on ouvre sprites.

Tant qu'a être dans notre exemple de feca, on va en reprendre le skin. On copie donc 10.swf et 11.swf que l'on renomme 130.swf et 131.swf (si votre id de classe est 13)

Maintenant, on ouvre Dofus/clips/artworks

on refais la même chose que dans sprites, mais dans les sous dossiers :

-big

-breed/slide

-face

-mini.

 

 

On passe maintenant au symbole de la classe.

On ouvre maintenant le sous dossier breed. on a un fichier 1.swf. on le copie et on renomme la copie 13.swf

On répète cette opération dans les sous dossiers :

-breed/back

-symbol

 

Maintenant, on ouvre navicat, dans ancestra_other, on ouvre la table personnages.

On ajoute une ligne.

ID perso

Nom de votre perso

0 ou 1

classe : 13 dans notre cas

 

Vous laissez tous le reste vide. Vous pouvez mettre n'importe quoi dans la catégorie gfxid.

 

Vous ouvrez votre serveur, vous vous connectez. Votre personnage aura les sorts que vous lui avez attribués.

Maintenant, ouvrez la console et faites "demorph"

Votre personnage ne devient pas invisible

 

 

A FAIRE :trouver comment avoir la possibilité de choisir la classe de personnage directement en jeu.

 

Tuto par globox, Ne pas reprendre sans mon autorisation

  • Like 2

Share this post


Link to post
Share on other sites

merci ^^

j'avais cherché mais rien trouvé donc pour faire plus simple, je sais pas =/

J'ai tout trouvé tout seul donc s'il y a des problèmes ou des trucs dont on peux se passer, ça ne m'étonnerais pas ^^

Share this post


Link to post
Share on other sites

T'as trouvé comment les implanter ?

J'avais pensé a une conversion en flm pour trouver les noms de classes, mais rien trouvé pour l'instant...

Share this post


Link to post
Share on other sites

Après de nombreuses recherches, je suis presque sûr que la sélection se trouve dans le loader car c'est là que se trouvent toutes les données chargées. Je cherche encore x)

Share this post


Link to post
Share on other sites

J'ai trouver la page de séléction des personnage ou normalement il y a le bouton vers la création des personnage :

#initclip 95
if (!dofus.graphics.gapi.ui.ChooseCharacter)
{
   if (!dofus)
   {
       _global.dofus = new Object();
   } // end if
   if (!dofus.graphics)
   {
       _global.dofus.graphics = new Object();
   } // end if
   if (!dofus.graphics.gapi)
   {
       _global.dofus.graphics.gapi = new Object();
   } // end if
   if (!dofus.graphics.gapi.ui)
   {
       _global.dofus.graphics.gapi.ui = new Object();
   } // end if
   var _loc1 = (_global.dofus.graphics.gapi.ui.ChooseCharacter = function ()
   {
       super();
   }).prototype;
   _loc1.__set__spriteList = function (aSpriteList)
   {
       this._aSpriteList = aSpriteList;
       if (this.initialized)
       {
           this.initData();
       } // end if
       //return (this.spriteList());
   };
   _loc1.__set__remainingTime = function (nRemainingTime)
   {
       this._nRemainingTime = nRemainingTime;
       //return (this.remainingTime());
   };
   _loc1.__set__showComboBox = function (bShowComboBox)
   {
       this._bShowComboBox = bShowComboBox;
       //return (this.showComboBox());
   };
   _loc1.__set__characterCount = function (nCharacterCount)
   {
       this._nCharacterCount = nCharacterCount;
       //return (this.characterCount());
   };
   _loc1.init = function ()
   {
       super.init(false, dofus.graphics.gapi.ui.ChooseCharacter.CLASS_NAME);
       if (this.api.datacenter.Basics.aks_is_free_community)
       {
           this._btnSubscribe._visible = false;
       } // end if
   };
   _loc1.createChildren = function ()
   {
       this.addToQueue({object: this, method: this.addListeners});
       this.addToQueue({object: this, method: this.initData});
       this.addToQueue({object: this, method: this.initTexts});
       this._btnPlay._visible = false;
   };
   _loc1.addListeners = function ()
   {
       this._cciSprite0.addEventListener("select", this);
       this._cciSprite1.addEventListener("select", this);
       this._cciSprite2.addEventListener("select", this);
       this._cciSprite3.addEventListener("select", this);
       this._cciSprite4.addEventListener("select", this);
       this._cciSprite0.addEventListener("remove", this);
       this._cciSprite1.addEventListener("remove", this);
       this._cciSprite2.addEventListener("remove", this);
       this._cciSprite3.addEventListener("remove", this);
       this._cciSprite4.addEventListener("remove", this);
       this._cciSprite0.addEventListener("reset", this);
       this._cciSprite1.addEventListener("reset", this);
       this._cciSprite2.addEventListener("reset", this);
       this._cciSprite3.addEventListener("reset", this);
       this._cciSprite4.addEventListener("reset", this);
       this._btnPlay.addEventListener("click", this);
       this._btnCreate.addEventListener("click", this);
       this._btnSubscribe.addEventListener("click", this);
       this._btnBack.addEventListener("click", this);
       this.api.kernel.StreamingDisplayManager.onCharacterChoice();
   };
   _loc1.updateCharactersList = function ()
   {
       var _loc2 = 0;

       while (++_loc2, _loc2 < 5)
       {
           var _loc3 = this["_cciSprite" + _loc2];
           _loc3.showComboBox = this._bShowComboBox;
           _loc3.params = {index: _loc2 + this._nCharacterStartIndex};
           _loc3.data = this._aSpriteList[_loc2 + this._nCharacterStartIndex];
           _loc3.enabled = this._aSpriteList[_loc2 + this._nCharacterStartIndex] != undefined;
           _loc3.isDead = _loc3.data.isDead;
           _loc3.death = _loc3.data.deathCount;
           _loc3.deathState = _loc3.data.deathState;
       } // end while
   };
   _loc1.initData = function ()
   {
       this.api.datacenter.Basics.inGame = false;
       this._btnArrowLeft._visible = this._btnArrowRight._visible = this._aSpriteList.length > 5;
       this._nCharacterStartIndex = 0;
       this._btnArrowLeft.onRelease = function ()
       {
           this._parent._btnArrowLeft.gotoAndStop("on");
           this._parent._btnArrowRight.gotoAndStop("on");
           --this._parent._nCharacterStartIndex;
           if (this._parent._nCharacterStartIndex <= 0)
           {
               this._parent._nCharacterStartIndex = 0;
               this.gotoAndStop("off");
           } // end if
           this._parent.updateCharactersList();
       };
       this._btnArrowRight.onRelease = function ()
       {
           this._parent._btnArrowLeft.gotoAndStop("on");
           this._parent._btnArrowRight.gotoAndStop("on");
           ++this._parent._nCharacterStartIndex;
           if (this._parent._nCharacterStartIndex >= this._parent._aSpriteList.length - 5)
           {
               this._parent._nCharacterStartIndex = this._parent._aSpriteList.length - 5;
               this.gotoAndStop("off");
           } // end if
           this._parent.updateCharactersList();
       };
       this._lblRemainingTime.text = this.api.kernel.GameManager.getRemainingString(this._nRemainingTime);
       this._lblRemainingTime.styleName = this._nRemainingTime == 0 ? ("RedRightSmallBoldLabel") : ("WhiteRightSmallBoldLabel");
       this._btnSubscribe.enabled = this._nRemainingTime != -1;
       if (this._aSpriteList.length == 0)
       {
           this._btnPlay._visible = false;
       }
       else
       {
           this._btnPlay._visible = true;
       } // end else if
       if (!this.api.config.isStreaming)
       {
           this._lblLogin.onRollOver = function ()
           {
               this._parent.gapi.showTooltip(this._parent.api.lang.getText("PSEUDO_DOFUS_INFOS"), this, 20, undefined);
           };
           this._lblLogin.onRollOut = function ()
           {
               this._parent.gapi.hideTooltip();
           };
           this._lblLogin.onRelease = function ()
           {
               var _loc2 = this._parent.api.lang.getText("PSEUDO_DOFUS_LINK");
               if (_loc2 != undefined && _loc2 != "")
               {
                   this.getURL(_loc2, "_blank");
               } // end if
           };
       } // end if
       this._btnArrowLeft.onRelease();
       this._btnBack._visible = !this.api.config.isStreaming;
   };
   _loc1.initTexts = function ()
   {
       this._lblTitle.text = this.api.lang.getText("CHOOSE_TITLE");
       this._btnPlay.label = this.api.lang.getText("MENU_PLAY");
       this._btnCreate.label = this.api.lang.getText("CREATE_CHARACTER");
       this._btnSubscribe.label = this.api.lang.getText("SUBSCRIPTION");
       this._btnBack.label = this.api.lang.getText("CHANGE_SERVER");
       this._lblCopyright.text = this.api.lang.getText("COPYRIGHT");
       this._lblAccount.text = this.api.lang.getText("ACCOUNT_INFO");
       if (!this.api.config.isStreaming)
       {
           this._lblLogin.text = this.api.lang.getText("PSEUDO_DOFUS", [this.api.datacenter.Basics.dofusPseudo]);
       }
       else
       {
           this._lblLogin.text = this.api.lang.getText("POPUP_GAME_BEGINNING_TITLE");
       } // end else if
       this._lblServer.text = this.api.lang.getText("CURRENT_SERVER", [this.api.datacenter.Basics.aks_current_server.label]);
   };
   _loc1.select = function (oEvent)
   {
       var _loc3 = oEvent.target.params.index;
       this["_cciSprite" + this._nSelectedIndex].selected = false;
       if (this._nSelectedIndex == _loc3)
       {
           delete this._nSelectedIndex;
       }
       else
       {
           this._nSelectedIndex = _loc3;
       } // end else if
       if (getTimer() - this._nSaveLastClick < ank.gapi.Gapi.DBLCLICK_DELAY)
       {
           this._nSelectedIndex = _loc3;
           this.click({target: this._btnPlay});
           return;
       } // end if
       this._nSaveLastClick = getTimer();
   };
   _loc1.remove = function (oEvent)
   {
       var _loc3 = oEvent.target.params.index;
       if (this.api.lang.getConfigText("SECRET_ANSWER_ON_DELETE") && (this._aSpriteList[_loc3].Level >= this.api.lang.getConfigText("SECRET_ANSWER_SINCE_LEVEL") && (this.api.datacenter.Basics.aks_secret_question != undefined && this.api.datacenter.Basics.aks_secret_question.length > 0)))
       {
           this.gapi.loadUIComponent("AskSecretAnswer", "AskSecretAnswer", {title: this.api.lang.getText("DELETE_WORD"), charToDelete: this._aSpriteList[_loc3]});
       }
       else
       {
           this.api.kernel.showMessage(this.api.lang.getText("DELETE_WORD"), this.api.lang.getText("DO_U_DELETE_A", [this._aSpriteList[_loc3].name]), "CAUTION_YESNO", {name: "Delete", listener: this, params: {index: _loc3}});
       } // end else if
   };
   _loc1.reset = function (oEvent)
   {
       var _loc3 = this._aSpriteList[oEvent.target.params.index].id;
       var _loc4 = this.gapi.loadUIComponent("AskYesNo", "AskYesReset", {title: this.api.lang.getText("RESET_SHORTCUT"), text: this.api.lang.getText("DO_U_RESET_CHARACTER"), params: {index: _loc3}});
       _loc4.addEventListener("yes", this);
   };
   _loc1.click = function (oEvent)
   {
       switch (oEvent.target._name)
       {
           case "_btnPlay":
           {
               if (this._nSelectedIndex == undefined)
               {
                   this.api.kernel.showMessage(undefined, this.api.lang.getText("SELECT_CHARACTER"), "ERROR_BOX", {name: "NoSelect"});
               }
               else
               {
                   this.api.network.Account.setCharacter(this._aSpriteList[this._nSelectedIndex].id);
               } // end else if
               break;
           } 
           case "_btnCreate":
           {
               if (this._nCharacterCount >= 5 && !this.api.datacenter.Player.isAuthorized)
               {
                   this.api.kernel.showMessage(undefined, this.api.lang.getText("TOO_MUCH_CHARACTER"), "ERROR_BOX");
               }
               else
               {
                   this.gapi.loadUIComponent("CreateCharacter", "CreateCharacter", {remainingTime: this._nRemainingTime});
                   this.gapi.unloadUIComponent("ChooseCharacter");
               } // end else if
               break;
           } 
           case "_btnSubscribe":
           {
               _root.getURL(this.api.lang.getConfigText("PAY_LINK"), "_blank");
               break;
           } 
           case "_btnBack":
           {
               this.api.kernel.changeServer(true);
               break;
           } 
           case "_btnChangeServer":
       } // End of switch
   };
   _loc1.yes = function (oEvent)
   {
       switch (oEvent.target._name)
       {
           case "AskYesReset":
           {
               this.api.network.Account.resetCharacter(oEvent.params.index);
               break;
           } 
           case "AskYesNoDelete":
           {
               this.api.network.Account.deleteCharacter(this._aSpriteList[oEvent.params.index].id);
               break;
           } 
       } // End of switch
   };
   _loc1.addProperty("characterCount", function ()
   {
   }, _loc1.__set__characterCount);
   _loc1.addProperty("showComboBox", function ()
   {
   }, _loc1.__set__showComboBox);
   _loc1.addProperty("remainingTime", function ()
   {
   }, _loc1.__set__remainingTime);
   _loc1.addProperty("spriteList", function ()
   {
   }, _loc1.__set__spriteList);
   ASSetPropFlags(_loc1, null, 1);
   (_global.dofus.graphics.gapi.ui.ChooseCharacter = function ()
   {
       super();
   }).CLASS_NAME = "ChooseCharacter";
} // end if
#endinitclip

 

Il me semble qu'il ya un rapport avec un truc qui s'appelle "createChildren" et tous sa c'est dans le loader.

 

Un moment il y a aussi écrit sa :

{
                   this.gapi.loadUIComponent("CreateCharacter", "CreateCharacter", {remainingTime: this._nRemainingTime});

 

Et voici le fameux "CreateCharacter" :

#initclip 51
if (!dofus.graphics.gapi.ui.CreateCharacter)
{
   if (!dofus)
   {
       _global.dofus = new Object();
   } // end if
   if (!dofus.graphics)
   {
       _global.dofus.graphics = new Object();
   } // end if
   if (!dofus.graphics.gapi)
   {
       _global.dofus.graphics.gapi = new Object();
   } // end if
   if (!dofus.graphics.gapi.ui)
   {
       _global.dofus.graphics.gapi.ui = new Object();
   } // end if
   var _loc1 = (_global.dofus.graphics.gapi.ui.CreateCharacter = function ()
   {
       super();
   }).prototype;
   _loc1.__set__remainingTime = function (nRemainingTime)
   {
       this._nRemainingTime = nRemainingTime;
       //return (this.remainingTime());
   };
   _loc1.__set__characterName = function (sNewName)
   {
       if (this._itCharacterName.text != undefined)
       {
           this._itCharacterName.text = sNewName;
       } // end if
       //return (this.characterName());
   };
   _loc1.init = function ()
   {
       super.init(false, dofus.graphics.gapi.ui.CreateCharacter.CLASS_NAME);
   };
   _loc1.createChildren = function ()
   {
       this.addToQueue({object: this, method: this.addListeners});
       this.addToQueue({object: this, method: this.setupRestriction});
       this.addToQueue({object: this, method: this.initTexts});
       this.addToQueue({object: this, method: this.initComponent});
       this.addToQueue({object: this, method: this.selectRandomBreed});
       this.api.kernel.StreamingDisplayManager.onCharacterCreation();
       if (dofus.Constants.USE_JS_LOG && _global.CONFIG.isNewAccount)
       {
           this.getURL("JavaScript:WriteLog(\'CreateCharacter\')");
       } // end if
   };
   _loc1.addListeners = function ()
   {
       var ref = this;
       this._mcMaleButton.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcMaleButton.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcMaleButton.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcFemaleButton.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcFemaleButton.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcFemaleButton.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcSpellButton.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcSpellButton.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcSpellButton.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcSpellButton2.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcSpellButton2.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcSpellButton2.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcHistoryButton.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcHistoryButton.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcHistoryButton.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcRandomName.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcRandomName.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcRandomName.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcRight.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcRight.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcRight.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._mcLeft.onPress = function ()
       {
           ref.click({target: this});
       };
       this._mcLeft.onRollOver = function ()
       {
           ref.over({target: this});
       };
       this._mcLeft.onRollOut = function ()
       {
           ref.out({target: this});
       };
       this._btnBack.addEventListener("click", this);
       this._btnValidate.addEventListener("click", this);
       this._itCharacterName.addEventListener("change", this);
       this._csColors.addEventListener("change", this);
       this._csColors.addEventListener("over", this);
       this._csColors.addEventListener("out", this);
       this._csBreedSelection.addEventListener("change", this);
   };
   _loc1.setupRestriction = function ()
   {
       var _loc2 = "";
       if (this.api.datacenter.Player.isAuthorized)
       {
           _loc2 = "a-zA-Z\\-\\[\\]";
       }
       else
       {
           _loc2 = "a-zA-Z\\-";
       } // end else if
       if (this.api.config.isStreaming)
       {
           _loc2 = _loc2 + "0-9";
       } // end if
       this._itCharacterName.restrict = _loc2;
   };
   _loc1.initTexts = function ()
   {
       this._lblTitle.text = this.api.lang.getText("CREATE_TITLE");
       this._lblCharacterColors.text = this.api.lang.getText("SPRITE_COLORS");
       this._lblCharacterName.text = this.api.lang.getText("CREATE_CHARACTER_NAME");
       this._btnBack.label = this.api.lang.getText("BACK");
       this._btnValidate.label = this.api.lang.getText("VALIDATE");
       this._lblHistoryButton.text = this.api.lang.getText("HISTORY_CLASS_WORD");
       this._lblSpellButton.text = this.api.lang.getText("SPELLS_SHORTCUT");
   };
   _loc1.initComponent = function ()
   {
       this._oColors = {color1: -1, color2: -1, color3: -1};
       this._nSex = Math.round(Math.random());
       var _loc2 = new Array();
       var _loc3 = 0;

       while (++_loc3, _loc3 < dofus.Constants.GUILD_ORDER.length)
       {
           if (this.api.config.isStreaming && dofus.Constants.GUILD_ORDER[_loc3] == 12)
           {
               continue;
           } // end if
           _loc2[_loc3] = dofus.Constants.BREEDS_SLIDER_PATH + dofus.Constants.GUILD_ORDER[_loc3] + this._nSex + ".swf";
       } // end while
       this._csBreedSelection.initialize(_loc2);
       this._csBreedSelection.animation = true;
       this._csBreedSelection.animationSpeed = 3;
       this._svCharacter.zoom = 250;
       this._svCharacter.spriteAnims = ["StaticF", "StaticR", "StaticL", "WalkF", "RunF", "Anim2R", "Anim2L"];
       this._svCharacter.refreshDelay = 50;
       this._svCharacter.useSingleLoader = true;
   };
   _loc1.selectRandomBreed = function ()
   {
       for (var _loc2 = -1; _loc2 == -1 || this.api.config.isStreaming && _loc2 == 12; _loc2 = Math.round(Math.random() * (dofus.Constants.GUILD_ORDER.length - 1)) + 1)
       {
       } // end of for
       this.setClass(_loc2, this._nSex);
       this._bLoaded = true;
   };
   _loc1.setClass = function (nClassID, nSex)
   {
       this._csColors.breed = nClassID;
       this._csColors.sex = nSex;
       if (this._nBreed == nClassID && this._nSex == nSex)
       {
           return;
       } // end if
       this._svCharacter.spriteData = new ank.battlefield.datacenter.Sprite("1", undefined, dofus.Constants.CLIPS_PERSOS_PATH + nClassID + nSex + ".swf", undefined, 5);
       this._ldrClassIcon.contentPath = dofus.Constants.BREEDS_SYMBOL_PATH + nClassID + ".swf";
       var _loc4 = 0;

       while (++_loc4, _loc4 < dofus.Constants.GUILD_ORDER.length)
       {
           if (this.api.config.isStreaming && dofus.Constants.GUILD_ORDER[_loc4] == 12)
           {
               continue;
           } // end if
           if (dofus.Constants.GUILD_ORDER[_loc4] == nClassID)
           {
               this._csBreedSelection.currentIndex = _loc4;
           } // end if
       } // end while
       if (this._nSex != nSex)
       {
           var _loc5 = new Array();
           var _loc6 = 0;

           while (++_loc6, _loc6 < dofus.Constants.GUILD_ORDER.length)
           {
               if (this.api.config.isStreaming && dofus.Constants.GUILD_ORDER[_loc6] == 12)
               {
                   continue;
               } // end if
               _loc5[_loc6] = dofus.Constants.BREEDS_SLIDER_PATH + dofus.Constants.GUILD_ORDER[_loc6] + nSex + ".swf";
           } // end while
           this._csBreedSelection.clipsList = _loc5;
           this._csBreedSelection.updateColor(1, this._oColors.color1);
           this._csBreedSelection.updateColor(2, this._oColors.color2);
           this._csBreedSelection.updateColor(3, this._oColors.color3);
       } // end if
       var _loc7 = this.api.lang.getClassText(nClassID);
       this._lblClassName.text = _loc7.ln;
       this._txtClassDescription.text = "" + _loc7.d + "";
       this._txtShortClassDescription.text = "" + _loc7.sd + "";
       this._svCharacter.setColors(this._oColors);
       if (dofus.Constants.EPISODIC_GUILD[nClassID - 1] > this.api.datacenter.Basics.aks_current_regional_version)
       {
           this._btnValidate.label = this.api.lang.getText("COMING_SOON_SHORT");
       }
       else
       {
           this._btnValidate.label = this.api.lang.getText("VALIDATE");
       } // end else if
       this._nBreed = nClassID;
       this._nSex = nSex;
   };
   _loc1.showColorPosition = function (nIndex)
   {
       var bWhite = true;
       this._nSavedColor = this._svCharacter.getColor(nIndex);
       this.onEnterFrame = function ()
       {
           this._svCharacter.setColor(nIndex, bWhite = !bWhite ? (16733525) : (16746632));
       };
   };
   _loc1.hideColorPosition = function (nIndex)
   {
       delete this.onEnterFrame;
       this._svCharacter.setColor(nIndex, this._nSavedColor);
   };
   _loc1.validateCreation = function ()
   {
       var _loc2 = this._itCharacterName.text;
       if (_loc2.length == 0 || _loc2 == undefined)
       {
           this.api.kernel.showMessage(undefined, this.api.lang.getText("NEED_CHARACTER_NAME"), "ERROR_BOX", {name: "CREATENONAME"});
           return;
       } // end if
       if (_loc2.length > 20)
       {
           this.api.kernel.showMessage(undefined, this.api.lang.getText("LONG_CHARACTER_NAME", [_loc2, 20]), "ERROR_BOX");
           return;
       } // end if
       if (this.api.lang.getConfigText("CHAR_NAME_FILTER") && !this.api.datacenter.Player.isAuthorized)
       {
           var _loc3 = new dofus.utils.nameChecker.NameChecker(_loc2);
           var _loc4 = new dofus.utils.nameChecker.rules.NameCheckerCharacterNameRules();
           var _loc5 = _loc3.isValidAgainstWithDetails(_loc4);
           if (!_loc5.IS_SUCCESS)
           {
               this.api.kernel.showMessage(undefined, this.api.lang.getText("INVALID_CHARACTER_NAME") + "\r\n" + _loc5.toString("\r\n"), "ERROR_BOX");
               return;
           } // end if
       } // end if
       if (dofus.Constants.EPISODIC_GUILD[this._nBreed - 1] > this.api.datacenter.Basics.aks_current_regional_version)
       {
           var _loc6 = this.api.lang.getClassText(this._nBreed).sn;
           this.api.kernel.showMessage(undefined, this.api.lang.getText("COMING_SOON_GUILD", [_loc6]), "ERROR_BOX");
           return;
       } // end if
       if (dofus.Constants.PAYING_GUILD[this._nBreed - 1] && this._nRemainingTime <= 0)
       {
           var _loc7 = this.api.lang.getClassText(this._nBreed).sn;
           this.api.kernel.showMessage(undefined, this.api.lang.getText("PAYING_GUILD", [_loc7]), "ERROR_BOX");
           return;
       } // end if
       this.api.datacenter.Basics.hasCreatedCharacter = true;
       if (dofus.Constants.USE_JS_LOG && _global.CONFIG.isNewAccount)
       {
           this.getURL("JavaScript:WriteLog(\'addCharacter;" + _loc2 + "\')");
       } // end if
       this.api.network.Account.addCharacter(_loc2, this._nBreed, this._oColors.color1, this._oColors.color2, this._oColors.color3, this._nSex);
   };
   _loc1.setColors = function (oColors)
   {
       this._oColors = oColors;
       this._svCharacter.setColors(this._oColors);
       this._csBreedSelection.updateColor(1, oColors.color1);
       this._csBreedSelection.updateColor(2, oColors.color2);
       this._csBreedSelection.updateColor(3, oColors.color3);
   };
   _loc1.hideGenerateRandomName = function ()
   {
       this._mcRandomName._visible = false;
   };
   _loc1.click = function (oEvent)
   {
       switch (oEvent.target)
       {
           case this._mcRight:
           {
               this._csBreedSelection.slide(1);
               break;
           } 
           case this._mcLeft:
           {
               this._csBreedSelection.slide(-1);
               break;
           } 
           case this._mcMaleButton:
           {
               this.setClass(this._nBreed, 0);
               break;
           } 
           case this._mcFemaleButton:
           {
               this.setClass(this._nBreed, 1);
               break;
           } 
           case this._mcSpellButton2:
           case this._mcSpellButton:
           {
               this.api.ui.loadUIComponent("SpellViewerOnCreate", "SpellViewerOnCreate", {breed: this._nBreed});
               break;
           } 
           case this._mcHistoryButton:
           {
               this.api.ui.loadUIComponent("HistoryViewerOnCreate", "HistoryViewerOnCreate", {breed: this._nBreed});
               break;
           } 
           case this._btnValidate:
           {
               this.validateCreation();
               break;
           } 
           case this._btnBack:
           {
               if (this.api.datacenter.Basics.createCharacter)
               {
                   this.api.kernel.changeServer(true);
               }
               else
               {
                   this.api.datacenter.Basics.ignoreCreateCharacter = true;
                   this.api.network.Account.getCharactersForced();
               } // end else if
               break;
           } 
           case this._mcRandomName:
           {
               if (this._nLastRegenerateTimer + dofus.graphics.gapi.ui.CreateCharacter.NAME_GENERATION_DELAY < getTimer())
               {
                   this.api.network.Account.getRandomCharacterName();
                   this._nLastRegenerateTimer = getTimer();
               } // end if
               break;
           } 
       } // End of switch
   };
   _loc1.over = function (oEvent)
   {
       switch (oEvent.target)
       {
           case this._csColors:
           {
               this.showColorPosition(oEvent.index);
               break;
           } 
           case this._mcRandomName:
           {
               this.gapi.showTooltip(this.api.lang.getText("RANDOM_NICKNAME"), _root._xmouse, _root._ymouse - 20);
               break;
           } 
           case this._mcMaleButton:
           {
               this.gapi.showTooltip(this.api.lang.getText("ANIMAL_MEN"), _root._xmouse, _root._ymouse - 20);
               break;
           } 
           case this._mcFemaleButton:
           {
               this.gapi.showTooltip(this.api.lang.getText("ANIMAL_WOMEN"), _root._xmouse, _root._ymouse - 20);
               break;
           } 
           case this._mcSpellButton:
           {
               this.gapi.showTooltip(this.api.lang.getText("CLASS_SPELLS"), _root._xmouse, _root._ymouse - 20);
               break;
           } 
           case this._mcRight:
           {
               this.gapi.showTooltip(this.api.lang.getText("NEXT_WORD"), _root._xmouse, _root._ymouse - 20);
               break;
           } 
           case this._mcLeft:
           {
               this.gapi.showTooltip(this.api.lang.getText("PREVIOUS_WORD"), _root._xmouse, _root._ymouse - 20);
               break;
           } 
       } // End of switch
   };
   _loc1.out = function (oEvent)
   {
       switch (oEvent.target)
       {
           case this._csColors:
           {
               this.hideColorPosition(oEvent.index);
               break;
           } 
           default:
           {
               this.gapi.hideTooltip();
               break;
           } 
       } // End of switch
   };
   _loc1.change = function (oEvent)
   {
       switch (oEvent.target)
       {
           case this._csColors:
           {
               this.setColors(oEvent.value);
               break;
           } 
           case this._csBreedSelection:
           {
               if (this._bLoaded)
               {
                   this.setClass(dofus.Constants.GUILD_ORDER[oEvent.value], this._nSex);
               } // end if
               break;
           } 
           case this._itCharacterName:
           {
               var _loc3 = this._itCharacterName.text;
               if (!this.api.datacenter.Player.isAuthorized)
               {
                   _loc3 = _loc3.substr(0, 1).toUpperCase() + _loc3.substr(1);
                   var _loc4 = _loc3.substr(0, 1);
                   var _loc5 = 1;

                   while (++_loc5, _loc5 < _loc3.length)
                   {
                       if (_loc3.substr(_loc5 - 1, 1) != "-")
                       {
                           _loc4 = _loc4 + _loc3.substr(_loc5, 1).toLowerCase();
                           continue;
                       } // end if
                       _loc4 = _loc4 + _loc3.substr(_loc5, 1);
                   } // end while
                   this._itCharacterName.removeEventListener("change", this);
                   this._itCharacterName.text = _loc4;
                   this._itCharacterName.addEventListener("change", this);
               } // end if
               break;
           } 
       } // End of switch
   };
   _loc1.addProperty("characterName", function ()
   {
   }, _loc1.__set__characterName);
   _loc1.addProperty("remainingTime", function ()
   {
   }, _loc1.__set__remainingTime);
   ASSetPropFlags(_loc1, null, 1);
   (_global.dofus.graphics.gapi.ui.CreateCharacter = function ()
   {
       super();
   }).CLASS_NAME = "CreateCharacter";
   (_global.dofus.graphics.gapi.ui.CreateCharacter = function ()
   {
       super();
   }).NAME_GENERATION_DELAY = 500;
   _loc1._nLastRegenerateTimer = 0;
   _loc1._bLoaded = false;
} // end if
#endinitclip

Share this post


Link to post
Share on other sites

Bonjour a vous et d'abord , merci de ce tutoriel Vraiment hors du commun :)

Je vais tester de créer une nouvelle classe et je vous tiens au courant , si je trouve comment les implanter :) Je suis tout dévoué :)

Share this post


Link to post
Share on other sites

Meri du tutoriels sa devrai aidé pleins de serveur (Pas le mien je savais déjà comment faire =P) Pour l'instant je n'ai pas encore chercher à le mettre disponible via le client. Je fais passer par la boutique en systeme V.I.P (If vip = 1 on affiche la pages de créations du personnages, suffit après de faire un envoie SQL je posterai code plus tard :P)

Share this post


Link to post
Share on other sites