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

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

535 connectés actuellement

29383935 visiteurs
depuis l'ouverture

5 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

New RPG Maker

ConsoleFun

Offgame

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [rpg maker vx ace] Modification carac spéciales dynamiquement


Evolite - posté le 08/06/2015 à 13:35:32 (6 messages postés)

❤ 0

Domaine concerné: script
Logiciel utilisé: rpg maker vx ace
Bonjour, j'aimerais savoir comment mettre a jour un statut ( comme le poison) a jour via un script, en modifiant son effet via une variable. par ex: le statut a pour effet un taux de récupération de PV * 90%, mais la variable a changé, et je veut mettre a jour l'effet du statut, en mettant taux de récupération de PV * 80% par ex. merci d'avance.


verehn - posté le 08/06/2015 à 15:58:53 (9056 messages postés) - honor -

❤ 0

Vhehrhehn

Personnellement je ne suis pas scripteur mais je pense à autre chose: n'est-il pas possible de créer un statut quasi identique avec une variation d'effet plutôt que d'en modifier un déjà calibré ?

Eldrao ~ PakuPaku ~ Winged Light ~ Ruin ~ Ma galerie ~ LTDAD ~ Don de graphismes plateforme 2D


Evolite - posté le 09/06/2015 à 10:32:48 (6 messages postés)

❤ 0

captain obvious oui c'est possible :) mais le truc c'est que si je veut respecter ce que je voulais faire ça me fait 10 status a gérer, ce qui va me prendre genre 10 boucles pour rien, ce qui a mon avis serait plus simple en script. Après si c'est trop chiant ou impossible je ferais avec moins de status évidemment, mais voila ça fait moins dynamique quoi. :clindoeil2


arttroy - posté le 09/06/2015 à 12:28:50 (2394 messages postés)

❤ 0

Just working

Plus simple en script pour le coup c'est pas certain...

Et pourquoi tu utilise des boucles pour ça ? J'imagine que cette variation d'effet sera active durant tout le jeu donc autant faire ça en évènement commun non ?

Après ça dépend de comment va fonctionner ta variable, ce sera un compteur et après x frames le statut change où c'est une action spécifique qui va entrainer ce changement (du genre si le perso mange tel truc ça diminue le statut de x%) ?

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


Evolite - posté le 10/06/2015 à 01:17:15 (6 messages postés)

❤ 0

Oui j'utilise des conditions pas des boucles lol.

Après j'ai déjà utilisé un événement commun, pour incrémenter la variable. pour le reste l'effet est sensé changer dynamiquement pendant un combat de boss. je vous explique le délire, j'aime bien me compliquer la vie il est vrai: en fait c'est un combat dans un usine désaffectée, mais en sous sol. le truc c'est que vous combattez un boss, seulement y'a une pression supplémentaire: un gas toxique s'échappe et augmente la toxicité dans l'air a chaque tour. et le délire était non pas de réduire les pv en % de la toxicité , ce qui est trop abusé pour le joueur, le boss étant déjà bien costaud, je pensait plûtot réduire la regen de pv octroyée par les soins. sachant que vous devez alors choisir entre attaquer le boss, ou les éléments du décors pour créer des brèches et diminuer la toxicité dans l'air. le boss, quand a lui peut envoyer des attaques qui peuvent augmenter la toxicité subitement. évidemment ya aussi des messages des héros qui suffoquent en fonction de la concentration de gas, mais aussi un changement au niveau du ton de l'ecran. X)

Après j'ai plus ou moins réussi a gérer tout ça, j'ai juste fait 3 statuts différents, par tranche de environ 30% mais j'aurais aimé une MAJ pour chaque tranche de 10% dans l'air. (ce qui ferait 10 status, sachant qu'il faut limite checker les 9 autres dans chaque condition, vu que les éléments de décor que l'on détruit ne diminue pas forcément la toxicité de la même façon.

Après j'ai jeté un oeil aux script du jeu, même si j'y connait quedal j'ai vu ça :

dans GameBattlerBase:

* Access Method by Parameter Abbreviations
#--------------------------------------------------------------------------
def mhp; param(0); end # MHP Maximum Hit Points
def mmp; param(1); end # MMP Maximum Magic Points
def atk; param(2); end # ATK ATtacK power
def def; param(3); end # DEF DEFense power
def mat; param(4); end # MAT Magic ATtack power
def mdf; param(5); end # MDF Magic DeFense power
def agi; param(6); end # AGI AGIlity
def luk; param(7); end # LUK LUcK
def hit; xparam(0); end # HIT HIT rate
def eva; xparam(1); end # EVA EVAsion rate
def cri; xparam(2); end # CRI CRItical rate
def cev; xparam(3); end # CEV Critical EVasion rate
def mev; xparam(4); end # MEV Magic EVasion rate
def mrf; xparam(5); end # MRF Magic ReFlection rate
def cnt; xparam(6); end # CNT CouNTer attack rate
def hrg; xparam(7); end # HRG Hp ReGeneration rate
def mrg; xparam(8); end # MRG Mp ReGeneration rate
def trg; xparam(9); end # TRG Tp ReGeneration rate
def tgr; sparam(0); end # TGR TarGet Rate
def grd; sparam(1); end # GRD GuaRD effect rate
def rec; sparam(2); end # REC RECovery effect rate
def pha; sparam(3); end # PHA PHArmacology
def mcr; sparam(4); end # MCR Mp Cost Rate
def tcr; sparam(5); end # TCR Tp Charge Rate
def pdr; sparam(6); end # PDR Physical Damage Rate
def mdr; sparam(7); end # MDR Magical Damage Rate
def fdr; sparam(8); end # FDR Floor Damage Rate
def exr; sparam(9); end # EXR EXperience Rate

il suffit juste de modifier ce fichu sparam(2) en fonction de la variable. mais j’ignore totalement comment on bricole ça en code, apparemment il faut appeler genre la classe GameBattler, la faire hériter de GameBattlerBase, pour ensuite l'associer a game.actor() mais c'est la merde je connais pas la formule magique pour faire ça, c'est quoi la putain de syntaxe qui va bien?


7163D - posté le 10/06/2015 à 07:28:40 (946 messages postés)

❤ 0

Votez Minimaliste

A ta place, voici ce que je ferais:

Nouveau script juste au dessus de main:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
 
$toxicity = 0
class GameBattlerBase
   def res
      sparam(2) * (1 - $toxicity)
   end
end



Ensuite, à chaque modification de la toxicité de X, tu fait un appel de script:

Portion de code : Tout sélectionner

1
2
3
 
$toxicity += x
 



Minimaliste, le "." comme signe de ralliement.


arttroy - posté le 10/06/2015 à 09:28:53 (2394 messages postés)

❤ 0

Just working

Ca ne serait pas mieux avec le signe @ plutôt que $ pour la variable toxicity ?

A savoir si tu veux utiliser la variable que tu as créé pour incrémenter toxicity tu peux en remplaçant x par $game_variables[ta_variable] comme ça :

@toxicity += $game_variables[ta variable]

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


7163D - posté le 10/06/2015 à 10:03:11 (946 messages postés)

❤ 0

Votez Minimaliste

Surtout pas de @toxicity!!!!

Arobase est l'équivalent du 'self.' en python ou du 'this.' en javascript.
En gros il fait référence à la classe où il est utilisé.

Par exemple, si j'ai une classe voiture, je pourrait marquer à l’intérieur:

Portion de code : Tout sélectionner

1
@vitesse = 5



Par contre, ce même code à l’extérieure de la classe n'aurait aucun sens. Comme si en français je disait 'la vitesse de' sans terminer ma phrase...

J'utilise ici le $ car cela signifie que $toxicity est une variable globale que je peut utiliser de n'importe où.

Plutôt que d'utiliser

Portion de code : Tout sélectionner

1
@toxicity += $game_variables[ta variable]



il serait en fait encore mieux d'affecter une variable du jeu accessible depuis l'éditeur d’événement, au pif la variable 77, et de remplacer mon code par:

Portion de code : Tout sélectionner

1
2
3
4
5
class GameBattlerBase
   def res
      sparam(2) * (1 - $game_variables[77])
   end
end



Cela éviterais les appels de script!
De cette manière, pour changer la toxicité, tu change la valeur de la variable 77 depuis l'éditeur d'événement.

Minimaliste, le "." comme signe de ralliement.


arttroy - posté le 10/06/2015 à 10:13:12 (2394 messages postés)

❤ 0

Just working

Ah ouais ok pour la variable j'ai trompé ^^, je maîtrise pas encore tout à fait les scripts ^^ Merci de la précision.

Par contre du coup pour la seconde partie de code ça va donner un résultat négatif si la variable 77 est supérieure à 1, ça va foutre la merde non ?

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


7163D - posté le 10/06/2015 à 10:22:11 (946 messages postés)

❤ 0

Votez Minimaliste

Citation:

Ah ouais ok pour la variable j'ai trompé ^^, je maîtrise pas encore tout à fait les scripts ^^ Merci de la précision.


Pas de problème :grossourire

Citation:

Par contre du coup pour la seconde partie de code ça va donner un résultat négatif si la variable 77 est supérieure à 1, ça va foutre la merde non ?



Tel que je l'ai écrit, (j'aurais dû le préciser), la variable est un ratio de perte.
En gros, 0 -> perte de 0% des soins -> soins normaux
0.5 -> perte de 50% des soins -> demi-soins
1-> perte de 100% des soins -> plus de soin

Donc normalement cette variable ne devrais pas dépasser 1.

Minimaliste, le "." comme signe de ralliement.


Evolite - posté le 11/06/2015 à 20:05:26 (6 messages postés)

❤ 0

ça a l'air pas mal, je vais tester ça, je crois que c'est exactement ce que je cherchais. le pire c'est que j'avais déjà testé ça au pif, mais que j'avais pas mis les end, :sonic

va falloir que je divise la valeur de ma variable toxic par 100 pour que ça roule parfaitement, mais l'idée est la, je cherchait surtout la syntaxe de la chose. pas évidente a deviner quand on y connais rien :doute6 en tout cas merci !

edit: gros fail ça marche pas. c'était trop simple. au moins ça bug pas.

ou alors je bricole un truc avec la formule de calcul de toutes les compétences de soins. je viens de voir que l'on pouvais utiliser une variable apparament, ça peut être pas mal ?


arttroy - posté le 13/06/2015 à 11:40:34 (2394 messages postés)

❤ 0

Just working

C'est probablement à cause du fait que le résultat de l'opération

sparam(2) * (1 - $game_variables[77])

Donne forcément un résultat négatif, à part si la variable 77 est inférieure ou égale à 1.

Exemple : sparam(2) = 12
$game_variables = 2

12 * (1 - 2) = 12 * (-1) = -12 Résultat négatif

A la limite, tu peux changer le truc par

sparam(2) * (1 - ($game_variables[77] / 10))

En donnant une valeur inférieure ou égale à 10 à ta variable [77], ça devrait fonctionner (1 pour 10% de baisse).

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


7163D - posté le 13/06/2015 à 12:17:17 (946 messages postés)

❤ 0

Votez Minimaliste

A pardon j'avais oublié que les variables ne pouvaient prendre que des valeurs entière...

Dans ce cas modifie carrément par

Portion de code : Tout sélectionner

1
sparam(2) * (1 - ($game_variables[77] / 100)) 



En te disant que la variable 77 représente le % de diminution

Minimaliste, le "." comme signe de ralliement.


Evolite - posté le 13/06/2015 à 13:22:52 (6 messages postés)

❤ 0

J'ai déja test ça je vous avait dit que je / 100 ^_^

le truc c'est que j'ai mis (1 - ($game_variables[XX]/=100) ) après je vais ptet virer le =, petet c ça qui pêche.

edit: non c'est pareil. en fait le truc c'est que les soins ne varient genre pas du tout sauf si la toxicité =100, la les soins ne marchent plus et c bon. bizarre. après j'ai fait le test sur une compétence de soin en multipliant la formule du soin par la variable de test(le%de réduc) si une variable ne peut pas prendre de décimale ça expliquerait bien le truc. par contre l'appel de sparam(2) que tu m'a montré de fonctionne pas du tout, ça change quedal aux soins :triste2 , même quand je fait :

class GameBattlerBase
def res
sparam(2) * 0
end
end

l'appel ne doit pas être bon donc, pas la bonne formule magique :fache1


arttroy - posté le 13/06/2015 à 14:12:45 (2394 messages postés)

❤ 0

Just working

class GameBattlerBase
def rec
sparam(2) * (1 - $game_variables[77] /100)
end
end

Ca devrait être mieux comme ça déjà. Sinon si tu met def res, ça crée une nouvelle method mais qui n'est utilisée nulle part ailleurs dans les scripts. En mettant def rec, tu vas directement redéfinir la method des script d'origine

Anti-inconstructivité / Pétition pour que le mot making soit inscrit dans le dictionnaire ?


7163D - posté le 13/06/2015 à 16:23:06 (946 messages postés)

❤ 0

Votez Minimaliste

[ura]par contre l'appel de sparam(2) que tu m'a montré de fonctionne pas du tout, ça change quedal aux soins[/ura]
Oups!
Comme arttroy l'a dit, c'est def rec qu'il faut mettre, je me suis trompé...
Pour le problème d'entier, tu peut essayer:

Portion de code : Tout sélectionner

1
0.01 * (sparam(2) * (100 - ($game_variables[77]))).to_f 



Minimaliste, le "." comme signe de ralliement.

Index du forum > Entraide > [rpg maker vx ace] Modification carac spéciales dynamiquement

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