Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMé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

Ça marche sûrement pas

 
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: 21/01/13 18:06    Sujet du message: Ça marche sûrement pas Citer

Voilà, vous le savez , j'apprend le vJass grâce au tuto de Sapeur(Qui est vraiment bien fait, je le conseille aux débutants(le tuto pas Sapeur)). Bref, je me suis dit que je pourrais faire comme dans son exemple avec les héros (J'étudie les structs en ce moment) , sauf que je voulais un peu plus de personnalisation, donc j'ai rajouté des trucs, qui n'ont d'ailleurs aucun rapport avec mon problème , et puis comme dans son exemple il expliquait pas comment on utilisait une instance de struct et une method dans une fonction autre que celle dans laquelle la struct est déclarée en tant que variable locale. donc j'ai fait un truc qui ne marche sûrement pas puisque j'ai besoin de me référer à l'instance du héros gagnant son niveau pour modifer les stats de mon héros lors de son levelup.

Le code:
Jass:
library CreateHero initializer StartCreateHero

struct CreateHero
    //The Hero who will be created
    unit Hero
    integer HeroID
   
    //The level of the hero
    integer Level
   
    //The stats of the hero
    integer Strength
    integer Agility
    integer Intelligence
   
    //The stat gained when the hero levelup
    integer StrengthLevel
    integer AgilityLevel
    integer IntelligenceLevel
   
   method LevelUp takes nothing returns nothing
        set this.Strength = this.Strength + this.StrengthLevel
        set this.Agility = this.Agility + this.AgilityLevel
        set this.Intelligence = this.Intelligence + this.IntelligenceLevel
        set this.Level = this.Level + 1
        call SetHeroStr( this.Hero , this.Strength , true )
        call SetHeroAgi( this.Hero , this.Agility , true )
        call SetHeroInt( this.Hero , this.Intelligence , true )
        call SetHeroLevel( this.Hero , this.Level , true )
   endmethod
   
endstruct

function CreateAnHero takes player p , integer ID , integer str , integer agi , integer int , integer strlvl , integer agilvl , integer intlvl  , real x , real y , real a returns nothing
    local integer i = 1
    local CreateHero ch = CreateHero.create()
    set ch.Hero = CreateUnit( p  , ID , x , y , a )
    set ch.Strength = str
    set ch.Agility = agi
    set ch.Intelligence = int
    set ch.Level = 1
    set ch.StrengthLevel = strlvl
    set ch.AgilityLevel = agilvl
    set ch.IntelligenceLevel = intlvl
    call SetHeroStr( ch.Hero , ch.Strength , true )
    call SetHeroAgi( ch.Hero , ch.Agility , true )
    call SetHeroInt( ch.Hero , ch.Intelligence , true )
endfunction

function LevelUp takes nothing returns  nothing
    local CreateHero ch = CreateHero.create()
    call ch.LevelUp()
endfunction

function StartCreateHero takes nothing returns nothing
    local trigger levelup = CreateTrigger(  )
    local integer index

    set index = 0
    loop
        call TriggerRegisterPlayerUnitEvent( levelup , Player(index), EVENT_PLAYER_HERO_LEVEL, null)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYER_SLOTS
    endloop
    call TriggerAddAction( levelup , function LevelUp )
   
endfunction

endlibrary


C'est un truc simple, je commence les structs et veux pas me lancer dans un truc trop dur.
_________________
Inactif(Enfn presque)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Wareditor
The Master of Nothing


Inscrit le: 22 Déc 2008
Messages: 1638
Sujets: 88
Spécialité en worldedit: Effacer


MessagePosté le: 21/01/13 18:22    Sujet du message: Citer

Et donc ? tu veux faire quoi ? Exprimes toi plus clairement si te plait ( évite le pavet ).
Déjà au lieu de faire une functionAnCreate Hero tu peux faire une static method create.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 21/01/13 18:28    Sujet du message: Citer

Ah oui un truc de plus qui n'est pas clair Rolling Eyes.
Alors toute cette partie semble correcte (j'ai pas vérifié la syntaxe mais bon) :
Jass:
struct CreateHero
    //The Hero who will be created
    unit Hero
    integer HeroID
   
    //The level of the hero
    integer Level
   
    //The stats of the hero
    integer Strength
    integer Agility
    integer Intelligence
   
    //The stat gained when the hero levelup
    integer StrengthLevel
    integer AgilityLevel
    integer IntelligenceLevel
   
   method LevelUp takes nothing returns nothing
        set this.Strength = this.Strength + this.StrengthLevel
        set this.Agility = this.Agility + this.AgilityLevel
        set this.Intelligence = this.Intelligence + this.IntelligenceLevel
        set this.Level = this.Level + 1
        call SetHeroStr( this.Hero , this.Strength , true )
        call SetHeroAgi( this.Hero , this.Agility , true )
        call SetHeroInt( this.Hero , this.Intelligence , true )
        call SetHeroLevel( this.Hero , this.Level , true )
   endmethod
   
endstruct

function takes player p , integer ID , integer str , integer agi , integer int , integer strlvl , integer agilvl , integer intlvl  , real x , real y , real a returns nothing
    local integer i = 1
    local CreateHero ch = CreateHero.create()
    set ch.Hero = CreateUnit( p  , ID , x , y , a )
    set ch.Strength = str
    set ch.Agility = agi
    set ch.Intelligence = int
    set ch.Level = 1
    set ch.StrengthLevel = strlvl
    set ch.AgilityLevel = agilvl
    set ch.IntelligenceLevel = intlvl
    call SetHeroStr( ch.Hero , ch.Strength , true )
    call SetHeroAgi( ch.Hero , ch.Agility , true )
    call SetHeroInt( ch.Hero , ch.Intelligence , true )
endfunction


Cependant, deux petites remarques :
- La fonction CreateAnHero devrait renvoyer l'instance de structure créée pour qu'on puisse en faire quelque chose.
- La philosophie des structure est de regrouper tous les attributs dans la structure, donc tu devrais intégrer cette fonction dans la structure. Mais en disant ça, je me rend compte que j'ai expliqué ça un peu tardivement dans le tuto, donc laisse comme c'est Razz.

Jass:
function LevelUp takes nothing returns  nothing
    local CreateHero ch = CreateHero.create()
    call ch.LevelUp()
endfunction

Alors ici, il faut bien comprendre que quand tu fais ch.LevelUp(), ça s'applique à l'instance que tu viens de créer, dans cette même fonction.
Je suppose que tu as essayé de faire :
Jass:
call CreateAnHero(...)
call LevelUp()

Mais là, tu créer un héros a, puis un héros b (par l'intermédiaire de la fonction LevelUp), puis du ajoute un level au héros b, et non au héros a.
Il faudrait que ta fonction CreateAnHero renvoie l'instance créée, arranger la fonction LevelUp de cette manière :
Jass:
function LevelUp takes CreateHero a returns nothing
call a.LevelUp()
endfunction

Puis faire comme ça :
Jass:
local CreateHero a = CreateAnHero(...)
call a.LevelUp()

Ça n'a en effet pas de sens de créer un autre héros dans la fonction LevelUp.
Bref, je suis pas sûr d'avoir répondu à la question ni d'avoir été clair Very Happy.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1846
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 21/01/13 18:50    Sujet du message: Citer

sapeur-goblin a écrit:
- La philosophie des structure est de regrouper tous les attributs dans la structure, donc tu devrais intégrer cette fonction dans la structure. Mais en disant ça, je me rend compte que j'ai expliqué ça un peu tardivement dans le tuto, donc laisse comme c'est Razz.


are you kidding me ?? vous m'avez TOUS pourri jusqu'à la mort pour que je mette tout dans la struct et lui osef ? >< je demande des excuses !!!

sinon j'ai vraiment pas compris la problème oO ça marche surement pas ??? ça veut dire que tu n'as pas testé ? tout ce que je peux te dire c'est que ça marchera peut être comme ça...
_________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 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: 21/01/13 19:17    Sujet du message: Citer

Ben, je veux pouvoir récupérer les instances créées par CreateAnHero dans Levelup pour qu'ils gagnent des stats lorsqu'ils gagnent de l'expérience de quelque manière que ce soit parce que si j'utilise des variables locales la fonction LevelUp ne peut pas récupérer leur valeur.

@Full: Sans test je me doutais que ça marche pas vu que ch est locale.

@Sapeur: avec ta méthode, je risque pas de me retrouver avec deux héros ?
Parce que comme je dois ajouter des stats personnalisés par niveau, si je peux pas récupérer mon instance pour ajouter des stats à mon héros c'est un peu problématique.

J'illustre avec un exemple:
Je met que mon héros gagne 6 de force par niveau, lorsqu'il gagne un niveau, j'utilise LevelUp pour lui ajouter 6 de force à la force qu'il avait au niveau précédent(comme avec les constantes de jeu sauf que ça me permet de faire des héros plus personnalisables puisqu'ils ont pas tous les mêmes stats de départ et par niveaux)
_________________
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