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

Premier sort en vJass!!

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Les sorts
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Crowolf
Animateur


Inscrit le: 21 Avr 2008
Messages: 1607
Sujets: 81
Spécialité en worldedit: Utiliser le travail des autres
Médailles: 3 (En savoir plus...)
Grand décorateur (Quantité : 2) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 10/10/09 17:31    Sujet du message: Premier sort en vJass!! Citer

Bonjour, voici mon premier sort en vJass. J'ai lu un tuto de FlamePhoenix sur Hive et j'ai essayé de faire un sort simple, un BlinkStrike. Mis à part le fait qu'il soit très simple (pas d'effet), je demande s'il y a moyen de l'améliorer au niveau du code, de supprimer les leaks etc...

Secret:

Jass:
scope BlinkStrike initializer Init
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
    globals
        private constant integer Spell_ID = 'A000'
        private constant real Damage_per_Lvl = 75.0
    endglobals
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
private function Conditions takes nothing returns boolean
    return GetSpellAbilityId() == Spell_ID
endfunction
private function Actions takes nothing returns nothing
    local unit Caster = GetSpellAbilityUnit()
    local unit Target = GetSpellTargetUnit()
    local real X = GetUnitX(Target)
    local real Y = GetUnitY(Target)
    call SetUnitX(Caster, X)
    call SetUnitY(Caster, Y)
    if IsUnitEnemy(Target, GetTriggerPlayer()) then
        call UnitDamageTarget(Caster, Target, I2R(GetUnitAbilityLevel(Caster, Spell_ID))*Damage_per_Lvl, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS)
        else
    endif
    set Caster = null
    set Target = null
endfunction

//===========================================================================
private function Init takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( t, Condition(function Conditions ))
    call TriggerAddAction( t, function Actions )
endfunction

endscope



Autre question, est-ce que vous avez des astuces pour connaître les noms des fonctions? Je galère énormément à ce niveau là.
Question bonus: Quel est l'équivalent en vJass d'un trigger periodique en GUI?
Merchi beaucouplus.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

MessagePosté le: 10/10/09 17:43    Sujet du message: Citer

Citation:
Autre question, est-ce que vous avez des astuces pour connaître les noms des fonctions? Je galère énormément à ce niveau là.
Dans le JassNewGenPack est inclu l'addon TESH. Il apporte non seulement une coloration syntaxique et l'autocomplétion (même si je n'utilise pas du tout cette dernière fonction) mais aussi un bouton "Function List" disponible pour tous les scripts. Wink
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Crowolf
Animateur


Inscrit le: 21 Avr 2008
Messages: 1607
Sujets: 81
Spécialité en worldedit: Utiliser le travail des autres
Médailles: 3 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand décorateur (Quantité : 2)

MessagePosté le: 10/10/09 17:54    Sujet du message: Citer

Oui, je connais et utilise function list. Le problème c'est pour savoir ce que font ces functions, même si c'est souvent assez instinctif et pas trop dur. Il n'y a pas de petit texte explicatif comme en gui. Je suppose qu'avec la pratique, je devrais m'en sortir de mieux en mieux.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

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

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

Citation:
Quel est l'équivalent en vJass d'un trigger periodique en GUI?
Utilises la fonction TimerStart. Un trigger peut détecter quand un timer se termine, d'où le CreateTimerBJ :
Jass:
function CreateTimerBJ takes boolean periodic, real timeout returns timer
    set bj_lastStartedTimer = CreateTimer()
    call TimerStart(bj_lastStartedTimer, timeout, periodic, [size=18]null[/size])
    return bj_lastStartedTimer
endfunction

_________________
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: 1511
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: 10/10/09 18:14    Sujet du message: Citer

Tu as un else qui ne sert à rien.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
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: 10/10/09 18:52    Sujet du message: Citer

Pour la lisibilité / maintenabilité du code tu devrais appliquer des conventions différentes pour le choix de tes noms de variables/functions.

On en parle là bas :
http://worldedit.free.fr/forum/viewtopic.php?t=4466&start=0

Et "t" peut faire penser à un timer, "trig" serait plus judicieux.

PS :
Content que tu adhères à la secte Wink
_________________
Le violet, c'est moche.
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: 1511
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: 10/10/09 20:50    Sujet du message: Citer

Et je te conseille des minuscules pour le début de tes noms de variables, ça respecte la sémantique du jass et surtout ça fait gagner du temps Wink
_________________
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 -> Les sorts 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