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

array + struct

 
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
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 07/11/13 17:31    Sujet du message: array + struct Citer

C'est incompatible ? Parce que il me demande de mettre un [size] pour les arrays:

Secret:

Jass:
private struct PD
        => unit array o //The little orbs
        unit b //The big one
        unit c //The caster
        => lightning array l //The lightnings
        => real array a //The angles
        real r //The rotation
        real s //The speed
        real f //The falling speed
        real t //The timer
        integer m //The amount of little orbs, lightnings, angles
        real g //The grow
        real d //The distance
        real AoE //The AoE
        real D //The damage
    endstruct



Et du coup ben, je me demande comment on fait, est-ce que je met 0 ? Est-ce qu'il faut utiliser une autre méthode ? Est-ce qu'il faut que je mette un truc comme [VariableTotalementInutileQuisIncrementAChaqueInstance] ?
_________________
Inactif(Enfn presque)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2012
Sujets: 49

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Ayane (Quantité : 1)

MessagePosté le: 07/11/13 17:42    Sujet du message: Citer

Tu dois spécifier une taille fixe, les valeurs étant déjà dans un tableau, il lui faut connaître le pas.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 07/11/13 17:42    Sujet du message: Citer

Il faut mettre un nombre fixe (pas une variable, donc) qui maximise le nombre d'objets que tu vas utiliser.

Par exemple, si tu as 3/4/5 "little orbs" pour ton sort aux niveaux 1/2/3, ben tu mets "unit array o [5]".

Arf, grillé !
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 07/11/13 17:44    Sujet du message: Citer

Une taille fixe ou maximale ? Parce que si c'est fixe, ça va me poser problème(puisque ça dépend du nombre d'instances simultanées), si c'est max, j'ai juste à mettre 8191 (ou plus) parce qu'il y a peu de chance que la valeur soit atteinte.

Edit: Oups, désolé Tir, j'ai pas vu ton post(enfin si, mais après avoir posté celui-là).
_________________
Inactif(Enfn presque)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 07/11/13 19:50    Sujet du message: Citer

Voilà, j'ai essayé et comment dire, ce n'est pas comme si il ne se passait rien, c'est plus comme si les valeurs à array "refusaient" d'avoir autre chose que 0.00 même lorsqu'on leur assigne. (J'ai testé avec des BJDebugMsg, instance.a vaut 0.00 en permanence.)

La partie importante:
Secret:

Jass:
    [...]
private struct PD
        unit array o[16] //The little orbs (must be at least equal to the maximal amount of orbs, BaseAmount + LevelAmount * MaxLevel
        unit b //The big one
        unit c //The caster
        lightning array l[16] //The lightnings (same as the orbs
        real array a[16] //The angles same as the orbs
        real r //The rotation
        real s //The speed
        real f //The falling speed
        real t //The timer
        real h //The maxheight
        integer m //The amount of little orbs, lightnings, angles
        real g //The grow
        real d //The distance
        real AoE //The AoE
        real D //The damage
        player p //The owner
    endstruct
   
    globals
        private integer Amount = 0
        private PD array StructArray
        private timer Timer = CreateTimer()
    endglobals
   
    private function Loop takes nothing returns nothing
    endfunction
   
    private function Cast takes nothing returns boolean
        local PD instance = PD.create()
        local real x1 = GetUnitX( GetTriggerUnit() )
        local real x2 = GetSpellTargetX()
        local real y1 = GetUnitY( GetTriggerUnit() )
        local real y2 = GetSpellTargetY()
        local integer level = GetUnitAbilityLevel( GetTriggerUnit(), Ability() )
        local integer loopA = 0
        local real a
        local real b
        set Amount = Amount + 1
        set instance.p = GetOwningPlayer( GetTriggerUnit() )
        set instance.c = GetTriggerUnit()
        set instance.s = Speed( level )
        set instance.D = Damage( level )
        set instance.AoE = AoE( level )
        set instance.g = Grow( level )
        set instance.m = Orbs( level )
        set instance.t = EffectTimer(  )
        set instance.f = Falling( level )
        set instance.r = Rotation( level )
        set instance.d = Distance( level )
        set instance.h = MaxHeight( level )
        set instance.b = CreateUnit( instance.p, BigOrbType(), x2, y2, 0.00 )
        call SetUnitFlyHeight( instance.b, instance.h, 0.00 )
        set a = (360.00 / I2R( instance.m ) )
        set b = a
        loop
            exitwhen loopA > instance.m
            set instance.a[loopA] = a
            set x1 = ( x2 + instance.d ) * a
            set y1 = ( y2 + instance.d ) * a
            call CreateUnit( instance.p, OrbsType(), x1, y1, 0.00 )
            set instance.o[loopA] = GetLastCreatedUnit()
            set a = a + b
            if a > 360.00 then
                set a = a - 360.00
            endif
            set loopA = loopA + 1
        endloop
        return true
    endfunction
//Initializer   
    private function InitPD takes nothing returns nothing
        local trigger cast = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ( cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        call TriggerAddCondition( cast, Condition( function Cast ) )
    endfunction
   
endscope



Le total (avec toutes les fonctions de valeur):

Secret:

Jass:
scope PlasmaDome initializer InitPD
    //values functions
   
    /*****************************************************
    ***************THE ABILITY RAWCODE:*******************
    *****************************************************/
    private function Ability takes nothing returns integer
        return 'A000'
    endfunction
   
    /*****************************************************
    ********HOW MUCH DAMAGE THE SPELL WILL DEAL:**********
    *****************************************************/
    private function Damage takes integer level returns real
        return 250.00 + ( 100.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    ***********HOW BIG THE AREA OF EFFECT IS:*************
    *****************************************************/
    private function AoE takes integer level returns real
        return 300.00 + ( 100.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    **************HOW FAST THE ORBS ROTATE:***************
    *****************************************************/
    private function Rotation takes integer level returns real
        return 1.00 + ( 1.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    *************HOW HIGH THE BIG ORB IS:*****************
    *****************************************************/
    private function MaxHeight takes integer level returns real
        return 200.00 + ( 200.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    **********HOW FAR FROM THE BO THE SO ARE:*************
    *****************************************************/
    private function Distance takes integer level returns real
        return 500.00 + ( 200.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    **************HOW FAST THE SO MOVES:******************
    *****************************************************/
    private function Speed takes integer level returns real
        return 5.00 + ( 5.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    *************HOW FAST THE BIG ORB GROWS:**************
    *****************************************************/
    private function Grow takes integer level returns real
        return 1.00 + ( 0.50 * I2R( level ) )
    endfunction
   
    /*****************************************************
    *************HOW FAST THE BIG ORB FALLS:**************
    *****************************************************/
    private function Falling takes integer level returns real
        return 10.00 + ( 5.00 * I2R( level ) )
    endfunction
   
    /*****************************************************
    ***************HOW MUCH SO THERE IS:******************
    *****************************************************/
    private function Orbs takes integer level returns integer
        return 4 + ( 4 * level )
    endfunction
   
    /*****************************************************
    ********HOW OFTEN THE GROW EFFECT APPEARS:************
    *****************************************************/
    private function EffectTimer takes nothing returns real
        return 0.09
    endfunction
   
    /*****************************************************
    ************HOW THE NOVA EFFECT LOOKS:****************
    *****************************************************/
    private function EndEffect takes nothing returns string
        return "Model\\EarthNova.mdx"
    endfunction
   
    /*****************************************************
    ************HOW THE GROW EFFECT LOOKS:****************
    *****************************************************/
    private function GrowEffect takes nothing returns string
        return "Abilities\\Spells\\NightElf\\ManaBurn\\ManaBurnTarget.mdl"
    endfunction
   
    /*****************************************************
    *********WHERE THE GROW EFFECT IS ATTACHED:***********
    *****************************************************/
    private function GrowAttachement takes nothing returns string
        return "chest"
    endfunction   
   
    /*****************************************************
    ***********HOW THE DAMAGE EFFECT LOOKS:***************
    *****************************************************/
    private function DamageEffect takes nothing returns string
        return "Abilities\\Spells\\Other\\AcidBomb\\BottleMissile.mdl"
    endfunction
   
    /*****************************************************
    *********WHERE THE DAMAGE EFFECT IS ATTACHED:*********
    *****************************************************/
    private function DamageAttachement takes nothing returns string
        return "overhead"
    endfunction
   
    /*****************************************************
    *************HOW THE LIGHTNINGS LOOKS:****************
    *****************************************************/
    private function LightningType takes nothing returns string
        return "DRAL"
    endfunction
   
    /*****************************************************
    *************THE SMALL ORBS RAWCODE:******************
    *****************************************************/
    private function OrbsType takes nothing returns integer
        return 'hfoo'
    endfunction
   
    /*****************************************************
    ***************THE BIG ORB RAWCODE:*******************
    *****************************************************/
    private function BigOrbType takes nothing returns integer
        return 'h002'
    endfunction
   
    /*****************************************************
    *******THE WEAPONTYPE(leave unchanged, useless):******
    *****************************************************/
    private function WeaponType takes nothing returns weapontype
        return null
    endfunction
   
    /*****************************************************
    ******************THE DAMAGETYPE:*********************
    *****************************************************/
    private function DamageType takes nothing returns damagetype
        return DAMAGE_TYPE_ACID
    endfunction

    /*****************************************************
    ******************THE ATTACKTYPE:*********************
    *****************************************************/
    private function AttackType takes nothing returns attacktype
        return ATTACK_TYPE_MAGIC
    endfunction
   
    /*****************************************************
    ***********HOW OFTEN THE TIMER WILL "TICK":***********
    *****************************************************/
    private function Interval takes nothing returns real
        return 0.03
    endfunction
//The spell

    private struct PD
        unit array o[16] //The little orbs (must be at least equal to the maximal amount of orbs, BaseAmount + LevelAmount * MaxLevel
        unit b //The big one
        unit c //The caster
        lightning array l[16] //The lightnings (same as the orbs
        real array a[16] //The angles same as the orbs
        real r //The rotation
        real s //The speed
        real f //The falling speed
        real t //The timer
        real h //The maxheight
        integer m //The amount of little orbs, lightnings, angles
        real g //The grow
        real d //The distance
        real AoE //The AoE
        real D //The damage
        player p //The owner
    endstruct
   
    globals
        private integer Amount = 0
        private PD array StructArray
        private timer Timer = CreateTimer()
    endglobals
   
    private function Loop takes nothing returns nothing
    endfunction
   
    private function Cast takes nothing returns boolean
        local PD instance = PD.create()
        local real x1 = GetUnitX( GetTriggerUnit() )
        local real x2 = GetSpellTargetX()
        local real y1 = GetUnitY( GetTriggerUnit() )
        local real y2 = GetSpellTargetY()
        local integer level = GetUnitAbilityLevel( GetTriggerUnit(), Ability() )
        local integer loopA = 0
        local real a
        local real b
        set Amount = Amount + 1
        set instance.p = GetOwningPlayer( GetTriggerUnit() )
        set instance.c = GetTriggerUnit()
        set instance.s = Speed( level )
        set instance.D = Damage( level )
        set instance.AoE = AoE( level )
        set instance.g = Grow( level )
        set instance.m = Orbs( level )
        set instance.t = EffectTimer(  )
        set instance.f = Falling( level )
        set instance.r = Rotation( level )
        set instance.d = Distance( level )
        set instance.h = MaxHeight( level )
        set instance.b = CreateUnit( instance.p, BigOrbType(), x2, y2, 0.00 )
        call SetUnitFlyHeight( instance.b, instance.h, 0.00 )
        set a = (360.00 / I2R( instance.m ) )
        set b = a
        loop
            exitwhen loopA > instance.m
            set instance.a[loopA] = a
            set x1 = ( x2 + instance.d ) * a
            set y1 = ( y2 + instance.d ) * a
            call CreateUnit( instance.p, OrbsType(), x1, y1, 0.00 )
            set instance.o[loopA] = GetLastCreatedUnit()
            set a = a + b
            if a > 360.00 then
                set a = a - 360.00
            endif
            set loopA = loopA + 1
        endloop
        return true
    endfunction
//Initializer   
    private function InitPD takes nothing returns nothing
        local trigger cast = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ( cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        call TriggerAddCondition( cast, Condition( function Cast ) )
    endfunction
   
endscope


_________________
Inactif(Enfn presque)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

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

Je sais pas pour "a", mais "GetLastCreatedUnit" est une BJ et c'est pas comme ça qu'on fait en jass.
Jass:
set instance.o[loopA] = CreateUnit( instance.p, OrbsType(), x1, y1, 0.00 )


Qu'est-ce qui vaut 0.00 ? "instance.a[0]" juste après l'avoir modifié?
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

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

oui, instance.a[loopA], même après que je l'ai définit comme égal à a, vaut toujours 0.00
_________________
Inactif(Enfn presque)
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
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