Ça fait longtemps que je n'ai pas posté étant donné que je focus plus sur l'histoire et le mapping de mon RPG. Bon alors, j'ai une demande assez simple mais je ne sais pas si c'est possible pour un script de faire ce que je désire. Je voudrais pouvoir ajouter une variable lorsque j'utilise un item lors d'un combat. Mon but est de créer un système de techniques spécifique à un perso en lui faisant boire de l'alcool
Ex: Brauch bois 1 bière (variable ivresse = +1) Brauch bois 1 vin (variable ivresse = +3) Brauch utilise son attaque Cris de soualon (dommage tous les ennemis / variable ivresse = -2) Brauch utilise son attaque Vomis (dommage tous les ennemis / variable ivresse = 0)
Il faudrait que sa "barre d'ivresse" soit visible à la place de la mana et qu'elle reset après chaque combat.
Est-ce que quelqu'un connait un script similaire ou pourrait en faire un? Ce serait vraiment super pour mon pirate soual
Merci
Dernière édition par nassshole le Ven 9 Juil 2010 - 23:58, édité 3 fois
Zodiak
Seigneur Lv.18
Age : 29 Avertissements : 3Inscrit le : 20/12/2008 Messages : 2292
Hmm un moyen simple (et à ma portée <3) serait, plutôt que de remplacer ta barre d'alcoolémie, serait juste de renommer la barre des mp de ton personnage de "pm" en "alcool". Pour ce faire un moyen possible est d'aller dans Windows_base et de changer ça:
Spoiler:
par ça :
Spoiler:
où "Ralph" est remplacé par le nom de ton pirate.
Pour ce qui est des attaques, Zodiak a raison, ça se fait avec des events (quoique les attaques qui consomment sont comme des attaques normales).
ps : c'est une solution de secours si personne t'écris le script, vu que dans ce cas, les ethers deviennent de l'eau de vie (et de la bonne >.>), et que dormir te rend saoul aussi (mais ça se règle facile par contre).
Aw super pour la barre de mana je ne savais pas qu'elle pouvait se changer directement à partir des script de bases...ce qui est logique après réflection.
À propos des boissons, si je comprends bien, je vais créer mes produits alcoolisés comme si c'était des potions de mana normal mais comment s'assurer que c'est seulement mon pirate qui pourra boire les brevages et que lui ne puisse pas boire de potions de mana? Pour qu'il n'ait pas de mana au début, comment devrais-je faire mon event commun?
La meilleur solution pour les attaques seraient-elle de les mettre en place comme n'importe qu'elle autre sort mais de diminuer la consommation de mana à l'extrême?
Ça semble bien moins compliqué que ce que j'avais imaginé
Ça semble bien moins compliqué que ce que j'avais imaginé
Je suis Tiroflan, ce que je fais n'est pas fatigant, donc pas compliqué.
Par contre, ce que j'ai répondu la dernière fois est assez extrême sur la feignasserie, je rectifie le tir au flanc. Si on continue avec les mp, ça va t'embêter pas mal au niveau des potions, donc on va revenir à ton idée de variable Ivresse ; on va lui créer une barre comme celle des mp, sauf qu'elle stockera ta variable à la place.
Dans Window_base, tu remplaces la fonction draw_actor_mp (ligne 328) par :
Code:
def draw_actor_mp(actor, x, y, width = 120) draw_actor_mp_gauge(actor, x, y, width) self.contents.font.color = system_color if actor.name =="Ralph" self.contents.draw_text(x, y, 30, WLH, "Alcool") self.contents.font.color = mp_color(actor) last_font_size = self.contents.font.size xr = x + width if width < 120 self.contents.draw_text(xr - 44, y, 44, WLH, $game_variables[1], 2) else self.contents.draw_text(xr - 99, y, 44, WLH, $game_variables[1], 2) self.contents.font.color = normal_color self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2) self.contents.draw_text(xr - 44, y, 44, WLH, 30, 2) end
else self.contents.draw_text(x, y, 30, WLH, Vocab::mp_a) self.contents.font.color = mp_color(actor) last_font_size = self.contents.font.size xr = x + width if width < 120 self.contents.draw_text(xr - 44, y, 44, WLH, actor.mp, 2) else self.contents.draw_text(xr - 99, y, 44, WLH, actor.mp, 2) self.contents.font.color = normal_color self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2) self.contents.draw_text(xr - 44, y, 44, WLH, actor.maxmp, 2) end end
end
Et ensuite, tu remplaces ta fonction draw_actor_mp_jauge (juste en dessous, ligne 368) par :
else gw = width * actor.mp / [actor.maxmp, 1].max gc1 = mp_gauge_color1 gc2 = mp_gauge_color2 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2) end end
Avec la légende de ce qui change : "Ralph" est toujours le nom du pirate. "Alcool" est toujours le nom qui sera inscrit dans la barre. $game_variables[1] signifie c'est la variable 1 qui va servir à stocker le degré d'ivresse, libre à toi de changer bien entendu. Ensuite, dans self.contents.draw_text(xr - 44, y, 44, WLH, 30, 2) et dans gw = width * $game_variables[1] / [30, 1].max, le 30 que j'ai mis correspond au maximum d'ivresse que tu peux atteindre, à toi de modifier à ta guise.(Attention, les autres 30 ne sont pas à modifier) Enfin, j'ai mis une couleur rouge à ta barre en entrant gc1 = text_color(18) et gc2 = text_color(2), tu peux aussi modifier ça en consultant la palette de couleurs de ton windowskin. (les numéros commencent à 0)
Les modifications que j'ai apportées sont minimes (juste une condition en fait), je pense pas que ça peut planter ton jeu.
Pour vider la variable Ivresse à la fin de chaque combat, tu vas dans Scene_battle, là tu vas à la ligne 572 et 596 (normalement, battle_end(1) et battle_end(0)) et tu sautes une ligne, tu entres :
Code:
$game_variables[1] = 0
Ça suffit ! (le 1 est bien entendu toujours l'id de ta variable)
Voilà, je pense qu'avec ça, c'est déjà un système plus raisonnable, enjoy :3
Salut! Merci, ça fonctionne merveilleusement mais à l'exception d'une chose; l'affichage numérique de la variable ne s'affiche pas mais la barre rouge fonctionne parfaitement.
Je suis cependant un peu embêté pour le fonctionnement des sorts. Pour les boissons alcoolisées, je les fais appelé un event commun qui change la variable +1, +3, etc. et lorsque mon pirate lance des sorts, ceux-ci appellent d'autres events communs qui diminuent la variable. Jusqu'ici tout fonctionne. Le problème survient lors de l'apprentissage des sorts:
Condition: Variable [ivresse] >=2 Ralph apprends Cri de soualon
Est-ce parce que les sorts ne peuvent qu'être appris après le combat?
L'affichage numérique ne marche pas, tu veux dire juste au-dessus de la barre ? Dans ce cas, l'erreur doit venir de toi, pour moi ça marche très bien, même en copiant-collant juste ce que j'ai posté. Vérifie que t'as bien changé l'id de la variable à chaque fois, ... bref tout en fait, quoi :3 Si c'est pas au dessus de la barre que ça foire, dis moi où, je vois pas sinon :s
Pour ton système, tu voudrais que ton perso "apprenne" des techniques en plein combat une fois que son ivresse est suffisante, c'est ça ?
Dans ce cas, tu mets ça en event de combat pour chaque groupe d'ennemis :
Spoiler:
Où l'évènement Apprentissage contient un truc comme ça :
Spoiler:
Avec ceci, j'ai bien vérifié, la liste de tes aptitudes est bien remise à jour tous les tours.
Reste un problème, les aptitudes restantes ne sont pas enlevées à la fin du combat... Il suffirait d'appeler l'EV "Apprentissage" juste en dessous des $game_variables[1] = 0 que je t'avais fait rajouter, le problème c'est que je débute en script et que je sais pas encore appeler un EV commun via un script.
Je pense que ca déclenchera l'event commun à la fin de chaque tour (je ne suis pas sure après) En tout cas, je te met + 5 à la participation au forum, + 2 en scripts; +1 en event pour ton aide en général et ici en particulier !
Ouah jme fait aider et ça fait des points $$ ! Merci ! [mode rapia off]
J'étais pas encore aller voir à Game_temp, ça m'apprendra (jm'étais perdu dans Game_interpreter, command 117 qui est censé activer un event commun ...)
Sinon bah ta ligne de code marche très bien, faut bien faire attention de pas la mettre après process_battle.event sinon ça se déclenche pas ; tu sais ce qu'il te reste à faire nassshole, je pense que le tour de ton système est fait à peu près. ;p
Pour l'event commun dans les combats suffisais de regarder execute_action_skill ou execute_action_item ! Moi aussi quand j'ai commencé à me pencher un peu sur les script de base j'ai galéré à trouver comment on appelais ce fichu évent commun xD
M'enfin les points c'était surtout pour l'aide que t'a apporté avant que j'intervienne hein !
Mais c'est fantastique =D tout fonctionne parfaitement. Le problème de l'affichage numérique était bien le # de la variable qui n'avait pas été transféré.