Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Star Trek: Glorious Wolf - (...) / Sorties: Dread Mac Farlane - episode 3 / News: Plein d'images cools créées par (...) / Sorties: Star Trek: Glorious Wolf - (...) / Jeux: Final Fantasy 2.0 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

258 connectés actuellement

29186144 visiteurs
depuis l'ouverture

1195 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker VX

Le Temple de Valor

Lumen

ConsoleFun

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RPG Maker VXAce] Attaque à Statut Aléatoire


DocteurC - posté le 16/08/2019 à 11:02:56 (19 messages postés)

❤ 0

C comme Créatif

Domaine concerné: évènements communs, scripts ou autre...
Logiciel utilisé: RPG Maker VXAce
Bonsoir camarades ^^

J'aimerais créer un type d'attaque qui aurait pour effet d'infliger un statut aléatoire à la cible.
À la base, je comptais faire un Évènement commun dans lequel je donnerais à une variable une valeur aléatoire correspondants aux différents statuts accessibles par l'attaque et la transmettre à la cible de mon attaque. :feu

Là, deux problèmes se présentent :
-Dans les onglet "Modifier le Statut" et "Modifier le statut d'un ennemi", on ne peut pas choisir un statut à appliquer en fonction d'une variable...
-Et on ne peut pas non plus définir la cible en fonction de l'attaque utilisée. :help

Je ne sais pas trop si ce que j'explique est clair mais je vais partir du principe que oui. :fou3

Mes questions sont donc : Est-ce possible de faire une attaque qui inflige un statut aléatoire à sa cible ? :pense
Ainsi que : Si oui, comment faire ? :doute5

Merci d'avance à ceux qui prendront le temps de lire et pourquoi pas répondre à ce topic. :banane

Cordialement.



Le plus grand des Chasseurs de monstres


Llednar - posté le 18/08/2019 à 17:57:22 (9 messages postés)

❤ 0

Oui c'est possible mais pour le coup faut passer par un petit script comprenant la formule nécessaire (car trop longue pour entrer dans la case).

Je vais te donner un début (exemple) de ce qu'il faudrait faire pour que ça fonctionne comme tu le veux :


image

Faut adapter le nombre de conditions selon le nombre d'états possible & modifier la variable qui contient les dégâts selon comment tu gères ça. (et faut placer le script au-dessus de Main & j'ai zapé un end sur le screen à la toute fin).

Puis dans ta compétence dans la base de donnée, dans la formule de dommages, faudra mettre attaque_effets(a, b)

En espérant d'avoir aidé, bon courage pour la suite :p


Fflo - posté le 19/08/2019 à 09:57:00 (328 messages postés)

❤ 0

Pour 2023, j'essaye des choses... que je rate. Mais pas toujours.

Ce code ne marchera pas.

Les conditions sont mal écrites. Il faut 2 signes = et pas un seul. Je pense même que ça provoquera une SyntaxError puisqu'on ne peut pas faire assigner une variable juste après un "if".

Petit scripteur amateur. J'ai un pack de scripts VX Ace qui ne vous permettra pas de faire le jeu du siècle, mais les petites fonctionnalités en plus à droite à gauche pourraient quand même vous démarquer.


AzRa - posté le 19/08/2019 à 11:31:22 (11193 messages postés)

❤ 0

J'ai pas VXace et j'ai jamais bossé avec le RGSS donc je sais pas si l'algo proposé par Llednar fonctionne ou si c'est même une bonne base pour ce type de système mais y a moyen de réécrire ce code de façon plus simple, sans conditionals (ce qui évite par la même occasion le problème des == manquants).
Pour le coup c'est le même code, mais juste plus court et plus efficace :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
class Game:Battler < Game_BattlerBase
        def attaque_effets(a,b)
                degats = a.atk - b.def
                b.add_state(rand(6)+2)
                return degats
        end
end


Par contre, faut faire rand(6) pour une valeur entre 0 et 5. rand(5) ça va de 0 à 4.

Et aussi je sais pas trop ce que le calcul et le return des dégats viennent faire dans l'histoire. En plus ça occupe deux lignes sur les 3 d'une fonction qui devrait à-priori n'en contenir qu'une :wouah.

Le cyclisme c'est quand tu fais du vélo.


DocteurC - posté le 20/08/2019 à 10:57:37 (19 messages postés)

❤ 0

C comme Créatif

Merci beaucoup pour vos réponses. :D Malheureusement, tout ça me fait faire face à un autre problème : je serai tout bonnement incapable d'éditer ce script comme il faut...:sriden Pourquoi ? Perce que je suis mauvais probablement... XD

Déjà, il y a plein d'expression que vous employer que je ne comprend pas, autant dire que je vais pas aller bien loin.:doute5

Du coup, j'aimerais savoir si c'est possible d'avoir un "mode d'emplois" d'utilisation de ce script s'il vous plaît. :help

Le plus grand des Chasseurs de monstres


AzRa - posté le 21/08/2019 à 06:50:24 (11193 messages postés)

❤ 0

J'en ai aucune idée.
C'est à Llednar qu'il faut demander : moi j'ai juste nettoyé le machin pour le rendre plus clair et efficace mais je ne sais même pas s'il marchait ou pas à la base : je n'ai jamais appris spécifiquement l'utilisation du ruby au sein du RGSS. (S'il marchait à la base il marche mieux après nettoyage, mais s'il ne marchait pas il ne marche toujours pas mieux maintenant, c'est tout ce que je peux garantir.)

Je ne saurais que trop te conseiller d'apprendre le RGSS pour éviter d'avoir à dépendre d'autres personnes à ce sujet à l'avenir : https://www.google.com/search?q=rgss+tutorial&oq=rgss+tuto&aqs=chrome.1.69i57j0l3.5471j0j7&sourceid=chrome&ie=UTF-8
Aussi je ne sais pas où se trouvent les exigences de prérequis au sujet du ruby de la plupart de ces tutos mais ça pourrait être une bonne idée de l'apprendre d'abord (si ça se trouve les tutos de RGSS font très bien le job sans avoir besoin de bases en ruby mais faut voir).

Perso à l'époque j'ai appris avec ce tuto en français : https://pdfbib.com/pdf/0303-apprendre-langage-programmation-ruby.pdf
Il est bien construit et propose des exercices sympas. A la fin de ce tuto tu auras sans problèmes des bases solides pour t'attaquer tranquille au RGSS et même à d'autres languages que le ruby (il enseigne bien la logique de la progra orientée objet). Et tu verras, c'est fun.

Le cyclisme c'est quand tu fais du vélo.


Fflo - posté le 21/08/2019 à 08:25:55 (328 messages postés)

❤ 0

Pour 2023, j'essaye des choses... que je rate. Mais pas toujours.

Pour ceux qui se demandent: aucun des 2 scripts ne fonctionne. Le problème est le même: la compétence inflige zéro dégât et aucun statut n'est ajouté.

Mon hypothèse: j'ai rajouté un msgbox_p (équivalent en quelque sorte d'un print_r en PHP et d'un console.log en javascript, sur RM uniquement) dans la méthode attaque_effets comme ceci:

Portion de code : Tout sélectionner

1
2
3
4
5
6
def attaque_effets(a,b)
    degats = a.atk - b.def
    msgbox_p(degats)
    b.add_state(rand(6)+2)
    return degats
  end



Il s'avère qu'il n'était jamais affiché à l'écran, donc la méthode n'est jamais appelée. Je pense qu'il va falloir passer par un script tiers.

Petit scripteur amateur. J'ai un pack de scripts VX Ace qui ne vous permettra pas de faire le jeu du siècle, mais les petites fonctionnalités en plus à droite à gauche pourraient quand même vous démarquer.


AzRa - posté le 21/08/2019 à 08:55:10 (11193 messages postés)

❤ 0

Avec un nom pareil : "attaque_effets", ça m'aurait étonné que cette méthode ait été native. C'est du français. Du coup forcément faut l'appeler de quelque part, depuis un autre script, natif lui. C'est ça la question à laquelle je ne sais pas répondre, n'ayant jamais touché à VXAce je ne connais pas ses scripts natifs.

(Par contre "2 scripts", c'est discutable : comme je l'ai dit, celui de mon post c'est pas mon script, c'est celui de Llednar, que j'ai juste nettoyé. C'est un seul et même script, en vrai. Tim Towdi comme on dit.)

Le cyclisme c'est quand tu fais du vélo.


DocteurC - posté le 21/08/2019 à 12:02:59 (19 messages postés)

❤ 0

C comme Créatif

Bon...je vais voir ce que je peut faire avec tout ça. Merci beaucoup pour votre aide à tous. :salut

Le plus grand des Chasseurs de monstres


Llednar - posté le 25/08/2019 à 00:02:06 (9 messages postés)

❤ 0

Effectivement il doit manquer un "=" sur la vérification d'Alea.
Par contre vérifier la variable sur le if n'est pas un problème x) Tu vérifies que la variable est bien égale à une valeur précise & agis en conséquence.

Si t'es pas pressé, j'aimerais bien des infos : les ID des altérations concernés & ta formule de dmg pour la compétence. Je te fais ce qu'il faut derrière sans soucis dès que j'ai le temps (donc Lundi aprem si j'ai les infos d'ici là xD)


AzRa - posté le 25/08/2019 à 05:25:29 (11193 messages postés)

❤ 0

Citation:

Par contre vérifier la variable sur le if n'est pas un problème x) Tu vérifies que la variable est bien égale à une valeur précise & agis en conséquence.


Syntaxiquement parlant non, ce n'est pas un problème. Enfin dans ton code spécifiquement il y a trop de "end", donc non, syntaxiquement parlant ça allait merder là, mais je veux dire : ton algo était bon. C'est pas un problème de logique. Tu peux utiliser ton algo tel quel.

Je te propose juste une maniere d'améliorer ta méthode parce que niveau efficacité et lisibilité il y a moyen de faire mieux. C'est plutôt meta, si tu veux : l'algo fonctionne de la même manière quoi que tu fasses, mais les elsif inceptions sont très dangereuses parce que tu peux y avoir facilement laissé une erreur dans un cas spécifique (vu que tu les définis tous un par un a la mano) qui sera difficile à retrouver au débuggage (et puis pour quelqu'un qui voudrait relire le code pour le modifier à postériori, par exemple, c'est aussi beaucoup plus difficile/répétitif dans le cas d'une elsif inception). Bref, normalement le travail répétitif doit être laissé à la machine, pas au programmeur. La machine répète parfaitement les choses à l'infini sans jamais faire d'erreur ni se lasser, par contre les êtres humains, sont eux, nettement moins bons à ce niveau. En terminale, mon prof d'info nous avait pûrement et simplement interdit les copier-collers, pour qu'on soit obligés d'appliquer ce genre de bonne pratique.
Check le nombre d'endroits où tu peux avoir laissé glisser une erreur par mégarde dans :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
alea = rand(6)
if alea == 0
        b.add_state(2)
elsif alea == 1
        b.add_state(3)
elsif alea == 2
        b.add_state(4)
elsif alea == 3
        b.add_state(5)
elsif alea == 4
        b.add_state(6)
else
        b.add_state(7)
end


VS

Portion de code : Tout sélectionner

1
b.add_state(rand(6)+2)



Sans compter que quand t'as l'habitude ça prend moins de temps à coder.
Les elsif inceptions ça passe en event parce qu'on n'a pas d'autre choix, mais le ruby est suffisamment puissant que pour éviter ce genre de choses, alors pourquoi s'en priver ?
Si tous les effets ne doivent pas être appliqués, essaye de voir ce que tu peux faire avec une boucle ou une combinaison boucle + tableau. Dans tous les cas y a toujours moyen de mieux faire qu'une elsif inception.

Le cyclisme c'est quand tu fais du vélo.


Fflo - posté le 25/08/2019 à 08:19:42 (328 messages postés)

❤ 0

Pour 2023, j'essaye des choses... que je rate. Mais pas toujours.

Et un petit complément.
Si les numéros de tes statuts ne se suivent pas, tu peux faire ça:

Portion de code : Tout sélectionner

1
2
3
4
 
s = [2, 3, 4, 7, 9, 17, 21] # Ajoute ou enlève des nombres selon tes besoins
b.add_state(s.sample) # sample choisit une valeur aléatoire d'un tableau
 



Petit scripteur amateur. J'ai un pack de scripts VX Ace qui ne vous permettra pas de faire le jeu du siècle, mais les petites fonctionnalités en plus à droite à gauche pourraient quand même vous démarquer.


DocteurC - posté le 26/08/2019 à 10:20:56 (19 messages postés)

❤ 0

C comme Créatif

Finalement, j'ai donné à Llednar par MP les infos qu'il avait demandé. Je verrais ce que je ferai une fois tout ça terminé.

Le plus grand des Chasseurs de monstres

Index du forum > Entraide > [RESOLU] [RPG Maker VXAce] Attaque à Statut Aléatoire

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers