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=d71b54deda72df84794356ddf78fd646Mé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] UnitInGroupWithMinMaxProperty

 
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
 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: 11/08/08 19:25    Sujet du message: [vJass] UnitInGroupWithMinMaxProperty Citer

Nom de la fonction : UnitInGroupWithMinMaxProperty
Créateur : Brissou de Mourièssou
Fonctions requises : Aucune
Code :
Jass:
globals
     real grp_float = 0.0
    unit grp_unit = null
    unitstate grp_unitstate = UNIT_STATE_LIFE
endglobals

function grp_UnitInGroupWithMinProperty takes nothing returns nothing
    local unit u = GetEnumUnit()
    if GetUnitState(u, grp_unitstate) < grp_float then
        set grp_float = GetUnitState(u, grp_unitstate)
        set grp_unit = u
    endif
    set u = null
endfunction

function grp_UnitInGroupWithMaxProperty takes nothing returns nothing
    local unit u = GetEnumUnit()
    if GetUnitState(u, grp_unitstate) > grp_float then
        set grp_float = GetUnitState(u, grp_unitstate)
        set grp_unit = u
    endif
    set u = null
endfunction

function UnitInGroupWithMinMaxProperty takes group g, unitstate us, boolean min returns unit
    if g == null or FirstOfGroup(g) == null then
        return null
    endif
   
    set grp_unitstate = us
    set grp_float = GetUnitState( FirstOfGroup(g), us)
    set grp_unit = FirstOfGroup(g)
    if min then
        call ForGroup(g, function grp_UnitInGroupWithMinProperty)
    else
        call ForGroup(g, function grp_UnitInGroupWithMaxProperty)
    endif
    return grp_unit
endfunction

Utilisation :
Gui:
Trigger:
re test
Collapse Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing kikou as Résultat équivalent
Conditions
Collapse Actions
Custom script:   call KillUnit( UnitInGroupWithMinMaxProperty(udg_Groupe_Arene[0], UNIT_STATE_MANA, true))

Copyright : Libre
Remarques : Pas de bug

Ah lol y a pas de champs description xD, devinez ce que ça fait héhéhhé

...

Bon ca permet de renvoyer l'unité d'un groupe qui a tel statistique (vie, mana, vie_max, mana_max) la plus faible (boolean min à true) ou la plus élevée (boolean min à false).
_________________


Dernière édition par Brissou de Mourièssou le 12/08/08 17:57; édité 3 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 11/08/08 20:07    Sujet du message: Citer

Utile pour des sorts.
_________________
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: 12/08/08 11:09    Sujet du message: Citer

Tes fonctions sont quasiment les mêmes avec juste une ligne différente entre les 2. Tu pourrais facilement ne faire qu'une seule fonction avec un paramètre supplémentaire pour indiquer si l'on désire le maximum ou le minimum (un booléen ferait l'affaire).
Avec par exemple l'utilisation d'une variable de type code.
Et c'est pareil pour les fonctions des groupes, avec une variable globale en plus.

Jass:
globals
     real grp_float = 0.0
    unit grp_unit = null
    unitstate grp_unitstate = UNIT_STATE_LIFE
endglobals

Initialiser tes variables est inutile, tu peux simplement les déclarer sans leur donner de valeur.
_________________
- 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
 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...)
Créateur de héros (Quantité : 1) Concours de sorts amusants (Quantité : 1)

MessagePosté le: 12/08/08 11:40    Sujet du message: Citer

Aller je vais faire un effort et faire ce que tu me dis.
Pour l'initialisation des variables je sais que c'est pas indispensable dans ce cas là, j'ai fais ça dans un soucis de propreté. Il arrive parfois qu'un code plante parce qu'on a pas initialisé les variables lors de leur déclaration, j'ai pris l'habitude de le faire dans tous les cas.

Edit: voilà j'ai fais du 2en1

Je l'ai faite pour un boss d'Arena-100, histoire de faire des coups de péripatéticiennes. Ca évitera aussi de mana drain un héros qui a plus de mana.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Magus
Membre a fort taux de post


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


MessagePosté le: 12/08/08 12:12    Sujet du message: Citer

En fait c'est surtout qu'il faut prendre l'habitude de faire du code réutilisable le plus facilement et éviter le codage au copier/coller. Comme ça si tu dois modifier quelque chose dans tes fonctions tu ne le feras qu'une seule et pas 2 fois. Bon certes ici c'est pas très flagrant, mais imagine tu as copier/coller 40 fois la même chose et a la fin tu te rends compte "omg je dois modifier un truc !!!" Very Happy

Sinon pour l'initialisation, c'est surtout qu'il ne faut pas utiliser de variable qui n'a jamais été affecté.
Exemple :
Jass:

local unit uneUnite = GetJeSaisPasQuelleUnite()
call KillUnit(uneUnite)
//Plante pas
//=======
local unit uneUnite
//...
//...
set uneUnite = GetJeSaisPasQuelleUnite()
call KillUnit(uneUnite)
//Plante pas
//=======
local unit uneUnite
call KillUnit&#40;uneUnite)
//Plante !

_________________
- 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
 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...)
Créateur de héros (Quantité : 1) Concours de sorts amusants (Quantité : 1)

MessagePosté le: 12/08/08 13:24    Sujet du message: Citer

Merci je suis bien au courant de ce qui faut faire en programmation xD, je fais des programmes bien plus compliqués que du We.
A la base j'avais fais la fonction uniquement pour avoir l'unité qui avait le minimum de pv d'un groupe, je l'ai étendu pour n'importe quelle état me disant que ça serait très utile. Enfin tant qu'à faire j'ai ajouté le max, par un simple copié/collé, j'avais hésité à ajouter un booléen, la flemme fut un argument décisif ^^

J'suis d'accord avec toi, il faut pas utiliser de variable qui n'a pas été affectée, c'est pour ça que j'ai pris l'habitude de toujours assigner une valeur lors de la déclaration, au moins j'ai jamais de soucis.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
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