AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -35%
-35% sur la machine à café Expresso ...
Voir le deal
359.99 €

Partagez
 

 Amélioration de scripts [Resolu]

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Electron
Poulet trizo Lv.3
Poulet trizo Lv.3
Electron


Masculin Age : 34
Inscrit le : 18/07/2011
Messages : 44

Amélioration de scripts [Resolu] Empty
MessageSujet: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeJeu 21 Juil 2011 - 15:41

Eheh toujours moi,

j'ai pas beaucoup de réponses mais je persiste!
Toujours ce script :
https://rpg-maker-vx.bbactif.com/t4431-vx-switcheur-de-heros-changer-de-leader-en-cours-de-jeu?highlight=switcheur

Voila j'ai réussi à afficher tous les persos de la BDD pour ça j'ai modifié :
ligne 70
Code:

  for i in 1...$data_actors.size
      @commands.push($data_actors[i].name)
      @items.push(Cache.character($data_actors[i].character_name))
    end
    #for actor in $game_party.members
      #@commands.push(actor.name)
      #@items.push(Cache.character(actor.character_name))
    #end

ligne 207
Code:

if $data_actors[i+1].character_name.include?("$")
    #if $game_party.members[i].character_name.include?("$")

ligne 213
Code:

index = $data_actors[i+1].character_index
    #index = $game_party.members[i].character_index

ligne 227
Code:

return if $data_actors.size < 2
#return if $game_party.actors.size < 2

ligne 263
Code:

$target_actor = $data_actors[@switcheur_window.index]  #$game_party.members[@switcheur_window.index]

ligne 279
Code:

    if Input.press?(SWITCHEUR_KEY) and $data_actors.size > 0 #$game_party.actors.size > 0

Quand je switch je vois bien tous les persos de la BDD alors que j'en ai qu'un dans mon équipe
Spoiler:

Cool! Mais quand j'en selectionne un pour changer d'apparence le jeu freeze... moins cool! Donc y a toujours un problème =/
Si quelqu'un pouvait jeter un coup d'oeil et m'aider je suis à deux doigts je pense !!!

Le code:
Spoiler:

EDIT(1) : J'ai refait des modifs ça marche toujours pas (modif de la ligne 263)

EDIT(piaf) :
piste 1 (merci TaZ) -> le jeu supporte pas que temporairement il n'y est aucun héro en jeu quand on switch hero_controlé <-> hero_bdd
piste 2 -> le jeu ne trouve pas l'équipement du hero_bdd
piste 3 -> le suicide collectif


Dernière édition par Electron le Lun 25 Juil 2011 - 11:48, édité 1 fois
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeDim 24 Juil 2011 - 18:35

Je ne suis pas sur de comprendre ce que tu cherches à faire...
1) Le switcheur doit afficher TOUS les héros dès le début du jeu?
2) Ton équipe (celle qui s'affiche dans le menu via Echap) doit contenir combien de héros? (toujours un seul? jusqu'à 4 héros? Tous?)
Revenir en haut Aller en bas
http://www.google.fr/
Electron
Poulet trizo Lv.3
Poulet trizo Lv.3
Electron


Masculin Age : 34
Inscrit le : 18/07/2011
Messages : 44

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeDim 24 Juil 2011 - 20:39

Bonjour Sihn,

Pour l'instant je veux effectivement afficher tous les héros de la BDD, je contrôlerais avec un array représentant des interrupteurs InGame l'arrivé de certains personnages (actuellement je pense que c'est dans mes cordes de codeur rgss)
Mon équipe (même si j'ai désactive le menu) ne doit comprendre qu'un personnage puisque sinon le train actor de l'ABS fera apparaître les quatre. Hors je ne veux vraiment qu'un personnage tout le long du jeu.

Pour essayer de comprendre je peux expliquer niveau "gameplay":
Mon protagoniste va se retrouver plonger dans une histoire de manipulation où il va devoir utiliser différents talents pour réussir des plateaux. Il commencera avec des aspects Force (le chara en un peu plus grand) Saut (le chara avec des chaussures d'hermès) Resistance (le chara en armure) Ce qui influe sur l'apparence du héros mais aussi son équipement et ses stats.
Petit à petit on pourra acheter, faire évoluer ou se voir attribuer de nouvelles apparences (Feu, Fantôme, ...)
Le switcheur me permet de rendre cela graphiquement sympa et fluide pour ne pas perdre de temps dans un plateau.
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeDim 24 Juil 2011 - 21:52

Je crois que je vois un peu mieux...
Je me disais, ne serait-ce pas plus pratique de juste désactiver le train actor de l'abs?
Car là au final, tu dois bidouiller un peu partout et te priver de commandes d'événements qui te faciliterais bien la tache... (ajout/suppr de héros te permettrais de contrôler facilement les talents de ton perso, sans avoir à jongler avec les switchs et les scripts)
Revenir en haut Aller en bas
http://www.google.fr/
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 7:30

Le problème, c'est que l'ABS est basé sur le train actor. Impossible de juste désactiver le train actor, ça pose problème dès qu'il faut changer de personnage.
Il crée des instances de joueurs selon l'équipe et les fait évoluer sur la map et on est obligé de passer par le train actor celui çi étant implanté directement dans l'ABS et n'étant pas une "option".

Ce serait trop lourd et trop chiant d'éditer tout cela étant donné que de base c'est codé n'importe comment.
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 8:17

Un script d'action-RPG basé sur... le train actor... oui, parfaitement logique...
Bon bah du coup, je vais voir ce que je peux faire avec mon script... X)

Donc... Electron!
Citation :
je contrôlerais avec un array représentant des interrupteurs InGame l'arrivé de certains personnages (actuellement je pense que c'est dans mes cordes de codeur rgss)

Est-ce que ce système est déjà au point, et si oui, comment l'utilises-tu? (en gros, pour le moment, comment fais-tu pour savoir si tel ou tel héros apparait ou non, et via quel script/variables/switch?)
Et sinon, est-ce que tu veux que je me charge d'inclure ce système dans le switcheur? (ça devrait pas être très compliqué je pense)
(après ça normalement, j'ai plus de question)
Revenir en haut Aller en bas
http://www.google.fr/
Electron
Poulet trizo Lv.3
Poulet trizo Lv.3
Electron


Masculin Age : 34
Inscrit le : 18/07/2011
Messages : 44

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 8:39

Bonjour,

Le système est pas encore en place j'ai juste penser à utiliser la plage 100 à 110 des variables.
Comme j'aimerais apprendre petit à petit à scripter et que je pense que c'est dans mes capacités actuelles tu n'es pas obligé.
Mais de ce que j'ai compris du script si je le met juste à la première boucle la vérification on ne devrait afficher et pouvoir utiliser que les héros en mode "true" dans l'array.
J'ai pensé aussi à le faire en variable pour prendre moins de place, du style : 0110000110 > 1 étant true, 0 false. Mais comme j'ai pensé que d'autres voudrait peut être utiliser le script etc... Je préfère le rendre casual!

Merci
Revenir en haut Aller en bas
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 8:43

Sihn a écrit:
Un script d'action-RPG basé sur... le train actor... oui, parfaitement logique...

C'est cool, je suis pas le seul à penser ça xD
En plus c'est codé n'importe comment, c'est pas la joie de fouiner dedans... ._.
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 8:55

Si je demande ça, c'est pour savoir d'où le switcheur doit sortir la liste de héros.
Pour ma part, je pensais plutôt à rajouter un tableau dans Game_Party, contenant la liste des talents utilisable (concrètement, la liste des héros sélectionnables).

Bon, je vais déjà voir ce que je peux faire.^^
Revenir en haut Aller en bas
http://www.google.fr/
Electron
Poulet trizo Lv.3
Poulet trizo Lv.3
Electron


Masculin Age : 34
Inscrit le : 18/07/2011
Messages : 44

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 9:01

Zangther m'avait parlé d'un deuxième Game_Party, j'ai orienté ça vers des switch puisque ça me semblait plus à mon niveau.
Si c'est plus simple et plus propre en instanciant un nouveau Game_Party je suis pas fine bouche surtout l'aide proposé!
Revenir en haut Aller en bas
Zangther
Maître des Duels
Maître des Duels
Zangther


Masculin Age : 32
Inscrit le : 29/07/2009
Messages : 7841

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 9:26

Plus précisément, je pensais qu'étant donné que l'ABS se basait sur $game_party. L'idée aurait été de gérer toute l'équipe dans une autre instance de Game_Party et de ne laisser que le leader ( le personnage actif ) dans l'équipe de base.
Revenir en haut Aller en bas
Sihn
Voyageur Lv.10
Voyageur Lv.10
Sihn


Masculin Age : 36
Inscrit le : 24/04/2009
Messages : 407

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 10:35

Un deuxième Game_Party? Arf, ça va être chiant pour les sauvegardes, ça. X)

Bon, j'ai un premier script à te faire tester... (tu verras pourquoi je dis premier)
Code:
#=============================================================================
# Switcheur de héros
#-------------------------------------------------------------------
# Créé par Sihn, à partir du menu tournant de MakirouAru
# Conçu pour RMVX
# Basé sur la version 2.4
# Modifié pour Electron
# http://rpg-maker-vx.bbactif.com/t4431-vx-switcheur-de-heros-changer-de-leader-en-cours-de-jeu
#=============================================================================

# Touche d'activation (Changez uniquement le Y)
SWITCHEUR_KEY = Input::Y

# Son lors de l'apparition du switcheur
SE_START = "Decision2"

# Animation à jouer sur le héros si changement de celui-ci
ID_ANIMATION = 41

# Durée en frame de l'apparition du switcheur
TRANS_FRAMES = 15

# Durée en frame de la rotation entre deux héros du switcheur
MOVING_FRAMES = 10

# Rayon en pixel
RAYON = 64

# true : En forme d'élipse / false : En forme de cercle
ELIPSE = true

# true : Appuyez sur le bouton / false : Maintenez le bouton
AUTO_KEY = true

#=============================================================================
# Game_Interpreter
#-------------------------------------------------------------------
# Permet d'appeler les fonctions des talents via des commandes "Insérer un script" sans
# avoir à les préfixer de $game_party.
#=============================================================================
class Game_Interpreter
  def ajouter_talent(id)
    $game_party.ajouter_talent(id)
  end
 
  def retirer_talent(id)
    $game_party.retirer_talent(id)
  end
 
  def possede_talent?(id)
    $game_party.possede_talent?(id)
  end
end

#=============================================================================
# Game_Party
#-------------------------------------------------------------------
# Ajout de la gestion des talents
#=============================================================================
class Game_Party < Game_Unit
  MAX_MEMBERS = 1
  attr_accessor :actors
 
  alias initialize_talents initialize
  def initialize
    initialize_talents
    @talents = []
  end
 
  alias setup_starting_members_talents setup_starting_members
  def setup_starting_members
    setup_starting_members_talents
    for i in $data_system.party_members
      @talents.push(i)
    end
  end
 
  def ajouter_talent(id)
    unless @talents.include?(id) and id.between?(1, $data_actors.size - 1)
      @talents.push(id)
      @talents.sort!
    end
  end
 
  def retirer_talent(id)
    @talents.delete(id)
  end
 
  def possede_talent?(id)
    return @talents.include?(id)
  end
 
  def get_talents
    actors = []
    for actor_id in @talents
      actors.push($game_actors[actor_id])
    end
    return actors
  end
end

#=============================================================================
# Game_Temp
#=============================================================================
class Game_Temp
  attr_accessor :switcheur_result
 
  alias initialize_switcheur_result initialize
  def initialize
    initialize_switcheur_result
    @switcheur_result = false
  end
end

#=============================================================================
# Window_Switcheur
#=============================================================================
class Window_Switcheur < Window_Base
  attr_accessor :index
 
  def initialize
    super(-16, -16, 576, 448)
    self.contents = Bitmap.new(width-32, height-32)
    self.contents.font.name = "Arial"
    self.opacity = 0
    self.back_opacity = 0
    @commands = []
    @items = []
    for actor in $game_party.get_talents
      @commands.push(actor.name)
      @items.push(Cache.character(actor.character_name))
    end
    @item_max = @commands.size
    @index = 0
    @cx = $game_player.screen_x + 16
    @cy = $game_player.screen_y - 8
    setup_move_start
    refresh
  end
 
  def update
    super
    if @mode < 5
      if Input.trigger?(Input::UP) or Input.trigger?(Input::LEFT)
        Sound.play_cursor
        ELIPSE ? setup_move_move(3) : setup_move_move(4)
        return
      elsif Input.trigger?(Input::DOWN) or Input.trigger?(Input::RIGHT)
        Sound.play_cursor
        ELIPSE ? setup_move_move(4) : setup_move_move(3)
        return
      elsif Input.trigger?(Input::B) and AUTO_KEY
        Sound.play_cancel
        $game_temp.switcheur_result = false
        setup_move_end
        return
      elsif AUTO_KEY
        if Input.trigger?(Input::C) or Input.trigger?(SWITCHEUR_KEY)
          Sound.play_decision
          $game_temp.switcheur_result = true
          setup_move_end
          return
        end
      else
        unless Input.press?(SWITCHEUR_KEY)
          Sound.play_decision
          $game_temp.switcheur_result = true
          setup_move_end
          return
        end
      end
    end
    refresh
  end
 
  def refresh
    self.contents.clear
    case @mode
    when 1
      refresh_start
    when 2
      refresh_wait
    when 3
      refresh_move(1)
    when 4
      refresh_move(0)
    when 5
      refresh_end
    end
    if @mode != 6
      cy = ELIPSE ? 32 : 0
      rect = Rect.new(@cx - 272, @cy + cy, self.contents.width - 32, 32)
      self.contents.draw_text(rect, @commands[@index], 1)
    else
      dispose
    end
  end
 
  def refresh_start
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / TRANS_FRAMES
    r = RAYON - 1.0 * RAYON * @steps / TRANS_FRAMES
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + (r * Math.sin(d)).to_i
      y = @cy - ((r * Math.cos(d)).to_i / elipse)
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = 2
    end
  end
 
  def refresh_wait
    d = 2.0 * Math::PI / @item_max
    for i in 0...@item_max
      j = i - @index
      x = @cx + (RAYON * Math.sin(d * j)).to_i
      y = @cy - ((RAYON * Math.cos(d * j)).to_i / elipse)
      draw_item(x, y, i)
    end
  end
 
  def refresh_move(mode)
    d1 = 2.0 * Math::PI / @item_max
    d2 = d1 / MOVING_FRAMES
    d2 *= -1 if mode != 0
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + (RAYON * Math.sin(d)).to_i
      y = @cy - ((RAYON * Math.cos(d)).to_i / elipse)
      draw_item(x, y, i)
    end
    @steps -= 1
    if @steps < 1
      @mode = 2
    end
  end
 
  def refresh_end
    d1 = 2.0 * Math::PI / @item_max
    d2 = 1.0 * Math::PI / TRANS_FRAMES
    r = RAYON - 1.0 * RAYON * @steps / TRANS_FRAMES
    for i in 0...@item_max
      j = i - @index
      d = d1 * j + d2 * @steps
      x = @cx + (r * Math.sin(d)).to_i
      y = @cy - ((r * Math.cos(d)).to_i / elipse)
      draw_item(x, y, i)
    end
    @steps += 1
    if @steps > TRANS_FRAMES
      @mode = 6
    end
  end
 
  def draw_item(x, y, i)
    item = @items[i]
    actor = $game_party.get_talents[i]
    if actor.character_name.include?("$")
      rect = Rect.new(item.width / 3, 0, item.width / 3, item.height / 4)
      opa = @index == i ? 255 : 128
      self.contents.blt(x - item.width / 3, y - item.height / 4, item, rect, opa)
    else
      index = actor.character_index
      rect = Rect.new((item.width / 4) * (index % 4) + (item.width / 12), (item.height / 2) * (index / 4 % 2), item.width / 12, item.height / 8)
      opa = @index == i ? 255 : 128
      self.contents.blt(x - item.width / 12, y - item.height / 8, item, rect, opa)
    end
  end
 
  def setup_move_start
    @mode = 1
    @steps = TRANS_FRAMES
  end
 
  def setup_move_move(mode)
    return if $game_party.get_talents.size < 2
    if mode == 3
      @index -= 1
      @index = @items.size - 1 if @index < 0
    elsif mode == 4
      @index += 1
      @index = 0 if @index >= @items.size
    else
      return
    end
    @mode = mode
    @steps = MOVING_FRAMES
  end
 
  def setup_move_end
    @mode = 5
    @steps = 0
  end
 
  def elipse
    return ELIPSE ? -2 : 1
  end
end

#=============================================================================
# Scene_Map
#=============================================================================
class Scene_Map < Scene_Base
  alias ring_system_update update
  def update
    if @switcheur_window != nil
      if @switcheur_window.disposed?
        if $game_temp.switcheur_result
          $game_party.actors[0] = $game_party.get_talents[@switcheur_window.index].id
          $game_player.animation_id = ID_ANIMATION
          $game_player.refresh
        end
        $game_temp.switcheur_result = false
        @switcheur_window = nil
      else
        @switcheur_window.update
      end
      return
    end
    if Input.trigger?(SWITCHEUR_KEY)
      if $game_party.get_talents.size > 1
        if SE_START != nil and SE_START != ""
          Audio.se_play("Audio/SE/" + SE_START, 80, 100)
        end
        @switcheur_window = Window_Switcheur.new
      else
        Sound.play_buzzer
      end
    end
    ring_system_update
  end
end

Tiens, essayes donc ce script. :3
Pour rajouter/supprimer des talents, utilises :

Code:
ajouter_talent(id_du_héros_ici)
retirer_talent(id_du_héros_ici)

Tu peux aussi faire des conditions avec :

Code:
possede_talent(id_du_héros_ici)

Par contre je te préviens, ce script réduit le maximum de héros contenu dans l'équipe à... 1. Tu peux avoir autant de talent que tu le veux, mais le héros ne peux plus avoir de coéquipier. Est-ce que ça pose problème pour ton jeu? (j'ai cru comprendre que tu ne contrôlerais qu'un seul perso, mais je préfère être sur)
Revenir en haut Aller en bas
http://www.google.fr/
Electron
Poulet trizo Lv.3
Poulet trizo Lv.3
Electron


Masculin Age : 34
Inscrit le : 18/07/2011
Messages : 44

Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitimeLun 25 Juil 2011 - 11:47

Le script fonctionne très bien.

Un détail à rajouter, que Blocky m'avait signalé, si d'autres veulent utiliser c'est que la table des héros va de 1 à x héros (et non pas de 0 à x-1 comme la "logique" le voudrait)

Pour ce qui est de l'arrivé des pouvoirs elle est encore mieux que si j'avais géré par variables, donc c'est parfait!

Le talent importe bien les équipements et les talents des différents héros. C'est donc exactement ce que je souhaitais.

Je te remercie d'avoir pris de ton temps pour réaliser ce script, et je remercie aussi Zangther et Blockade de m'avoir aidé à comprendre rgss pour que j'essaye de le réaliser (ça viendra ^^)

Revenir en haut Aller en bas
Contenu sponsorisé




Amélioration de scripts [Resolu] Empty
MessageSujet: Re: Amélioration de scripts [Resolu]   Amélioration de scripts [Resolu] Icon_minitime

Revenir en haut Aller en bas
 

Amélioration de scripts [Resolu]

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Incompatibilité de scripts[résolu(par moi même o/)]
» [Résolu] Problème de scripts
» Recherche 2 scripts [Résolu]
» [Résolu - Merci Sihn !] Incompatibilité entre deux scripts...
» Scripts, obligé? [Résolu]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Problèmes et Solutions :: Résolu-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Cookies | Forum gratuit