Partagez
Aller en bas
cator. lol
cator. lol
Membre

Nombre de messages : 164
Age : 28
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' Wink]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' Wink]
crefadet le violeur du bois [Balb' Afficher un message via un script (résolu) 522164]
Date d'inscription : 02/02/2012

Afficher un message via un script (résolu) Empty Afficher un message via un script (résolu)

le Mer 15 Fév 2012 - 20:17
Bonjour à tous,
je cherche un script contenant une méthode prenant un mot (une variable string donc) en attribut et qui la restitue dans un message, de cette forme :
"[Variable string] utilise [Variable string²]" que l'on puisse appeler ainsi via la commande "appeler script" : "instruction(attribut)".
Avec une méthode pour un seul attribut, puis une autre pour deux attributs.

Concrètement c'est pour un jeu pokémon, donc par exemple "Pikachu utilise Eclair !".

Merci =)


Dernière édition par Azelf le Ven 17 Fév 2012 - 19:02, édité 1 fois
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Mer 15 Fév 2012 - 21:39
J'ai pas tout pigé à ce que tu veux, honnêtement.
M'enfin, pour l'exemple, j'vois à peu près.

Donc, j'vais te mettre sur la voie, et si jamais t'as besoin de précisions et d'adaptation, on sera toujours à même de t'en donner par la suite :

Pourquoi pas une variable qui retiendrait ta chaîne (donc tu peux changer la valeur de la variable, n'est-ce pas? Wink), des conditions (ou une seule en fonction d'une variable qui retiendrait l'index), et la méthode set_text de Window_Help?

Utilisable ainsi :

Code:
ton_objet.set_text("Ta chaîne")

Wink
cator. lol
cator. lol
Membre

Nombre de messages : 164
Age : 28
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' Wink]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' Wink]
crefadet le violeur du bois [Balb' Afficher un message via un script (résolu) 522164]
Date d'inscription : 02/02/2012

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Mer 15 Fév 2012 - 21:45
Bah en fait, pour l'exemple, une variable pokemon et une variable attaque.
Soit :
Code:
pokemon + " utilise " + attaque " !"

Clairement je crée un objet de type Window_Help et j'utilise sa méthode set_text ?

Code:
test = Window_Help.new
test.set_text("Pikachu utilise Eclair !")


Edit: Il y a moyen de choisir les coordonnées de l'affichage du texte ? Là il s'affiche en haut...
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Mer 15 Fév 2012 - 21:58
Exactement!
Bah, dans ton cas :

Code:
test.y = Graphics.height - test.height

Puis tu devrais faire :

Code:
"#{pokemon} utilise #{attaque}!"

Plus court, et ça t'évite la concaténation de tes deux variables. Ca convertira directement en String. Wink
Après, tu mets ce que tu as besoin en argument pour le set_text.
cator. lol
cator. lol
Membre

Nombre de messages : 164
Age : 28
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' Wink]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' Wink]
crefadet le violeur du bois [Balb' Afficher un message via un script (résolu) 522164]
Date d'inscription : 02/02/2012

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Mer 15 Fév 2012 - 23:13
J'ai essayé de mettre tout ça dans un seul script :

Code:
class APM < Window_Help
 
  def initialize
    @pokemon = ""
    @attaque = "" # c'est pour autre chose ça ^^
  end

 def affmsg(pokemon, attaque)
  set_text("#{pokemon} utilise #{attaque}!")
  end
 
end

mais quand j'instancie un objet de type APM et que j'utilise sa méthode affmsg (via un appel de script), j'ai un message d'erreur...

Code:
a = APM.new
a.affmsg(Pika, Eclair)
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 11:41
ah, c'est un peu plus compliqué que ça .
déja , c'est bien du VX ?
Ensuite , ton message , tu le veux en combat ou sur la map ?
Et enfin, comment il s'en va ? en appuyant sur un bouton ou au bout de X secondes .
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 12:37
Faut aussi que tu gères l'update/refresh, comme l'a dit plus haut Dricc, gérer la disparition selon une boucle de frames, ou une condition d'appui sur une touche.

Puis, ce que tu entres en arguments lors de l'appel de ta méthode affmsg, j'vois pas comment t'as géré ça.
C'est des variables Constantes? Tu devrais peut-être te faire une BDD de Pokémon dans des Arrays, de même pour les attaques, et tu récupèrerais tes index des deux tableaux pour afficher.

Dans l'initialize de ta classe, tu proposes alors des arguments qui doivent être rentrés lors de l'appel, et qui seraient stockés dans tes deux variables @.

Genre comme ça, et sans identation parce que je fais ça vite fait :

Code:
class APM < Window_Help
 
  def initialize(id_pkmn, id_atk)
    @id_pokemon = id_pkmn
    @id_attaque = id_atk
    @cdc_string = "#{@id_pokemon} utilise #{@id_attaque}!"
    refresh
  end

 def refresh

  if @cdc_string != @cdc_string
    @cdc_string = "#{@id_pokemon} utilise #{@id_attaque}!"
  affmsg(@cdc_string)
  end
# Ta condition d'effacement par appui ou par frame, j'pense que tu y arriveras, si jamais, on est là de toutes façons.
 end

 def affmsg(string = @cdc_string)
  set_text(string)
  end
 
end

Donc pour ton appel :

Code:
a = APM.new(ton_id_pkmn, ton_id_atk)

Après c'est du vite fait donc bon, faut rajouter des trucs comme ta BDD dans un tableau etc. J'regarderais si j'peux te faire un template pour la BDD quand j'aurais un peu plus de temps. x)


Dernière édition par Mist' le Jeu 16 Fév 2012 - 14:51, édité 1 fois
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 14:17
Déja , faut respecter les standards et "parler" rpgmaker .

Donc APM doit etre Window_Apm (en plus , ça a un impact , c'est important) .
Ne parle pas de pokemon mais d'actor et pas d'attaque mais de skill (en plus , là , ATK a un sens totalement different) .

Enfin , pour afficher une fenetre , il faut créer un Window_XXX , oui mais aussi modifier la Scene_XXX qui va l'afficher .
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 14:55
Effectivement, je suis d'accord avec toi Dricc.

Rah, perso', j'ai fait ça vite, et à titre d'exemple x)
A la limite, en rendant le code dans les normes :

Code:
class Window_Apm < Window_Help
 
  def initialize(id_actor, id_skill)
    @id_actor = id_actor
    @id_skill = id_skill
    @cdc_string = "#{@id_actor} utilise #{@id_skill}!"
    @attaque = "" # Je l'avais oubliée, tout à l'heure
    refresh
  end

 def refresh

  if @cdc_string != @cdc_string
    @cdc_string = "#{@id_actor} utilise #{@id_skill}!"
  end
  affmsg(@cdc_string)
# Ta condition d'effacement par appui ou par frame, j'pense que tu y arriveras, si jamais, on est là de toutes façons.
 end

 def affmsg(string = @cdc_string)
  set_text(string)
  end
 
end

Appel :

Code:
a = Window_Apm.new(ton_id_actor, ton_id_skill)

@Dricc : Puis pour l'affichage de la Window, ça peut aussi se faire sur la Scene_Map et être utilisé par les évènements, donc par le Game_Interpreter, on peut faire l'appel en évènements, ainsi que le refresh. M'enfin, j'admet que c'est pas très recommandé. Une activation par interrupteur pourrait être judicieuse si on implante la Window dans la Scene_Map dans ce cas.


Dernière édition par Mist' le Jeu 16 Fév 2012 - 19:21, édité 1 fois
cator. lol
cator. lol
Membre

Nombre de messages : 164
Age : 28
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' Wink]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' Wink]
crefadet le violeur du bois [Balb' Afficher un message via un script (résolu) 522164]
Date d'inscription : 02/02/2012

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 19:09
Je vois, donc dès que l'on instancie l'objet, initialize est appelée, qui appelle refresh, qui appelle affmsg.
Néanmoins, quand je fais cet appel de script :
Code:
a = Window_Apm.new("Pikachu", "Tonnerre")
ça ne fait rien.
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 19:23
Remplace ton refresh par celui là :

Code:
 def refresh

  if @cdc_string != @cdc_string
    @cdc_string = "#{@id_actor} utilise #{@id_skill}!"
  end
  affmsg(@cdc_string)
# Ta condition d'effacement par appui ou par frame, j'pense que tu y arriveras, si jamais, on est là de toutes façons.
 end

J'ai été un peu vite, et j'pense que l'affichage ne marche pas à cause du fait que je l'avais mis dans la condition. Si la condition n'était pas vérifiée, le message n'était pas affiché. Désolé, c'est ma faute. >.<
cator. lol
cator. lol
Membre

Nombre de messages : 164
Age : 28
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' Wink]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' Wink]
crefadet le violeur du bois [Balb' Afficher un message via un script (résolu) 522164]
Date d'inscription : 02/02/2012

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Jeu 16 Fév 2012 - 19:51
"Script 'Window_Help' line 21 : RGSS Error occured

disposed window"

Euh... c'est quoi ça ? :/
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Ven 17 Fév 2012 - 10:50
En récupérant d'un vieux script , j'ai fait ceci :

Code:

# une simple fenetre qui affiche un texte
class Window_Effect < Window_Base
  attr_accessor :actor_disp
  attr_accessor :skill_disp
  def initialize(x, y,width,nb_line,alignment)
    super(x, y, width, WLH * nb_line + 32)
    @width=width
    @alignment=alignment
    @actor_disp=""
    @skill_disp=""
    refresh
  end
  def set_text(actor_disp,skill_disp)
    @actor_disp=actor_disp
    @skill_disp=skill_disp
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.draw_text(0, WLH * 0, @width - 32 , WLH, @actor_disp + " lance " + @skill_disp,@alignment)
  end
end

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  alias old_start start
    attr_accessor :effect_window_count
  def start
    old_start
    @effect_window = Window_Effect.new(0,0,544,1,0)
    @effect_window.visible=false
    @effect_window_count=0
  end
  alias old_update update
  def update
    old_update
    @effect_window.update      # Update window
    @effect_window_count -=1 if  @effect_window_count > 0
    if @effect_window_count == 0
      @effect_window.visible=false
    end
  end
  def aff_text(actor_disp,skill_disp)
    @effect_window.set_text(actor_disp,skill_disp)
    @effect_window_count =200
    @effect_window.visible=true
  end
end


ça s'utilise ainsi :
appeler script :
$scene.aff_text("pikachu","tonnerre")

ça attends 200 frame avant de s'effacer .
cator. lol
cator. lol
Membre

Nombre de messages : 164
Age : 28
Localisation : Cherche pas, tu me trouveras jamais.
Distinction : Zoophile à ses heures perdues, au torse poilu et qui chante YMCA
Frère de poils!
[Mist' Wink]
Maître du plantage d'arbres à femme : pour la sauvegarde des arbres et des petits oiseaux, vive la nature. [Balb' Wink]
crefadet le violeur du bois [Balb' Afficher un message via un script (résolu) 522164]
Date d'inscription : 02/02/2012

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Ven 17 Fév 2012 - 19:01
Youpi, ça marche Very Happy
J'ai modifié les coordonnées du message !

Merci Wink
Elisa'
Elisa'
Staffeux retraité

Nombre de messages : 2924
Age : 21
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris Afficher un message via un script (résolu) 344805Afficher un message via un script (résolu) 344805
[Coco' Smile]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]

Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009

Afficher un message via un script (résolu) Empty Re: Afficher un message via un script (résolu)

le Ven 17 Fév 2012 - 19:14
Problème résolu, je déplace Smile

_________________


Cliquez ici pour voter pour la commu'
Afficher un message via un script (résolu) Banner
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum