Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=79939b0ed2c219a8b8943259be6caae4Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

[vJass] FWTypes (FWCore)

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Fonction Jass
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 26/08/08 12:43    Sujet du message: [vJass] FWTypes (FWCore) Citer

Voici une petite librairie comportant quelques types personalisés pour mon futur framework Jass.
Elle est par exemple utilisée par FWStrings.


Nom du systeme :FWTypes (FWCore)

Créateur : profet

Prérequis : jassHelper (newgenpack)

Code :
Jass:

//! textmacro FWTypes takes TYPE, NULLVALUE, SIZE
struct $TYPE$array //max 819 instances
    private integer vcount = 0
    private $TYPE$ array values[$SIZE$]

    //Returns the count of stored elements.
    method operator Count takes nothing returns integer
        return .vcount
    endmethod
   
    //Returns the maximum size of the array
    method operator Size takes nothing returns integer
        return .values.size
    endmethod
   
    //Returns the maximum instance count of the type.
    method operator MaxInstances takes nothing returns integer
        return R2I(8190./I2R(.values.size))
    endmethod
   
    //Gives a fast way to access array's values by using [ ].
    method operator [] takes integer index returns $TYPE$
        if( index<.values.size )then
            return .values[index]
        endif
        return $NULLVALUE$
    endmethod
   
    //Gives a fast way to set a value of the array by using [ ]=.
    method operator []= takes integer index, $TYPE$ value returns nothing
        if( index<.values.size )then
            if( index>=.vcount )then
                set .vcount = index + 1
            endif
            set .values[index] = value
        endif
    endmethod

    //Adds one element to the end of the array and returns the new length, returns -1 if full.
    method Push takes $TYPE$ value returns integer
        if( .vcount<.values.size )then
            set .values[.vcount] = value
            set .vcount = .vcount + 1
            return .vcount
        endif
        return -1
    endmethod
   
    //Removes and returns the first element.
    method Shift takes nothing returns $TYPE$
    local integer i=0
    local integer j=1
    local $TYPE$ r
        if( .vcount>0 )then
            set r = .values[0]
            loop
                exitwhen( i==.vcount )
                set .values[i] = .values[j]
                set i=j
                set j=j+1
            endloop
            set .vcount = .vcount - 1
            return r
        endif
        return $NULLVALUE$
    endmethod
   
    //Removes and returns the last element.
    method Pop takes nothing returns $TYPE$
        if( .vcount>0 )then
            set .vcount = .vcount - 1
            return .values[.vcount]
        endif
        return $NULLVALUE$
    endmethod
   
    //Deletes and returns the specified element.
    method Delete takes integer i returns $TYPE$
    local integer j=i+1
    local $TYPE$ r
        if( i>=0 and i<.vcount )then
            set r = .values[i]
            loop
                exitwhen( i==.vcount )
                set .values[i] = .values[j]
                set i=j
                set j=j+1
            endloop
            set .vcount = .vcount - 1
            return r
        endif
        return $NULLVALUE$
    endmethod
   
    //Appends values of another array (to the end).
    method Join takes $TYPE$array arr returns nothing
    local integer i = 0
        loop
            exitwhen( i==arr.vcount or .vcount==.values.size )
            call .Push(arr[i])
            set i=i+1
        endloop
    endmethod   
   
    //Copies values of another array. ARRAY'S VALUES WILL BE DELETED !
    method Copy takes $TYPE$array arr returns nothing
    local integer i = 0
        loop
            exitwhen&#40; i==arr.vcount )
            set .values[i] = arr.values[i]
            set i=i+1
        endloop
        set .vcount = arr.vcount
    endmethod
   
    //Deletes all stored values.
    method Clear takes nothing returns nothing
        set .vcount = 0
    endmethod

endstruct
//! endtextmacro

   
//! runtextmacro FWTypes("integer","0","100")
//! runtextmacro FWTypes("real","0.","100")
//! runtextmacro FWTypes("string","null","100")

Note: vous pouvez rajouter des types très simplement en rajoutant les //! runtextmacro correspondants.


Utilisation :
Jass:

function test takes nothing returns nothing
local stringarray sa1 = stringarray.create()
local stringarray sa2 = stringarray.create()
local integer i=0

    set sa1[0] = "Number 1"
    call sa1.Push("Number 2")

    call BJDebugMsg( sa1[1] )    //affiche "Number 2
   
    set sa2[1] = "Number 3"
   
    call sa1.Join( sa2 )

    loop
       exitwhen( i==sa1.Count)
       call BJDebugMsg( sa1[i] )
       set i=i+1
    endloop
        //affiche:
        //    "Number 1"
        //    "Number 2"
        //    ""
        //    "Number 3"
   
   
    //et on oublie pas de détruire les instances des struct
    call sa1.destroy()
    call sa2.destroy()
   
endfunction


Copyright : Comme pour toutes les autres librairies que je posterai, citez juste le framework Jass "FW", et un petit lien vers nok.warmods.org où il y aura une doc créée prochainement pour ce framework.

Remarques : néant.
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%


Dernière édition par profet le 10/10/08 18:49; édité 3 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 27/09/08 21:20    Sujet du message: Citer

Je vois que je n'ai pas expliqué ce que font les méthodes, et que la balise jass bug... je corrigerai ça le plus rapidement possible.

Je pense néanmoins que vous pouvez quand meme vous servir de ces code en supprimant la methode print() ou en ajoutant les parenthèses buggées Wink
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 28/09/08 11:02    Sujet du message: Citer

Ou en citant ton message pour avoir le code correctement.
(Oui je sais je suis trop smart Cool )

PS : Profite en pour colorier aussi ce qui est spécifique au vJass.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 28/09/08 11:15    Sujet du message: Citer

Par pitié change la couleur des commentaires aussi je t'en supplie ! Gris sur blanc c'est horrible Crying or Very sad
_________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 28/09/08 11:17    Sujet du message: Citer

Faudrait les mettre en vert et réserver le gris pour les macros.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Profet (Quantité : 1)

MessagePosté le: 28/09/08 15:21    Sujet du message: Citer

Faudrait que je voie avec Ayane pour récupérer le code source de ce colorisateur, c'est lui qui s'en était chargé.
A moins qu'il ne veuille s'en charger lui meme Smile
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 28/09/08 15:45    Sujet du message: Citer

Troll-Brain a écrit:
@Profet : Pour me faire pardonner de ce floodage je regarderais ton code d'ici quelques jours, histoire que tu ais quelques commentaires constructifs dans ce post Wink
Youpi, je désespérais depuis le 26 Aout^^

D'ailleurs je vais surement bientôt poster une nouvelle version, j'ai quelque peu modifié certaines méthodes.
Si d'ailleurs vous avez des idées de méthodes, faites le moi savoir (je vais peut être implémenter une méthode de tri un de ces jours, qui sait) Wink
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Rommstein60
MODÉRATEUR À LA RETRAITE


Inscrit le: 23 Aoû 2007
Messages: 4766
Sujets: 136
Spécialité en worldedit: Keskesapeutfout'
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 28/09/08 15:57    Sujet du message: Citer

Troll-Brain a écrit:
C'est clair qu'un padawan gay ca fait disons ... nouvelle génération Very Happy

Hahaha pas mal Laughing

Sinon profet je comprend ton grand désespoir, mais vu que je suis marié avec le GUI je ne le tromperai jamais Twisted Evil

_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 28/09/08 15:59    Sujet du message: Citer

Rommstein60 a écrit:
Sinon profet je comprend ton grand désespoir, mais vu que je suis marié avec le GUI je ne le tromperai jamais Twisted Evil [/color]
Ca va faire des bébé difformes tout ça... Confused
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Rommstein60
MODÉRATEUR À LA RETRAITE


Inscrit le: 23 Aoû 2007
Messages: 4766
Sujets: 136
Spécialité en worldedit: Keskesapeutfout'
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 28/09/08 16:15    Sujet du message: Citer

T_T
Je viens de me faire violemment pwned la face par le grand maître pain d'épice Crying or Very sad

_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1510
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Concours de sorts amusants (Quantité : 1) Créateur de héros (Quantité : 1)

MessagePosté le: 01/10/08 19:40    Sujet du message: Citer

Qques idées utile pour améliorer:
Tu as mis la fonction push, mais pas la pop Surprised en général on met les 2.
Tu as oublié une fonction empty, qui teste si l'array est vide ou non, c'est souvent utile et plus propre que de tester la taille.
Et enfin une fonction clear pour vider tout le contenu.

Il existe aussi swap, pour copier tout le contenu d'un array vers un autre.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Profet (Quantité : 1)

MessagePosté le: 01/10/08 20:04    Sujet du message: Citer

Dans ma nouvelle version j'ai push, shift, pop et join.

(que je posterai bientot d'ailleurs Wink )


PS: je note pour clear, sinon la fonction empty je la trouve un peu inutile étant donné que l'on peut faire array.count==0
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 10/10/08 18:35    Sujet du message: Citer

J'ai mis à jour la version du premier post, il s'agira de la version définitive si aucun bug n'est trouvé ou demande importante n'est faite Wink


EDIT: j'ai également utilisé les textmacros afin d'éviter de copier/coller du code similaire inutilement Smile
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Fonction Jass Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com