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=59f5e96dbf8d6ce161390986de09118bMé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

Comment utiliser une fonction jass

 
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
 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: 02/09/07 19:50    Sujet du message: Comment utiliser une fonction jass Citer

Tout d'abord je vous invite à cliquer sur ces liens :

Apprendre le JASS
Les principes du JASS

Vous ne comprenez toujours pas comment faire, ou vous avez eu simplement la flemme de lire, ok expliquons donc les choses clairement et sans ambiguité Very Happy

Tout d'abord il faut repérer le nom de la fonction.
comme vous avez du le lire (oupa) dans les tutos la syntaxe est TRES importante en jass.
Mettez une majuscule à la place d'une minuscule, et vous obtiendrez une erreur Cool

Ensuite il faut regarder la première ligne de la fonction

Exemple :
Jass:
function GetUnitZ takes unit u returns real

Il faut regarder ce qui est spécifié dans le takes.
On les appelle : arguments de la fonction.
Ce sont les paramètres nécessaires, les informations que la fonction a besoin pour faire son job
Ici nous avons un seul du type unit, autrement dit il faudra spécifier une unité.

Vous trouverez la correspondance des types de paramètre gui/jass dans ce tuto : >>> Variables locales en GUI <<<

Observons maintenant ce qu'il y a aprés le returns.
Ce qui se trouve aprés le returns c'est le type de variable que retourne la fonction.
contrairement aux arguments, il ne peut y avoir qu'un seul returns, ca parait évident mais bon
ici real, soit un réel.

Sans lire la description de la fonction, nous savons donc que c'est une fonction qui donne un réel, en prenant comme référence une unité.

C'est bien beau tout cela mais comment utiliser la fonction Confused


Tout d'abord il faut copier/coller le code dans le code script personnalisé de votre map.
Si des fonctions sont requises, il faut les copier/coller avant dans l'ordre indiqué

2 possibilités :

- la fonction returns nothing :
Jass:
call NomDeLaFonction ( paramètre1, paramètre2, etc )

- la fonction returns un type :
Jass:
set variableX = NomDeLaFonction ( paramètre1, paramètre2, etc )


variableX est une variable locale ou globale ( variable du gui ) ayant le même type que le return (entier, unité, etc ).
Pour utiliser une variable du gui vous devez placer udg_ devant celle ci.

Ex une variable nommé unit1 en gui donnera en jass udg_unit1

Pour les paramètres vous pouvez aussi naturellement utiliser une variable du gui.

Ex d'utilisation :

Gui:
Trigger:
test
Collapse Evénements
Unité - A unit enters Region1 <gen>
Conditions
Collapse Actions
Set Unit1 = (Triggering unit)
Custom script:   set udg_Reel1 = GetUnitZ ( udg_Unit1 )
Partie - Display to (All players) the text: (Name of Unit1)
Partie - Display to (All players) the text: (String(Reel1))


Dés qu'une unité entrera dans la Region1, son nom et son altitude s'affichera pour tout les joueurs

Lisez la description de la fonction, si le but de la fonction n'est pas de renvoyer une "valeur" (entier,unité,etc), vous pouvez ommettre le set de variable et faire comme si elle returns nothing.

--------------------------------------------------------------------------------------------------------------------------------------------------------------

Voilà pour le monde merveilleux du jass.
Il existe des préprocesseurs jass, qui émulent plusieurs paradigmes de programmation tel que la Programmation Orientée Objet, mais au final le code final reste du jass.

Je vais citer ceux que je connais, le vJass, Zinc, cJass.

Le vJass est le plus aboutit, même si à l'heure actuelle (20 décembre 2011 10h37min16s14 GMT+0) il existe encore quelques bugs et incohérences, il est toutefois très utile.
De plus, même si l'auteur a cessé d'être actif tout espoir n'est pas perdu.

Le vJass est étroitement lié à un logiciel : jasshelper.
La façon la plus commode de l'utiliser est avec le JassNewGenPack.

Mais cela nécessite d'utiliser windows, pour les utilisateurs de mac ou linux je crois bien que cela soit impossible sans virtualiser windows.
Pour les utilisateurs de linux il est toutefois possible d'utiliser jasshelper en ligne de commande avec wine.
Pour les utilisateurs de mac, je suppose qu'une méthode similaire est possible.

Le JNGP peut être considéré comme un antivirus car il utilise les mêmes procédés (injections de librairies dll si je ne m'abuse), afin de rajouter des fonctionnalités à l'éditeur officiel.
Soyez rassuré cela n'en n'est pas un, il suffit de configurer son antivirus pour ignorer ce faux positif.
Je ne vais lister les fonctionnalités, mais sachez que contrairement au nom il ne s'agit pas que du jass, mais par exemple aussi de l'éditeur d'objet.
Pour profiter de certains add-on il faut avoir l'éditeur en anglais (je pense au risc colorizer, je crois que c'est le seul d'ailleurs non disponible avec une version non anglophone).

A l'heure actuelle le JNGP n'est plus à jour, il faut mettre à jour jasshelper soit même (un simple copier/remplacer suffit).

Quelques trucs à savoir à propos de l'utilisation du JNGP :

- Il faut sauvegarder avant de tester une map si votre code contient du vJass (à noter qu'il faut parfois sauvegarder deux fois, mais j'ai la flemme d'expliquer quand, vous le découvrirez bien par vous même :p)

- il faut désactiver RTC (dans les menus) qui ne fonctionne plus avec les nouveaux patchs.

- rien n'oblige à utiliser du vJass, on peut très bien n'utiliser que du jass, même si ça serait bien dommage de s'en priver.
Les bénéfices par rapport à l'éditeur officiel restent réels, ne serait ce que pour la colorisation du code, pouvoir l'indenter avec la touche Tab, et aussi plus de crash de l'éditeur pour une erreur de syntaxe à la sauvegarde.

Pour en revenir aux autres préprocesseurs jass cités auparavant :

Ils nécessitent tout deux jasshelper, en fait ce sont des préprocesseurs du vJass, ils transforment le code en vJass, qui lui même sera convertit en jass.

Zinc avaient de bons concepts, mais il reste à l'état de prototype, pleins de bugs et de fonctionnalités inexistantes.
Le cJass partait perdant : coder un parseur en ASM wouhou.
Pourquoi pas le coder en assembleur aussi ...
'fin bref je cherche pas à dénigrer l'auteur, j'ai fait joujou avec son préprocesseur, et j'imagine bien qu'il s'est bien amusé, mais bon forcément les débugs et modifs ne sont pas faciles à faire ...

La documentation du vJass est disponible quand vous téléchargez jasshelper, sous le nom jasshelpermanual.htlm, à ouvrir avec n'importe quel navigateur internet.
Oui c'est en Anglais, mais faut vous y mettre, l'anglais est incontournable dans le domaine de la programmation.
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 20/12/11 10:49; édité 8 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 05/09/07 19:25    Sujet du message: Citer

Et ajoutons aussi que certaines fonctions courantes renvoient des valeurs, qui ne sont pas forcément attendues, comme par exemple :

Jass:
UnitRemoveBuffBJ takes integer buffcode, unit whichUnit returns boolean


La fonction RemoveBuffBJ enlève un buff d'un type donné d'une unité, si pour une raison quelconque la fonction n'a pas pu l'enlever (si elle n'a pas le buff par exemple), alors la fonction renverra FALSE, sinon elle renverra TRUE.
Ce qui peut être donc interessant pour remplacer un UnitHasBuffBJ() si de toute manière on doit enlever le buff.

Exemple :
Jass:
if( RemoveBuffBJ( 'B001', my_unit ) )then
    //mes actions custom ...
    //par exemple :
    call SetUnitLifePercentBJ( my_unit, 100. )
endif

_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 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: 06/09/07 18:34    Sujet du message: Citer

Mais pas tout le temps, ca renverra toujours faux si au moins l'un des paramètres de la fonction est invalide.
Mais ce n'est pas pour autant que l'action sera forcément éxécutée.
Je penses notamment au play sound et aux ordres donnés à une unitée, qui vient de recevoir un ordre avec point pour cible
_________________
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 -> 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