Vous n'êtes pas identifié(e). Pour pouvoir écrire ou répondre à un message, vous devez vous connecter ou vous créer un compte sur JAWA.

#1 07-01-2020 17:13:14

qc2m
Membre
Inscription : 09-03-2019

Ineractions et conditions ✓

Bonsoir,

Sur le clic d'un même objet j'ai plusieurs choses à vérifier et à faire si nécessaire.
Par exemple:
quand je clic sur un objet:j'ai les interactions suivantes:

interaction 1
    Condition: VARIABLE1=1
    Effet: message:blabla1
interaction 2
    Condition: VARIABLE2=1
    Effet: message:blabla2

Si j'ai bien compris, si VARIABLE1=1, la deuxième interaction ne sera pas prise en compte même si VARIABLE2=1.


Je vois trois solutions par forcément très lisible:
1. Je crée un script par interaction et sur le clic de l'objet, je mets

actionnerobjet:idscript1
actionnerobjet:idscript2

Solution de facilité mais on peut vite être débordé par le nombre de script

2.
J'ajoute des interactions
interaction 1
    condition: VARIABLE1=1  et  VARIABLE2=1
    effet: message:blabla1  et  message:blabla2
interaction 2
    Condition: VARIABLE1=1
    Effet: message:blabla1
interaction 3
    Condition: VARIABLE2=1
    Effet: message:blabla2

Je crois que c'est encore pire que la première solution.


3. je crée une interaction sans condition et je traite les conditions en jawascript:

condition:VARAIBLE1=1
message:blabla1
condition:fin
condition:VARIABLE2=1
message:blabla2
condition:fin

Solution qui me paraît la plus efficace mais qui nécessite un peu de logique de développement (ça, ça devrait aller!) mais aussi de connaître l'intégralité des fonctions jawascript.

Y a-t-il une autre solution plus "simple" et/ou "conviviale"?

Merci.

Maxime

Hors ligne

#2 08-01-2020 09:26:43

jawa
Admin

Re : Ineractions et conditions ✓

Hello

Très bonne questions, et tu as tous les éléments de réponse !

C'est bien la solution 3 qui est la plus adaptée (blocs de conditions intégrées aux effets) et en effet pour le moment ça oblige à écrire du jawascript, même si je prévoies d'ajouter les conditions embarquées au wizard prochainement (tu peux quand même utiliser le wizard en jawascript pour rédiger les autres effets classques sans apprendre la syntaxe : touche TAB pendant l'édition)

Eventuellement tu peux mixer avec la solution 1 (appel à des scripts portant les conditions) dans les 2 cas suivant :

-> pour des raisons de factorisation de code : si tu penses que les effets de ton bloc de condition pourraient être appelés indépendamment de l'interaction principale pour d'autre raisons, il est bcp plus propre de les extraire dans un script réutilisable

-> lisibilité : éventuellement si tu as beaucoup d'effets dans tes blocs de condition (+ de 10 disons), cela  évitera d'avoir des inetractions de 4 km de haut.


Si tu as beaucoup de scripts, tu peux les affecter à des groupes pour y voir plus clair.

La solution 2 est à éviter à tout prix !

Le principe de base de JAWA est que pour une action donnée d'un joueur dans un contexte donné, une seule interaction sera déclenchée (même si celle ci peut ensuite en déclencher d'autres par ses effets et engendrer tout une chaîne d'interactions). Si 2 (ou N) interactions sur le même déclencheur ont des conditions qui peuvent potentiellement être validées au même moment, JAWA va signaler un "conflit d'interaction" : si dans un tel cas tu sais d'emblée qu'il y en a une qui doit prendre la pas, tu peux abriter ça en mettant une priorité sur tes interactions en conflit. Quand tu teste le jeu et qu'une action ne donne pas le résultat attendu, c'est probablement lié à un conflit d'interaction, tu peux utiliser l'analyseur de gamescript pour les repérer.
Si par contre tu veux que les 2 (ou) N soient exécutées, il faut partir sur le système ci dessus.

Z

PS : l'effet "actionnerobjet" peut s'écrire "actionner" tout court, j'avais raccourci les noms des effets pour simplifier dans la v30.

#3 29-03-2020 13:14:14

davidM
Membre
Inscription : 29-03-2020

Re : Ineractions et conditions ✓

Bonjour,
sur le même thème, je n'arrive pas à enchainer deux interactions, même avec des conditions (je suis débutant). En gros, en première interaction, je grossis un objet d'une image pour qu'il soit plus visible lorsque le joueur clique dessus. Et ensuite, j'aimerais que une fois grossit, il y ait une question pour savoir si le joueur veut conserver l'objet ou non, et si oui, l'objet est ramasser.
J'arrive à faire que l'image grossisse, puis la question est posée, la valeur 1 est assignée à ma variable Reponse, mais lorsque dans la seconde interaction, j'ai la condition (Reponse=1) et l'effet (donner l'objet), rien ne se passe.
Pourrais-je avoir un peu d'aide?? :(

Hors ligne

#4 31-03-2020 07:57:59

qc2m
Membre
Inscription : 09-03-2019

Re : Ineractions et conditions ✓

Bonjour davidM,

L'enchainement de deux interactions n'est pas possible.
Seule la première interaction répondant aux conditions est jouée. S'il n'y pas de condition, c'est la première interaction qui est jouée. Les autres interactions sont ignorées.
Dans le cas décris, voici ce que je ferais. Ce n'est peut-être pas la meilleure solution et certainement pas l'unique.
Aller dans [b]Interactions[/b]
Dans la partie [b]Effets[/b], cliquer sur [b]JAWAscript (expert)[/b]
A la suite des lignes existantes, insérer:

condition:MA_VARIABLE=1
obtenir:id_objet
condition:fin

Il faut bien entendu remplacer MA_VARIABLE par le nom qui va bien et id_objet par l'identifiant de l'objet récupéré.

J'espère que ça pourra aider.

Maxime

Hors ligne

#5 01-04-2020 07:34:45

jawa
Admin

Re : Ineractions et conditions ✓

Hello,
La réponse de Maxime est la meilleure (utiliser des conditions intégrées aux effets en jawascript).

Par contre il est quand même possible d'enchaîner des interactions avec l'éditeur "simple" en créant des scripts et en les appelant avec l'effet actionner un script ou un objet. En terme logique ça donnerait :

inter principale :
poser la question  (et alimenter la variable réponse)
actionner le script : donner l'objet ou pas ?
(+ effets suivants  communs qq soit la réponse )


script donner l'objet ou pas :
inter 2
SI réponse=OK
donner objet 

inter 3 
SI réponse = KO
message : mauvaise réponse !

donc ça oblige à décomposer la logique du jeu en N interactions / scripts, et ça prend plus te temps par rapport à la solution de Maxime mais ça évite de faire du script. on peut enchaîner / enchevêtrer autant d'actionner qu'on veut mais ça peut finir par faire des noeuds au cerveau.

et une petite précision :
[quote]
Seule la première interaction répondant aux conditions est jouée. S'il n'y pas de condition, c'est la première interaction qui est jouée. Les autres interactions sont ignorées.
[/quote]
c'est vrai si on ne met pas de priorité aux interactions, mais si on veut privilégier une interaction à une autre au cas ou les conditions sont valides (ou si elles n'ont pas de condition) il suffit de leur mettre des priorités, on est plus astreint à l'ordre de création (qui reste le critère de choix si les interactions ont la même prio ). voir le manuel : interactions > conflits d'interactions.

EN tout cas un grand merci Maxime de répondre à la communauté ! je reçois bcp de messages en ce moment (y compris par mail) et j'ai du mal à répondre rapidement !

Z

Pied de page des forums