- TeñvalijennMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 21/07/2015
Demande d'aide pour un script
Lun 10 Aoû 2015 - 15:20
Bonjour à tous,
je viens vers vous pour demander votre aide.
Pour mon projet actuel je souhaite introduire des succès dans le jeu via un script.
J'ai commencé par rechercher sur internet des scripts existants, mais le résultat ne me convenait pas (ou ne fonctionnait pas avec ma version de RPG maker). J'ai donc voulu créer le mien. Le script en lui-même fonctionne mais j'ai un bug d'affichage que je ne parviens pas à résoudre.
Le but de mon script est de présenter au joueur une série d'images sur plusieurs pages (normalement toutes différentes mais je n'ai pas encore les images) qui s'affichent en noir et blanc quand le succès n'est pas déverrouillé (dans mes essais en rouge) et en couleur quand le script est déverrouillé (en bleu pour mes essais). A cela s'ajoute une description du succès lorsque celui-ci est déverrouillé ou "???" quand il ne l'est pas.
Mon problème vient du "curseur" qui se déplace d'image en image :
Au lieu de se déplacer d'image en image, celui-ci se duplique et apparait à la fois sous l'image sélectionnée et sous celle où il était précédemment.
J'ai testé différentes solutions mais sans succès et j'aurais donc besoin de votre avis.
Je vous remercie par avance.
je viens vers vous pour demander votre aide.
Pour mon projet actuel je souhaite introduire des succès dans le jeu via un script.
J'ai commencé par rechercher sur internet des scripts existants, mais le résultat ne me convenait pas (ou ne fonctionnait pas avec ma version de RPG maker). J'ai donc voulu créer le mien. Le script en lui-même fonctionne mais j'ai un bug d'affichage que je ne parviens pas à résoudre.
Le but de mon script est de présenter au joueur une série d'images sur plusieurs pages (normalement toutes différentes mais je n'ai pas encore les images) qui s'affichent en noir et blanc quand le succès n'est pas déverrouillé (dans mes essais en rouge) et en couleur quand le script est déverrouillé (en bleu pour mes essais). A cela s'ajoute une description du succès lorsque celui-ci est déverrouillé ou "???" quand il ne l'est pas.
- Code:
#-------------------------------------------------------------------------------
# Création scène n°1
#-------------------------------------------------------------------------------
class Scene_succes < Scene_Base
def start
super
create_title
create_variable
create_image
end
def create_title
@title = Window_Base.new(0, 0, 544, 50)
@title.draw_text(0,0, 544, 26, "Succes page 1/2")
end
def create_image
# contient toutes les images utiliser pour les succes. A terme les 01 seront remplacées par les images des succes non débloqués et les 02 par les images des succès débloqués.
@image1 = Sprite.new
if $game_switches[1]
then @image1.bitmap = Bitmap.new("Graphics/Pictures/02")
@image1.x = 17
@image1.y = 68
@image1.z = 250
else @image1.bitmap = Bitmap.new("Graphics/Pictures/01")
@image1.x = 17
@image1.y = 68
@image1.z = 250
end
@image2 = Sprite.new
if $game_switches[2]
then @image2.bitmap = Bitmap.new("Graphics/Pictures/02")
@image2.x = 152
@image2.y = 68
@image2.z = 250
else @image2.bitmap = Bitmap.new("Graphics/Pictures/01")
@image2.x = 152
@image2.y = 68
@image2.z = 250
end
@image3 = Sprite.new
if $game_switches[3]
then @image3.bitmap = Bitmap.new("Graphics/Pictures/02")
@image3.x = 287
@image3.y = 68
@image3.z = 250
else @image3.bitmap = Bitmap.new("Graphics/Pictures/01")
@image3.x = 287
@image3.y = 68
@image3.z = 250
end
@image4 = Sprite.new
if $game_switches[4]
then @image4.bitmap = Bitmap.new("Graphics/Pictures/02")
@image4.x = 422
@image4.y = 68
@image4.z = 250
else @image4.bitmap = Bitmap.new("Graphics/Pictures/01")
@image4.x = 422
@image4.y = 68
@image4.z = 250
end
@image5 = Sprite.new
if $game_switches[5]
then @image5.bitmap = Bitmap.new("Graphics/Pictures/02")
@image5.x = 17
@image5.y = 203
@image5.z = 250
else @image5.bitmap = Bitmap.new("Graphics/Pictures/01")
@image5.x = 17
@image5.y = 203
@image5.z = 250
end
@image6 = Sprite.new
if $game_switches[6]
then @image6.bitmap = Bitmap.new("Graphics/Pictures/02")
@image6.x = 152
@image6.y = 203
@image6.z = 250
else @image6.bitmap = Bitmap.new("Graphics/Pictures/01")
@image6.x = 152
@image6.y = 203
@image6.z = 250
end
@image7 = Sprite.new
if $game_switches[7]
then @image7.bitmap = Bitmap.new("Graphics/Pictures/02")
@image7.x = 287
@image7.y = 203
@image7.z = 250
else @image7.bitmap = Bitmap.new("Graphics/Pictures/01")
@image7.x = 287
@image7.y = 203
@image7.z = 250
end
@image8 = Sprite.new
if $game_switches[8]
then @image8.bitmap = Bitmap.new("Graphics/Pictures/02")
@image8.x = 422
@image8.y = 203
@image8.z = 250
else @image8.bitmap = Bitmap.new("Graphics/Pictures/01")
@image8.x = 422
@image8.y = 203
@image8.z = 250
end
end
def create_variable
@@variable = 1
end
def update
super
SceneManager.call(Scene_succes2) if Input.trigger?(:R)
SceneManager.call(Scene_Map) if Input.trigger?(:B)
if Input.trigger?(:B)
Sound.play_cancel
end
@@variable += 1 if Input.trigger?(:RIGHT)
@@variable += 4 if Input.trigger?(:DOWN)
@@variable -= 1 if Input.trigger?(:LEFT)
@@variable -= 4 if Input.trigger?(:UP)
@cursor = Window_Base.new(5, 55, 129, 129 ) if @@variable == 1
@cursor = Window_Base.new(140, 55, 129, 129 ) if @@variable == 2
@cursor = Window_Base.new(274, 55, 129, 129 )if @@variable == 3
@cursor = Window_Base.new(409, 55, 129, 129 )if @@variable == 4
@cursor = Window_Base.new(5, 191, 129, 129 )if @@variable == 5
@cursor = Window_Base.new(140, 191, 129, 129 )if @@variable == 6
@cursor = Window_Base.new(274, 191, 129, 129 )if @@variable == 7
@cursor = Window_Base.new(409, 191, 129, 129 )if @@variable == 8
if @@variable > 8
then @@variable -= 8
end
if @@variable < 1
then @@variable += 1
end
# mise en place de la fenêtre de description
@description = Window_Base.new(0, 326, 544, 90 )
if @@variable == 1
if $game_switches[1]
then @description.draw_text(0,0, 544, 26, "Description 1")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 2
if $game_switches[2]
then @description.draw_text(0,0, 544, 26, "Description 2")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 3
if $game_switches[3]
then @description.draw_text(0,0, 544, 26, "Description 3")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 4
if $game_switches[4]
then @description.draw_text(0,0, 544, 26, "Description 4")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 5
if $game_switches[5]
then @description.draw_text(0,0, 544, 26, "Description 5")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 6
if $game_switches[6]
then @description.draw_text(0,0, 544, 26, "Description 6")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 6
if $game_switches[6]
then @description.draw_text(0,0, 544, 26, "Description 8")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 8
if $game_switches[8]
then @description.draw_text(0,0, 544, 26, "Description 8")
else @description.draw_text(0,0, 544, 26, "???")
end
end
end
end
#-------------------------------------------------------------------------------
# Création scène n°2
#-------------------------------------------------------------------------------
class Scene_succes2 < Scene_Base
def start
super
create_title
create_variable
create_image
end
def create_title
@title = Window_Base.new(0, 0, 544, 50)
@title.draw_text(0,0, 544, 26, "Succes page 2/2")
end
def create_image
@image1 = Sprite.new
if $game_switches[9]
then @image1.bitmap = Bitmap.new("Graphics/Pictures/02")
@image1.x = 17
@image1.y = 68
@image1.z = 250
else @image1.bitmap = Bitmap.new("Graphics/Pictures/01")
@image1.x = 17
@image1.y = 68
@image1.z = 250
end
@image2 = Sprite.new
if $game_switches[10]
then @image2.bitmap = Bitmap.new("Graphics/Pictures/02")
@image2.x = 152
@image2.y = 68
@image2.z = 250
else @image2.bitmap = Bitmap.new("Graphics/Pictures/01")
@image2.x = 152
@image2.y = 68
@image2.z = 250
end
@image3 = Sprite.new
if $game_switches[11]
then @image3.bitmap = Bitmap.new("Graphics/Pictures/02")
@image3.x = 287
@image3.y = 68
@image3.z = 250
else @image3.bitmap = Bitmap.new("Graphics/Pictures/01")
@image3.x = 287
@image3.y = 68
@image3.z = 250
end
@image4 = Sprite.new
if $game_switches[12]
then @image4.bitmap = Bitmap.new("Graphics/Pictures/02")
@image4.x = 422
@image4.y = 68
@image4.z = 250
else @image4.bitmap = Bitmap.new("Graphics/Pictures/01")
@image4.x = 422
@image4.y = 68
@image4.z = 250
end
@image5 = Sprite.new
if $game_switches[13]
then @image5.bitmap = Bitmap.new("Graphics/Pictures/02")
@image5.x = 17
@image5.y = 203
@image5.z = 250
else @image5.bitmap = Bitmap.new("Graphics/Pictures/01")
@image5.x = 17
@image5.y = 203
@image5.z = 250
end
@image6 = Sprite.new
if $game_switches[14]
then @image6.bitmap = Bitmap.new("Graphics/Pictures/02")
@image6.x = 152
@image6.y = 203
@image6.z = 250
else @image6.bitmap = Bitmap.new("Graphics/Pictures/01")
@image6.x = 152
@image6.y = 203
@image6.z = 250
end
@image7 = Sprite.new
if $game_switches[15]
then @image7.bitmap = Bitmap.new("Graphics/Pictures/02")
@image7.x = 287
@image7.y = 203
@image7.z = 250
else @image7.bitmap = Bitmap.new("Graphics/Pictures/01")
@image7.x = 287
@image7.y = 203
@image7.z = 250
end
@image8 = Sprite.new
if $game_switches[16]
then @image8.bitmap = Bitmap.new("Graphics/Pictures/02")
@image8.x = 422
@image8.y = 203
@image8.z = 250
else @image8.bitmap = Bitmap.new("Graphics/Pictures/01")
@image8.x = 422
@image8.y = 203
@image8.z = 250
end
end
def create_variable
@@variable = 1
end
def update
super
SceneManager.call(Scene_succes) if Input.trigger?(:L)
SceneManager.call(Scene_Map) if Input.trigger?(:B)
if Input.trigger?(:B)
Sound.play_cancel
end
@@variable += 1 if Input.trigger?(:RIGHT)
@@variable += 4 if Input.trigger?(:DOWN)
@@variable -= 1 if Input.trigger?(:LEFT)
@@variable -= 4 if Input.trigger?(:UP)
@cursor = Window_Base.new(5, 55, 129, 129 ) if @@variable == 1
@cursor = Window_Base.new(140, 55, 129, 129 ) if @@variable == 2
@cursor = Window_Base.new(274, 55, 129, 129 )if @@variable == 3
@cursor = Window_Base.new(409, 55, 129, 129 )if @@variable == 4
@cursor = Window_Base.new(5, 191, 129, 129 )if @@variable == 5
@cursor = Window_Base.new(140, 191, 129, 129 )if @@variable == 6
@cursor = Window_Base.new(274, 191, 129, 129 )if @@variable == 7
@cursor = Window_Base.new(409, 191, 129, 129 )if @@variable == 8
if @@variable > 8
then @@variable -= 8
end
if @@variable < 1
then @@variable += 1
end
# mise en place de la fenêtre de description
@description = Window_Base.new(0, 326, 544, 90 )
if @@variable == 1
if $game_switches[9]
then @description.draw_text(0,0, 544, 26, "Description 9")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 2
if $game_switches[10]
then @description.draw_text(0,0, 544, 26, "Description 10")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 3
if $game_switches[11]
then @description.draw_text(0,0, 544, 26, "Description 11")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 4
if $game_switches[12]
then @description.draw_text(0,0, 544, 26, "Description 12")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 5
if $game_switches[13]
then @description.draw_text(0,0, 544, 26, "Description 13")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 6
if $game_switches[14]
then @description.draw_text(0,0, 544, 26, "Description 14")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 6
if $game_switches[15]
then @description.draw_text(0,0, 544, 26, "Description 15")
else @description.draw_text(0,0, 544, 26, "???")
end
end
if @@variable == 8
if $game_switches[16]
then @description.draw_text(0,0, 544, 26, "Description 16")
else @description.draw_text(0,0, 544, 26, "???")
end
end
end
end
Mon problème vient du "curseur" qui se déplace d'image en image :
Au lieu de se déplacer d'image en image, celui-ci se duplique et apparait à la fois sous l'image sélectionnée et sous celle où il était précédemment.
J'ai testé différentes solutions mais sans succès et j'aurais donc besoin de votre avis.
Je vous remercie par avance.
Re: Demande d'aide pour un script
Lun 10 Aoû 2015 - 18:20
c'est dans le def update que tu dois regarder:
Créer une fonction comme celle-ci:
Une fois ceci fait, tu l'appel dans le def initialize, et dans l'update.
Ensuite du créer une autre def, avec les conditions, pour afficher les Windows, et tu l'appel dans update après le def d'avant.
- Code:
def update
super
SceneManager.call(Scene_succes2) if Input.trigger?(:R)
SceneManager.call(Scene_Map) if Input.trigger?(:B)
if Input.trigger?(:B)
Sound.play_cancel
end
@@variable += 1 if Input.trigger?(:RIGHT)
@@variable += 4 if Input.trigger?(:DOWN)
@@variable -= 1 if Input.trigger?(:LEFT)
@@variable -= 4 if Input.trigger?(:UP)
@cursor = Window_Base.new(5, 55, 129, 129 ) if @@variable == 1
@cursor = Window_Base.new(140, 55, 129, 129 ) if @@variable == 2
@cursor = Window_Base.new(274, 55, 129, 129 )if @@variable == 3
@cursor = Window_Base.new(409, 55, 129, 129 )if @@variable == 4
@cursor = Window_Base.new(5, 191, 129, 129 )if @@variable == 5
@cursor = Window_Base.new(140, 191, 129, 129 )if @@variable == 6
@cursor = Window_Base.new(274, 191, 129, 129 )if @@variable == 7
@cursor = Window_Base.new(409, 191, 129, 129 )if @@variable == 8
if @@variable > 8
then @@variable -= 8
end
if @@variable < 1
then @@variable += 1
end
# mise en place de la fenêtre de description
@description = Window_Base.new(0, 326, 544, 90 )
if @@variable == 1
if $game_switches[1]
then @description.draw_text(0,0, 544, 26, "Description 1")
else @description.draw_text(0,0, 544, 26, "???")
end
end
Créer une fonction comme celle-ci:
- Code:
def create_all_windows_hide
#Création des fenêtres, pour la création des cursors.
@cursor1 = Window_Base.new(5, 55, 129, 129 ) if @@variable == 1
@cursor2 = Window_Base.new(140, 55, 129, 129 ) if @@variable == 2
@cursor3 = Window_Base.new(274, 55, 129, 129 )if @@variable == 3
@cursor4 = Window_Base.new(409, 55, 129, 129 )if @@variable == 4
@cursor5 = Window_Base.new(5, 191, 129, 129 )if @@variable == 5
@cursor6 = Window_Base.new(140, 191, 129, 129 )if @@variable == 6
@cursor7 = Window_Base.new(274, 191, 129, 129 )if @@variable == 7
@cursor8 = Window_Base.new(409, 191, 129, 129 )if @@variable == 8
#Cache toutes les fenêtres.
@cursor1.hide
@cursor2.hide
@cursor3.hide
@cursor4.hide
@cursor5.hide
@cursor6.hide
@cursor7.hide
@cursor8.hide
end
Une fois ceci fait, tu l'appel dans le def initialize, et dans l'update.
Ensuite du créer une autre def, avec les conditions, pour afficher les Windows, et tu l'appel dans update après le def d'avant.
- TeñvalijennMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 21/07/2015
Re: Demande d'aide pour un script
Lun 10 Aoû 2015 - 22:37
Merci beaucoup, je vais tester cette solution.
Re: Demande d'aide pour un script
Lun 10 Aoû 2015 - 23:19
Dit-moi, si cela fonctionne ou si tu n'arrive pas, je te modifierais demain le script.
- TeñvalijennMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 21/07/2015
Re: Demande d'aide pour un script
Lun 10 Aoû 2015 - 23:46
Finalement, ça ne fonctionne pas, j'obtiens le message d'erreur suivant :
"undefined method `hide' for nil:NilClass"
"undefined method `hide' for nil:NilClass"
Re: Demande d'aide pour un script
Mar 11 Aoû 2015 - 0:01
Essaye avec openness a la place de hide, tu met openness = 0, qui permet de rendre invisible, car oui, la class Window n'a pas de fonction hide.
Je me suis tromper désoler.
Je me suis tromper désoler.
- TeñvalijennMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 21/07/2015
Re: Demande d'aide pour un script
Ven 14 Aoû 2015 - 22:25
Désolé pour le temps de réponse, je n'ai pas eu accès à internet ces derniers jours.
Après essais je rencontre le même message d'erreur avec openness :
undefined method `openness=' for nil:NilClass
mais j'ai finalement réussi à trouver une solution en appelant tous mes curseurs sans conditions :
puis en mettant deux situations dans l'update :
et là, les fenêtres disparaissent et apparaissent au bon moment.
En tout cas je te remercie beaucoup pour ton aide
Après essais je rencontre le même message d'erreur avec openness :
undefined method `openness=' for nil:NilClass
mais j'ai finalement réussi à trouver une solution en appelant tous mes curseurs sans conditions :
- Code:
def create_all_windows_hide
#Création des fenêtres, pour la création des cursors.
@cursor1 = Window_Base.new(5, 55, 129, 129 )
@cursor2 = Window_Base.new(140, 55, 129, 129 )
@cursor3 = Window_Base.new(274, 55, 129, 129 )
@cursor4 = Window_Base.new(409, 55, 129, 129 )
@cursor5 = Window_Base.new(5, 191, 129, 129 )
@cursor6 = Window_Base.new(140, 191, 129, 129 )
@cursor7 = Window_Base.new(274, 191, 129, 129 )
@cursor8 = Window_Base.new(409, 191, 129, 129 )
end
puis en mettant deux situations dans l'update :
- Code:
@cursor1.show if @@variable == 1
@cursor2.show if @@variable == 2
@cursor3.show if @@variable == 3
@cursor4.show if @@variable == 4
@cursor5.show if @@variable == 5
@cursor6.show if @@variable == 6
@cursor7.show if @@variable == 7
@cursor8.show if @@variable == 8
@cursor1.hide if @@variable != 1
@cursor2.hide if @@variable != 2
@cursor3.hide if @@variable != 3
@cursor4.hide if @@variable != 4
@cursor5.hide if @@variable != 5
@cursor6.hide if @@variable != 6
@cursor7.hide if @@variable != 7
@cursor8.hide if @@variable != 8
et là, les fenêtres disparaissent et apparaissent au bon moment.
En tout cas je te remercie beaucoup pour ton aide
Re: Demande d'aide pour un script
Ven 14 Aoû 2015 - 22:40
De rien, si tu a besoin d'aide n'hésite pas!
La variable fonctionne bien, mais je trouve pas propre, mais tant que ça fonctionne!
La variable fonctionne bien, mais je trouve pas propre, mais tant que ça fonctionne!
- TeñvalijennMembre
- Nombre de messages : 7
Distinction : aucune
Date d'inscription : 21/07/2015
Re: Demande d'aide pour un script
Sam 15 Aoû 2015 - 14:19
Perso je ne trouve pas ça propre non plus mais je ne suis pas encore assez avancée en rgss3 pour faire autrement. Je reprendrais sans doute ce script plus tard quand j'aurais gagné de l'expérience.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|