[RPG-MAKER.FR] Oniromancie: tout l'univers de RPG Maker en français - Les forums - [RPG Maker VXAce] Attaque à Statut Aléatoire


Découvrir
RPG Maker

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

Apprendre
RPG Maker

Guides
Tutoriels
Astuces
Making-of


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Nylu
Par NanakyTim

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Inexistence / Tutos: Faire de la neige facilement en (...) / Jeux: ARCH ULTRA / Sorties: ARCH ULTRA / News: Alex d'Or 2019 : Les Vainqueurs ! /

Chat  

Bienvenue
visiteur !





Désactiver
la neige


publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

90 connectés actuellement

10321600 visiteurs
depuis l'ouverture

9 visiteurs
aujourd'hui



Barre de séparation

Partenaires






TOP
GAMEMAKING


Les 5 plus
visités

Akademiya RPG Maker

Alex d'Or

BloGecko

ConsoleFun

Eclipso

Au hasard

Le Studio du Chat Vert

ConsoleFun

Zarok

Les deux derniers

Zarok

Akademiya RPG Maker

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




forums

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


DocteurC - posté le 16/08/2019 à 11:02:56 (17 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 (262 messages postés)

❤ 0

Quand je termine dernier des SDLS

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".

On ne peut pas plaire à tout le monde. Si tu arrives à aboutir à quelque chose qui te plait personnellement, tu peux être fier(e) de toi. - Et c'est un pro de l'autoflagellation et de la mésestime de soi qui sort ça.


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

❤ 0

Hold my beer

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.

Jouez au Bizon. Nao.


DocteurC - posté le 20/08/2019 à 10:57:37 (17 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 (9948 messages postés)

❤ 0

Hold my beer

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.

Jouez au Bizon. Nao.


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

❤ 0

Quand je termine dernier des SDLS

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.

On ne peut pas plaire à tout le monde. Si tu arrives à aboutir à quelque chose qui te plait personnellement, tu peux être fier(e) de toi. - Et c'est un pro de l'autoflagellation et de la mésestime de soi qui sort ça.


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

❤ 0

Hold my beer

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.)

Jouez au Bizon. Nao.


DocteurC - posté le 21/08/2019 à 12:02:59 (17 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 (9948 messages postés)

❤ 0

Hold my beer

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.

Jouez au Bizon. Nao.


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

❤ 0

Quand je termine dernier des SDLS

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
 

On ne peut pas plaire à tout le monde. Si tu arrives à aboutir à quelque chose qui te plait personnellement, tu peux être fier(e) de toi. - Et c'est un pro de l'autoflagellation et de la mésestime de soi qui sort ça.


DocteurC - posté le 26/08/2019 à 10:20:56 (17 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 > [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 | News | Forum | Flash-news | Sorties | Chat | Commentaires | Galerie | Blogs | Articles perso | Screen de la semaine | Palmarès | Livre d'or | Recherche | Interviews | OST | L'Annuaire | Divers
Apprendre: Le Wiki | Tutoriels | Guides | Gaming-Live | Tests | Making-of
Télécharger: Programmes | Scripts | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | Collection Oniro | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Hébergés: Aëdemphia | Fighting Robots Quest | Geex | Inexistence | La Légende d'Ibabou | Nylu | Sarcia | Super Mario RPG - Lost Souls
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