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=c1465ee24b68703f13db547e411ee678Mé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

Trucs, astuces et plus si affinités
Aller à la page 1, 2, 3, 4, 5, 6, 7  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 19/01/10 22:52    Sujet du message: Trucs, astuces et plus si affinités Citer

Pour éviter d'encombrer d'autres threads déjà bien assez imposants.
On postera ici tout ce qui concerne le codage en général, et je vais commencer par supprimer cette vilaine utilisation de i2struct.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 19/01/10 22:55    Sujet du message: Citer

D'accord.

En fait je crois que je ne comprends pas très bien l'utilisation des methods dans les tables. (Comme dans mes scripts)

La preuve: je ne comprends pas l'histoire du Itostruct. Pourquoi est-ce inutile?
_________________
Revenir en haut
 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: 19/01/10 23:07    Sujet du message: Citer

Jass:
private function i2struct takes integer i returns s_IndSum
    return i
endfunction
//=================================================
function IndSum takes unit summon returns s_IndSum
    if( summon==null )then
        return 0
    endif
    if( not TABLE.exists(summon) )then
        set TABLE[summon] = s_IndSum.create(summon)
    else
        call TABLE.destroy(i2struct(TABLE[summon]))
        set TABLE[summon] = s_IndSum.create(summon)
    endif
    return i2struct(TABLE[summon])
endfunction


Jass:
//codecodecode
return s_IndSum(TABLE[summon])


Les instances de struct ne sont ni plus ni moins que des entiers, simplement le compilateur vJass fait la distinction entre une instance de struct et un simple entier, et c'est tant mieux ca évite des erreurs bêtes de code.

Quand tu fais structName(entier), le code compilé est au final que l'entier en lui même, mais comme tu as spécifié que l'entier pouvait être considéré comme une instance de structName, le compilateur vJass fait un grand sourire.

Au lieu de structName tu peux utiliser thistype dans une method de struct, c'est encore plus sexy.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 19/01/10 23:09    Sujet du message: Citer

D'accord, merci!
_________________
Revenir en haut
 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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 19/01/10 23:20    Sujet du message: Citer

Tu ne comprends pas l'utilisation de methods en général ou justes celles dans Table ?
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








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

Je ne me sert de methods que selon ce schéma des Tables donnés il y a deux ans par Prophet, j'ai gardé l'habitude.

Je connais le concept des Methods.

En revanche je galère un peu avec les static methods /creators.

Et comme je ne peux coder que ce que je comprends bien...
_________________
Revenir en haut
 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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 19/01/10 23:36    Sujet du message: Citer

static method create takes ... returns thistype

Permet de définir soit même ce qui se passe à la création d'une instance de struct.
On peut par ex prendre un argument unité et booléen et définir (takes ...) et définir les membres de la struct aux valeurs ainsi spécifiées (suis je clair hmm ?)

Ca permet d'avoir le contrôle total de la création d'une struct, tout en gardant la syntaxe universelle .create.

La plupart du temps même si à priori j'en ai pas besoin je la déclare quand même, car à part quelques lignes de plus dans l'éditeur, le script de la map est rigoureusement identique.
Et s'il s'avère que dans ma librairie/scope je tapes plusieurs fois .create(), je code dans cette méthode tout le nécessaire, et je n'ai plus qu'à taper .create(), une source d'erreur un moins, un code plus lisible yeah.

.allocate() alloue une instance de struct, on pourrait à la place utiliser son propre allocateur de struct mais comme je l'ai déjà posté ca semble bien inutile :p
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 19/01/10 23:41    Sujet du message: Citer

En fait dans mes libaries utilisant les Tables, le static method pourrait remplacer la method Link à chaque fois, si j'ai bien compris? (Dans toutes mes libraries avec Table, la method Link est celle que j'appelle en premier en général).
_________________
Revenir en haut
 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: 19/01/10 23:50    Sujet du message: Citer

Apocalypse a écrit:
En fait dans mes libaries utilisant les Tables, le static method pourrait remplacer la method Link à chaque fois, si j'ai bien compris? (Dans toutes mes libraries avec Table, la method Link est celle que j'appelle en premier en général).


Si tu l'appelles juste après avoir créé une instance oui, mais c'est bizarre dans ta première librairie je ne vois pas d'appel de la method Link, pourtant ta struct est private ...
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 19/01/10 23:51    Sujet du message: Citer

Jass:
//=================================================
method Link takes unit master returns nothing
    set .master = master
    set .ti = NewTimer()
    call SetTimerData( .ti, this )
    call TimerStart( .ti, TIMEOUT, true, function runtimerorder )
endmethod

_________________
Revenir en haut
 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: 19/01/10 23:52    Sujet du message: Citer

l'appel de method je le vois pas.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 19/01/10 23:53    Sujet du message: Citer

Ah pardon, c'est un autre déclencheur.

(Je ne pensais pas que c'était important)
Jass:
scope summonfighter initializer init
//=================================================
globals
    private constant string FX = "Abilities\\Spells\\Demon\\DarkPortal\\DarkPortalTarget.mdl"
endglobals
//=================================================
private function Conditions takes nothing returns boolean
local unit caster = GetSummoningUnit()
local unit drone = GetSummonedUnit()
    if GetUnitTypeId(caster) == 'n005' and (GetUnitTypeId(drone) == 'h01F' or GetUnitTypeId(drone) == 'h01G') then
        call DestroyEffect(AddSpecialEffectTarget(FX,drone,"origin"))
        call IndSum(drone).Link(caster)
    endif
    set caster = null
    set drone = null
    return false
endfunction
//=================================================
public function init takes nothing returns nothing
local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SUMMON )
    call TriggerAddCondition(t, Condition(function Conditions))
endfunction   
//=================================================
endscope

_________________
Revenir en haut
 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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

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

Ouai bon j'ai la flemme pour ce soir mais faudra améliorer cela.
As tu compris en général ce qu'est une static method et une method normale, ou need explications ?
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








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

Method normal: sorte de fonction, sauf que c'est compris au sein de la struct (pas besoin d'appeler celle-ci comme pour une fonction avec une variable locale), et qu'on peut les placer comme on veut contrairement aux fonctions (si A est au dessus de B, A peut quand même appeler B, les fonctions, non)

Static Method : en gros c'est qu'au lieu de faire mastruct.Create avec la struct ayant par exemple comme variables une unité, avec le static method, je peux directement affecter quelle unité sera sur la variable au moment de la création de la struct.

C'est ça?
_________________
Revenir en haut
 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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 20/01/10 00:17    Sujet du message: Citer

Apocalypse a écrit:
Method normal: sorte de fonction, sauf que c'est compris au sein de la struct (pas besoin d'appeler celle-ci comme pour une fonction avec une variable locale), et qu'on peut les placer comme on veut contrairement aux fonctions (si A est au dessus de B, A peut quand même appeler B, les fonctions, non)

Ouai bah justement l'ordre des methods à une importance mais on en parlera demain, je devrais te provoquer de bonnes suées à fixer ton code héhé.
J'ai pas compris ce que tu voulais dire entre parenthèses.
Mais simplement une method est une fonction normale mais qui a besoin d'une instance de struct.

Citation:
Static Method : en gros c'est qu'au lieu de faire mastruct.Create avec la struct ayant par exemple comme variables une unité, avec le static method, je peux directement affecter quelle unité sera sur la variable au moment de la création de la struct.

C'est ça?

C'est un cas particulier que tu décrits.
Mais oui une static method est une fonction normale, elle n'utilise pas une instance de struct, c'est évident que create doit etre static, car on y créé une instance en partant de rien.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2, 3, 4, 5, 6, 7  Suivante
Page 1 sur 7

 
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