online faq recherche accueil
 

Il y a 194 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
 Page :  1  2
Page Précédente 
Auteur
 Sujet :

comment créer une fonction ?

 
n°4586992
Maximaxou
rejoignez les fidèles du JASS
Posté le 17-11-2006 à 09:46:38  profilanswer
 

Bonjour, j'ai un problème : j'ai souvent besoin de faire plusieurs fois la même chose comme par exemple spécifier la commande tapée par l'utilisateur, soit les caractères situés entre "-" et " " dans la chaîne qu'il a tapée. J'aimerais donc pouvoir créer une fonction cmd qui prenne en entrée une chaîne de caractères, vérifie si elle est du type commande et si oui renvoit la commande, sinon renvoie une chaîne vide. Merci.

n°4586993
Maximaxou
rejoignez les fidèles du JASS
Posté le 17-11-2006 à 09:54:13  profilanswer
 

Autre question : la boucle tant que n'existe-t-elle pas ?

n°4586994
Ayane
Posté le 17-11-2006 à 12:55:00  profilanswer
 

Le mieux c'est que tu utilise le Jass. Cela te donnerais quelque chose ressemblant à cela

Code :
  1. function cmd takes string s returns string
  2. local string com = SubString( s, 1, 2)
  3. if com == "C" or com == "F" then
  4.  return com
  5. endif
  6. return ""
  7. endfunction


 
En GUI tu peux faire un déclencheur que tu appelle à chaque fois.
 
En GUI on peut refaire le While avec le For en réaffectant l'index.
En Jass il n'y a qu'une seule boucle:

Code :
  1. loop
  2. // Instructions
  3. exitwhen i < 0
  4. // Instructions
  5. endloop

n°4587024
Maximaxou
rejoignez les fidèles du JASS
Posté le 21-11-2006 à 18:49:57  profilanswer
 

OK merci

n°4587298
Maximaxou
rejoignez les fidèles du JASS
Posté le 09-12-2006 à 05:28:09  profilanswer
 

Maintenant que j'ai bien compris comment fonctionne les fonctions, je compte bien les utiliser abondamment. Petit hic, je n'arrive pas à créer une fonction qui pourra être utilisée de n'importe quel déclencheur. Ce qui me parait le plus logique à faire est ceci (mais ça ne marche pas) :

Code :
  1. //trigger contenant la fonction que je désire créer
  2. function Trig_D__clencheur_sans_titre_001_Actions takes nothing returns nothing
  3.  
  4. endfunction
  5.   //ma fonction
  6. function aff_max takes nothing returns string
  7.     return "max"
  8. endfunction
  9. //===========================================================================
  10. function InitTrig_D__clencheur_sans_titre_001 takes nothing returns nothing
  11.     set gg_trg_D__clencheur_sans_titre_001 = CreateTrigger(  )
  12.     call TriggerAddAction( gg_trg_D__clencheur_sans_titre_001, function Trig_D__clencheur_sans_titre_001_Actions )
  13. endfunction


 
Il y a une erreur "attendait un nom" à l'appel de la fonction, dans un autre trigger :

Code :
  1. function Trig_D__clencheur_sans_titre_002_Actions takes nothing returns nothing
  2.     call DisplayTextToForce( GetPlayersAll(), function aff_max() ) //j'ai essayé avec et sans "function"
  3. endfunction
  4. //===========================================================================
  5. function InitTrig_D__clencheur_sans_titre_002 takes nothing returns nothing
  6.     set gg_trg_D__clencheur_sans_titre_002 = CreateTrigger(  )
  7.     call TriggerRegisterTimerEventSingle( gg_trg_D__clencheur_sans_titre_002, 5 )
  8.     call TriggerAddAction( gg_trg_D__clencheur_sans_titre_002, function Trig_D__clencheur_sans_titre_002_Actions )
  9. endfunction


n°4587302
Ayane
Posté le 09-12-2006 à 10:47:57  profilanswer
 

Normalement c'est
call DisplayTextToForce( GetPlayersAll(), aff_max() )
 
Mais il faut que ton déclencheur avec la fonction aff_max ne soit pas lancer à l'initialisation (case à décocher), sinon le parseur jass considère que les fonctions ne sont seulement accessibles qu'à partir du déclencheur actuel.

n°4587306
Maximaxou
rejoignez les fidèles du JASS
Posté le 09-12-2006 à 14:10:49  profilanswer
 

J'ai donc mis le trigger créant la fonction initialement off et j'ai enlevé le mot function en trop. Cependant j'ai toujours la même erreur, fonction non reconnue. Au cas où l'ordre des déclencheurs aurait une importance, j'ai bien mis le trigger créant la fonction en premier.

n°4587311
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 09-12-2006 à 16:22:25  profilanswer
 

Code :
  1. call aff_max( "max" )

dans la fonction action du déclencheur souhaité
 
Et celle ci dans le script personnalisé
 

Code :
  1. function aff_max takes string s returns nothing
  2. call DisplayTextToForce( GetPlayersAll(), s )
  3. endfunction


 
ainsi tu peux changer le texte facilement

Message cité 1 fois
Message édité par Troll-Brain le 09-12-2006 à 17:10:48
n°4587313
Maximaxou
rejoignez les fidèles du JASS
Posté le 09-12-2006 à 17:32:14  profilanswer
 

non mais ce n'est pas ce que je veux.
je veux pouvoir faire des fonctions qui renvoient quelque chose

n°4587314
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 09-12-2006 à 18:06:19  profilanswer
 

bien dans ce cas tu fais ceci :
Dans le script perso tu mets ta fonction :

Code :
  1. function aff_max takes nothing returns string
  2. return "max"
  3. endfunction


 
et dans la fonction action du déclencheur que tu veux :

Code :
  1. call DisplayTextToForce( GetPlayersAll(), aff_max() )


 
Ne me dis pas que cela ne fonctionne pas j'ai testé


Message édité par Troll-Brain le 09-12-2006 à 18:07:35
n°4587315
Maximaxou
rejoignez les fidèles du JASS
Posté le 10-12-2006 à 00:30:41  profilanswer
 

ben dis_moi exactement comment tu fais alors, moi je n'arrive pas à compiler ceci :

Code :
  1. function Trig_D__clencheur_sans_titre_002_Actions takes nothing returns nothing
  2. //je me suis dis que l'erreur venait peut-être du fait que le déclencheur contenant la déclaration de la fonction n'était pas appelé :
  3.     call TriggerExecute( gg_trg_D__clencheur_sans_titre_001 )
  4. //ça ne modifie pas l'erreur
  5.     call DisplayTextToForce( GetPlayersAll(), aff_max() )     //attendait un nom
  6. endfunction
  7. //===========================================================================
  8. function InitTrig_D__clencheur_sans_titre_002 takes nothing returns nothing
  9.     set gg_trg_D__clencheur_sans_titre_002 = CreateTrigger(  )
  10.     call TriggerRegisterTimerEventSingle( gg_trg_D__clencheur_sans_titre_002, 5 )
  11.     call TriggerAddAction( gg_trg_D__clencheur_sans_titre_002, function Trig_D__clencheur_sans_titre_002_Actions )
  12. endfunction


 
La déclaration de la fonction est ici :

Code :
  1. function Trig_D__clencheur_sans_titre_001_Actions takes nothing returns nothing
  2.  
  3. endfunction
  4. function aff_max takes nothing returns string
  5.     return "max"
  6. endfunction
  7. //===========================================================================
  8. function InitTrig_D__clencheur_sans_titre_001 takes nothing returns nothing
  9.     set gg_trg_D__clencheur_sans_titre_001 = CreateTrigger(  )
  10.     call TriggerAddAction( gg_trg_D__clencheur_sans_titre_001, function Trig_D__clencheur_sans_titre_001_Actions )
  11. endfunction


Message édité par Maximaxou le 10-12-2006 à 00:40:37
n°4587316
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 10-12-2006 à 00:43:35  profilanswer
 

ca fait trois fois que je te dit de mettre ta fonction aff_max dans le script personnalisé et pas dans un déclencheur  :pfff: .
 
Dans l'éditeur de déclencheur tu cliques sur l'icône en haut en gauche avec le nom de ta map, puis tu écris ta fonction aff_max en bas à droite dans le script personnalisé
 

n°4587318
Maximaxou
rejoignez les fidèles du JASS
Posté le 10-12-2006 à 00:56:20  profilanswer
 

ahhhhhhhhhhhhhhhhhhhhhhhhh mais fallait le dire plus tôt ! Voila ce que je cherchais :D.
 
dsl mais :

Citation :

Dans le script perso tu mets ta fonction :


C'était dit un peu vite fait et je ne connaissais même pas l'existence de ce script personnalisé. Donc il faut écrire toutes les fonctions globales dans le script personnalisé?
 
Au fait c'ezst chiant que ce ne soit qu'un simple éditeur de texte. Est-ce qu'il existe un éditeur de jass, utilisant des couleurs et faisant des décalages automatiquement ?


Message édité par Maximaxou le 10-12-2006 à 00:57:30
n°4587323
Maximaxou
rejoignez les fidèles du JASS
Posté le 10-12-2006 à 05:43:32  profilanswer
 

Je suis en train de créer les fonctions gérant les commandes entrées par l'utilisateur. La syntaxte des commandes est la suivante :
-<nom_de_commande> [<param1>] [<param2>] [<param3>] ..........
 
J'ai donc créé deux fonctions :

Code :
  1. //gives the name of the entered command
  2. function cmd_name takes string entered_string returns string
  3.   local integer length = StringLength(entered_string)
  4.   local string the_cmd_name = ""
  5.   local string car
  6.   local integer i = 0
  7.   if ( SubString(entered_string, 1, 1) == "-" and length > 1 ) then
  8.   if ( SubString(entered_string, 2, 2) != " " ) then
  9.     set car = SubString(entered_string, 2, 2)
  10.     set i = 2   
  11.     loop
  12.       exitwhen ( i>length or car == " " )
  13.       set the_cmd_name = the_cmd_name + car
  14.       set i = i + 1
  15.       set car = SubString(entered_string, i, i)
  16.     endloop
  17.     return the_cmd_name
  18.   endif
  19.   endif
  20.   return null
  21. endfunction
  22. //gives the parameter number 'param_number' of the entered command
  23. function cmd_param takes string entered_string, integer param_number returns string
  24.   local integer length = StringLength(entered_string)
  25.   local integer length_name = StringLength(cmd(entered_string))  //erreur il faut ici mettre cmd_name au lieu de cmd
  26.   local string the_cmd_param = ""
  27.   local string car
  28.   local integer i = 0
  29.   local integer current_param_number = 1
  30.   local integer last_space_found_position = length_name + 2
  31.  
  32.   set i = length_name + 3
  33.   loop
  34.   exitwhen ( current_param_number == param_number or i > length )
  35. set car = SubString( entered_string, i, i )
  36. exitwhen ( (car == " " ) and (i - 1 == last_space_found_position) )
  37. if car == " " then
  38.   current_param_number = current_param_number + 1
  39. endif
  40. set i = i + 1
  41.   endloop
  42.   if ( current_param_number == param_number ) then
  43.     loop
  44. exitwhen ( i > length )
  45.   set car = SubString( entered_string, i, i )
  46.       exitwhen ( car == " " )
  47.       set the_cmd_param = the_cmd_param + car
  48.   set i = i + 1
  49. endloop
  50. return the_cmd_param
  51.   endif
  52.   return null
  53. endfunction


La première est bien copilée mais la deuxième fait planter l'éditeur je suis obligé de recharger la carte.
 
J'ai créé le trigger suivant pour tester la fonction cmd_name :

Code :
  1. function Trig_D__clencheur_sans_titre_003_Actions takes nothing returns nothing
  2.     local string the_cmd_name = cmd_name(GetEventPlayerChatString())
  3.     if the_cmd_name != null then
  4.        call DisplayTextToForce( GetPlayersAll(), the_cmd_name )
  5.     endif
  6. endfunction
  7. //===========================================================================
  8. function InitTrig_D__clencheur_sans_titre_003 takes nothing returns nothing
  9.     set gg_trg_D__clencheur_sans_titre_003 = CreateTrigger(  )
  10.     call TriggerRegisterPlayerChatEvent( gg_trg_D__clencheur_sans_titre_003, Player(0), "-", true )
  11.     call TriggerAddAction( gg_trg_D__clencheur_sans_titre_003, function Trig_D__clencheur_sans_titre_003_Actions )
  12. endfunction


 
Je lance la carte et tape des commandes mais rien ne s'affiche.
[b]edit : j'ai créé un trigger de test plus précis qui affiche à l'écran la chaîne de caractères suivante :
"le nom de la commande est : \"" + cmd_name("-commande param1" ) + "\""
ça m'affiche ceci : le nom de la commande est : ""
ce qui veut dire que cmd_name(<chaîne> ) renvoit systématiquement la valeur null ou chaîne vide.
à propos comment peut-on faire la différence entre une chaîne vide et null ?


Message édité par Maximaxou le 10-12-2006 à 14:58:37
n°4587325
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 10-12-2006 à 11:58:44  profilanswer
 

Troll-Brain a écrit :

Code :
  1. call aff_max( "max" )

dans la fonction action du déclencheur souhaité
 
Et celle ci dans le script personnalisé
 

Code :
  1. function aff_max takes string s returns nothing
  2. call DisplayTextToForce( GetPlayersAll(), s )
  3. endfunction


 
ainsi tu peux changer le texte facilement


 
Je penses que c'était assez clair étant donné que tu n'es pas un Kevin de base.
Il est vrai que je n'ai pas mis toutes les étapes avec un numéro  :D  
Pour le site laisse tomber j'avais cru lire mezimages au lieu de mesimages dans l'url de ton image
 
sinion il existe des éditeurs de jass , mais perso j'en utilise pas
 

Citation :

local integer length_name = StringLength(cmd(entered_string))


Pourquoi le cmd ?
 
sinon pour une rangement plus ordonné tu peux aussi mettre les fonctions globales dans un déclencheur sans événement,condition et action, rien que des fonctions


Message édité par Troll-Brain le 10-12-2006 à 12:13:30
n°4587330
Maximaxou
rejoignez les fidèles du JASS
Posté le 10-12-2006 à 14:25:02  profilanswer
 

Citation :

Pour le site laisse tomber j'avais cru lire mezimages au lieu de mesimages dans l'url de ton image


mdr

Citation :

Pourquoi le cmd ?


C'est très simple au début ma fonction cmd_name portait le nom cmd, j'ai oublié de le modifier ici :D.
Je compile en modifiant ceci et ça fait toujours planter l'éditeur.

Citation :


sinon pour une rangement plus ordonné tu peux aussi mettre les fonctions globales dans un déclencheur sans événement,condition et action, rien que des fonctions


Je mets le code suivant dans un déclencheur (en effaçant tout ce qui était précédemment affiché) et ça me génère des erreurs alors que ça marche bien s'il est dans le script personnalisé. Où est-ce que je me trompe ?
-edit : j'ai trouvé le problème, il suffit de rajouter ceci dans le déclencheur :
function Init_trig_<nom_trig> takes nothing returns nothing
endfunction

Code :
  1. //gives the name of the command entered
  2. function cmd_name takes string entered_string returns string
  3.   local integer length = StringLength(entered_string)
  4.   local string the_cmd_name = ""
  5.   local string car
  6.   local integer i = 0
  7.   if ( SubString(entered_string, 1, 1) == "-" and length > 1 ) then
  8.   if ( SubString(entered_string, 2, 2) != " " ) then
  9.     set car = SubString(entered_string, 2, 2)
  10.     set i = 2   
  11.     loop
  12.       exitwhen ( i>length or car == " " )
  13.       set the_cmd_name = the_cmd_name + car
  14.       set i = i + 1
  15.       set car = SubString(entered_string, i, i)
  16.     endloop
  17.     return the_cmd_name
  18.   endif
  19.   endif
  20.   return null
  21. endfunction


 

Citation :

sinion il existe des éditeurs de jass


Est-ce que ce sont de simples éditeurs ou il permettent également de compiler ?


Message édité par Maximaxou le 10-12-2006 à 15:13:04
n°4587332
Maximaxou
rejoignez les fidèles du JASS
Posté le 10-12-2006 à 15:02:49  profilanswer
 

J'ai trouvé une petite simplification de la fonction cmd_name : à partir de la ligne 17 :

Code :
  1. endloop
  2.   endif
  3.   endif
  4.   return the_cmd_name
  5. endfunction


 
edit : en fait il vaut mieux faire ceci :

Code :
  1. endloop
  2.   endif
  3.   endif
  4.   if ( StringLength(the_cmd_name) >= 1) then
  5.     return the_cmd_name
  6.   else
  7.     return null
  8.   endif
  9. endfunction


Afin que pour savoir si une chaîne entrée est une commande, on tape ceci :
if cmd_name(<chaîne> ) != null then ......
au lieu de ceci
if cmd_name(<chaîne> ) != "" then ....


Message édité par Maximaxou le 10-12-2006 à 15:07:16
n°4587335
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 10-12-2006 à 18:53:45  profilanswer
 

je t'ai dit que je n'en utilisais pas, demandes plutôt à Ayane.
Peut être que We-U (World editor unlimited) t'intéresserait entre autres, il remplace le parseur jass par un plus performant et permet d'employer tes propres librairies de fonctions

n°4587337
Ayane
Posté le 10-12-2006 à 19:22:13  profilanswer
 

troll-brain a mélanger un peu de tout.
 
En EDI j'utilise JassCraft, il possède un colorisateur syntaxique et pas mal de fonctionnalités comme un Vérificateur de syntaxe.
 
Le Jass n'est pas compilé mais interprêté. Il est néanmoins précompilé deux fois:  
- Lors de la sauvegarde de la carte: WE génère une bonne partie du script et y ajoute les déclencheurs GUI et Jass le tout en un fichier war3map.j
- Lors de l'execution: A l'initialisation war3map.j est chargé en mémoire avec une précompilation (suppression des espaces, etc)
 
Il existe WEH (WorldEdit Helper) qui crochète WE afin de principalement remplacer le parseur Jass, Cela permet de faire des define ou des include ou d'autres étant donné qu'on peut lui ajouter des plugins.
WEU est une modification de WE afin d'ajouter des fonctions GUI et de modifier les fichiers de configurations afin de définir les limites (destructibles, hauteurs, ...) au maximum. Il possède néanmoins de gros défauts: allonge la liste des fonctions GUI, c'est plus long à trouver celle que l'on cherche, doit attendre la nouvelle version à chaque mise à jour de WC3, plante très souvent, si on veut utiliser certaines fonctions GUI il introduit la librairie complète dans la carte ainsi que quelques modèles et autres ce qui fait augmenter sensiblement la taille de la carte. Néanmoins il est avec WE Enhanced qui comprend un ensemble d'outils pour modifier une carte assez intéressant.

n°4587338
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 10-12-2006 à 19:44:32  profilanswer
 

Hmm j'aurais pourtant jurer que c'était We-U dont parlais profet  :D
Mais en même temps ca m'étonnait d'entendre parler en bien de We-U par un mappeur avertit  :heink:


Message édité par Troll-Brain le 10-12-2006 à 19:46:44
n°4587341
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 00:29:50  profilanswer
 

hmm j'essaierai bien JassCraft ainsi que WEU. Mais est-ce que WEU ne transforme pas la langue de l'éditeur en anglais ?
 
Sinon, comment fait-on pour ajouter des fonctions à léditeur de façon à ce que celles-ci soient présentes dans chaque map ?


Message édité par Maximaxou le 11-12-2006 à 00:44:34
n°4587345
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 01:07:20  profilanswer
 

Help svp, pourquoi cette fonction renvoit-elle toujours la valeur null ?

Code :
  1. //gives the name of the entered command  
  2. function cmd_name takes string entered_string returns string
  3.   local integer length = StringLength(entered_string)
  4.   local string the_cmd_name = ""
  5.   local string car
  6.   local integer i = 0
  7.   if ( SubString(entered_string, 1, 1) == "-" and length > 1 ) then
  8.     set car = SubString(entered_string, 2, 2)
  9.     set i = 2   
  10.     loop
  11.       exitwhen ( i>length or car == " " )
  12.       set the_cmd_name = the_cmd_name + car
  13.       set i = i + 1
  14.       set car = SubString(entered_string, i, i)
  15.     endloop
  16.   endif
  17.   if ( StringLength(the_cmd_name) >= 1) then
  18.     return the_cmd_name
  19.   else
  20.     return null
  21.   endif
  22. endfunction

n°4587346
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 01:34:55  profilanswer
 

J'ai un autre problème, une fonction que je crée n'est pas reconnue par la suite :
 
création de la fonction :

Code :
  1. function InitTrig_slide_functions takes nothing returns nothing
  2. endfunction
  3. //says if the specified unit is on slide terrain or not
  4. function is_ice takes real X, real Y returns boolean
  5.   returns GetTerrainType(X,Y) == 'Iice'
  6. endfunction


appel de la fonction :

Code :
  1. function Trig_slide_jass_Actions takes nothing returns nothing
  2.     local integer I = 0
  3.     local real speed array
  4.     local real X
  5.     local real Y
  6.     local real A
  7.     local unit array U
  8.     loop
  9.     exitwhen I > 10
  10.         set speed = udg_slide_speed[I]
  11.         set I = I + 1
  12.     endloop
  13.     loop
  14.     exitwhen I > 10
  15.         set U[I] = udg_hero[I]
  16.         set speed = udg_slide_speed[I]
  17.         set X = GetUnitX(U[I])
  18.         set Y = GetUnitY(U[I])
  19.         if ( is_ice(X,Y) ) then
  20.             set A = Deg2Rad(GetUnitFacing(U[I]))
  21.             call SetUnitPosition( U[I], X+speed[I]*Cos(A),Y+speed[I]*Sin(A) )
  22.         endif
  23.         set I = I + 1
  24.     endloop
  25. endfunction
  26. //===========================================================================
  27. function InitTrig_slide_jass takes nothing returns nothing
  28.     set gg_trg_slide_jass = CreateTrigger(  )
  29.     call TriggerRegisterTimerEventPeriodic( gg_trg_slide_jass, 0.01 )
  30.     call TriggerAddAction( gg_trg_slide_jass, function Trig_slide_jass_Actions )
  31. endfunction


Petite question stupide : est-ce que lorsque l'on sauvegarde et que l'on a une erreur, la carte est effectivement sauvegardée ?
(lorsqu'aucun déclencheur n'est désactivé suite à la "trouvaille" de l'erreur)

Message cité 1 fois
Message édité par Maximaxou le 11-12-2006 à 01:50:19
n°4587347
BlueBlood
Sang de monstre
Posté le 11-12-2006 à 04:29:13  profilanswer
 

pourrais-tu essayer de créé moins de topic svp... :) ou si tu as d'autre question, edit les dans les précédents topic en le précisant dans le titre :ack:


---------------
Si vous voulez sauver un bambou, mangez un panda ! Si vous voulez sauver un floodeur, mangez un modo !
[Trade List Of BlueBlood / SCL5]    
 
[:blueblood:6][:blueblood:8][:blueblood:7][:blueblood:9] by bonoboo :bisou: (¯`· ._.·» Twilight Princess own «·._. ·´¯) [:blueblood]
n°4587348
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 07:43:00  profilanswer
 

"en le précisant ds le titre" --> cad ?
Si mes topics te font chier chui dsl, mais il faut se mettre au jass c'est tellement plus puissant que le GUI...
 
J'ai trouvé un inconvénient au jass : si tu fais une erreur qui fait planter l'éditeur, quand tu essayes de sauvegarder tu te fais bien avoir, tu perds tout ce que tu as fait depuis la dernière sauvegarde... :/
 
PS : merci de ton aide précieuse BlueBlood :sarcastic:

Message cité 1 fois
Message édité par Maximaxou le 11-12-2006 à 07:46:57
n°4587349
Ayane
Posté le 11-12-2006 à 09:42:52  profilanswer
 

A mon avis c'est une erreur sur les substring, ceux du Jass sont originales.
 
Pour ton problème d'erreur tu as WEH comme je l'ais dis qui remplace le parseur par PJass, il a une meilleure gestion des erreurs et possèdes également quelques autres fonctions comme la création automatique de backup à chaque sauvegarde.
Il te permet aussi d'ajouter dans ton code par exemple

Code :
  1. //! include fonctions.j


Ce qui est bien pratique si tu veux utiliser des librairies Jass.

n°4587351
BlueBlood
Sang de monstre
Posté le 11-12-2006 à 13:38:14  profilanswer
 

Maximaxou a écrit :

"en le précisant ds le titre" --> cad ?
Si mes topics te font chier chui dsl, mais il faut se mettre au jass c'est tellement plus puissant que le GUI...
 
J'ai trouvé un inconvénient au jass : si tu fais une erreur qui fait planter l'éditeur, quand tu essayes de sauvegarder tu te fais bien avoir, tu perds tout ce que tu as fait depuis la dernière sauvegarde... :/
 
PS : merci de ton aide précieuse BlueBlood :sarcastic:


 
Je n'utilise pas de jass :ack:


---------------
Si vous voulez sauver un bambou, mangez un panda ! Si vous voulez sauver un floodeur, mangez un modo !
[Trade List Of BlueBlood / SCL5]    
 
[:blueblood:6][:blueblood:8][:blueblood:7][:blueblood:9] by bonoboo :bisou: (¯`· ._.·» Twilight Princess own «·._. ·´¯) [:blueblood]
n°4587352
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 11-12-2006 à 17:00:02  profilanswer
 

BlueBlood a écrit :

Je n'utilise pas de jass :ack:


Non sans blague il n'avait pas deviné  :whistle:  
 

n°4587353
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 11-12-2006 à 17:04:59  profilanswer
 

Maximaxou a écrit :

Help svp, pourquoi cette fonction renvoit-elle toujours la valeur null ?

Code :
  1. //gives the name of the entered command  
  2. function cmd_name takes string entered_string returns string
  3.   local integer length = StringLength(entered_string)
  4.   local string the_cmd_name = ""
  5.   local string car
  6.   local integer i = 0
  7.   if ( SubString(entered_string, 1, 1) == "-" and length > 1 ) then
  8.     set car = SubString(entered_string, 2, 2)
  9.     set i = 2   
  10.     loop
  11.       exitwhen ( i>length or car == " " )
  12.       set the_cmd_name = the_cmd_name + car
  13.       set i = i + 1
  14.       set car = SubString(entered_string, i, i)
  15.     endloop
  16.   endif
  17.   if ( StringLength(the_cmd_name) >= 1) then
  18.     return the_cmd_name
  19.   else
  20.     return null
  21.   endif
  22. endfunction



 
tes returns sont tous les 2 dans le if si la condition n'est pas vrai cela ne retournera rien du tout, mais je supposes que c'est fait exprés
Il faudrait que tu nous montre aussi le call cmd_name


Message édité par Troll-Brain le 11-12-2006 à 17:18:58
n°4587354
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 11-12-2006 à 17:08:08  profilanswer
 

Maximaxou a écrit :

J'ai un autre problème, une fonction que je crée n'est pas reconnue par la suite :
 
création de la fonction :

Code :
  1. function InitTrig_slide_functions takes nothing returns nothing
  2. endfunction
  3. //says if the specified unit is on slide terrain or not
  4. function is_ice takes real X, real Y returns boolean
  5.   returns GetTerrainType(X,Y) == 'Iice'
  6. endfunction



 
Tu es sensé retourner une boléenne mais tu fais return un integer


Message édité par Troll-Brain le 11-12-2006 à 17:08:45
n°4587356
BlueBlood
Sang de monstre
Posté le 11-12-2006 à 18:36:49  profilanswer
 

Troll-Brain a écrit :

Non sans blague il n'avait pas deviné  :whistle:


 
C'est vrai :ack:


---------------
Si vous voulez sauver un bambou, mangez un panda ! Si vous voulez sauver un floodeur, mangez un modo !
[Trade List Of BlueBlood / SCL5]    
 
[:blueblood:6][:blueblood:8][:blueblood:7][:blueblood:9] by bonoboo :bisou: (¯`· ._.·» Twilight Princess own «·._. ·´¯) [:blueblood]
n°4587357
Ayane
Posté le 11-12-2006 à 20:44:34  profilanswer
 

troll-brain est fatigué.
 
Ils sont très bien les return.
 
A la limite

Code :
  1. if ( StringLength(the_cmd_name) >= 1) then
  2.  return the_cmd_name
  3. endif
  4. return null


Devrait être un peu plus performant.
 
Pour le deuxième tu as mis returns au lieu de return.


Message édité par Ayane le 11-12-2006 à 20:45:04
n°4587358
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 11-12-2006 à 20:46:42  profilanswer
 

ah oui merde il y avait 2 if >.<.
Même la fonction is_ice est correcte  ? :heink:, hoho le jass est assez flexible alors finalement


Message édité par Troll-Brain le 11-12-2006 à 20:50:46
n°4587359
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 20:59:46  profilanswer
 

ui c comme en c : <valeur> == <valeur est un booléen
 
Ayane tu n'aurais une idée d'où vient le problème dans la fonction cmd_name ?
 
tu peux meme faire ceci si tu veux :
 
local boolean bool  
set bool = <valeur> == <valeur>
 
Ca peut paraître bizarre comme écriture mais c très puissant
 
et un language n'est pas je pense "flexible"... tu te gourres d'un caractères et paf craquage xD


Message édité par Maximaxou le 11-12-2006 à 21:06:21
n°4587360
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 21:01:56  profilanswer
 

Citation :

BlueBlood a écrit :
 
 
Je n'utilise pas de jass :ack:
 
 
 
 
Non sans blague il n'avait pas deviné  :whistle:  
 


Simplement explosé de rire

n°4587361
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 21:04:00  profilanswer
 

Citation :

A la limite  
 
 
Code :
 
if ( StringLength(the_cmd_name) >= 1) then
        return the_cmd_name
    endif
    return null
 
 
 
Devrait être un peu plus performant.  


Non pas plus performant mais plus sécurisant car on est sûr de retourner quelque chose quoi qu'il arrive. A moins qu'avec le else c plus long ?

n°4587362
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 11-12-2006 à 21:12:15  profilanswer
 

tu fais bien un déclo avec pour évent un joueur tape un message et en action call cmd_name(et là on entered string)

n°4587364
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 21:13:53  profilanswer
 

non pas call cmd_name  
aten je tenvoi les trigger de test


Message édité par Maximaxou le 11-12-2006 à 21:14:32
n°4587366
Maximaxou
rejoignez les fidèles du JASS
Posté le 11-12-2006 à 21:49:07  profilanswer
 

voila :  

Code :
  1. function Trig_D__clencheur_sans_titre_001_Actions takes nothing returns nothing
  2.     call DisplayTextToForce( GetPlayersAll(), ( "la commande est : \"" +  cmd_name("-commande param1"  ) + "\"" ))
  3. endfunction
  4. //===========================================================================
  5. function InitTrig_D__clencheur_sans_titre_001 takes nothing returns nothing
  6.     set gg_trg_D__clencheur_sans_titre_001 = CreateTrigger(  )
  7.     call TriggerRegisterTimerEventSingle( gg_trg_D__clencheur_sans_titre_001, 5 )
  8.     call TriggerAddAction( gg_trg_D__clencheur_sans_titre_001, function Trig_D__clencheur_sans_titre_001_Actions )
  9. endfunction

n°4587368
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 11-12-2006 à 22:01:56  profilanswer
 

Dans ce cas ta fonction cmd_name donne la valeur null à entered_string, étant donné que tu ne lui passe pas de variables string (je suis peut être pas trés clair là )  :whistle:


Message édité par Troll-Brain le 11-12-2006 à 22:02:49
 Page :  1  2
Page Précédente 

Aller à :
Ajouter une réponse