~ S'évader de la banalité... Et entrer dans l'imaginaire ! ~
 
AccueilGuelnika, le site de E-m !S'enregistrerConnexion

Partagez | 
 

 Questions en vrac sur XP

Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6
AuteurMessage
redfox59
RTP de base Lv 1
RTP de base Lv 1


Nombre de messages : 16

MessageSujet: Re: Questions en vrac sur XP   Mar 13 Déc 2016, 00:12

Alors en effet mes flèches et bombes sont des items, ont peut en acheté et vendre,
ont peut en trouvé sur des ennemies (lorsqu'ils meurent ils laisse tombé un trésor) ,au sol et dans des coffres.

Je voudrais préciser que j'utilise RPG Maker XP XAS (3.82) et le script Xas calcul déjà les soustractions
de flèches quand j'en utilise une ou plusieurs mais comme le jeu définit une limite pas défaut de 99,
je me retrouve avec 99 flèches, 99 bombes, 99 potions... ce qui est bien en soi
mais ce que j'aimerai faire c'est bridé ces 99 unités à 30 pour commencer puis à 50 ainsi de suite.
Imaginez les possibilités si je pouvais maîtrisé cela Note
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Mar 13 Déc 2016, 15:09

Donc c'est pas en event... Puisque tu utilises un script !

Le problème des scripts c'est qu'ils sont souvent mal commentés, là tu vas devoir trouver la variable qui correspond à la limite par défaut de l'objet [a] (admettons "flèches" ou "bombes") et changer sa valeur pour "30" au lieu de "99".

Je suppose que c'est pour un A-RPG (l'action comme dans un Zelda, quoi ?) ?
Très franchement je ne pourrais que trop te conseiller, si tu ne sais pas toi-même déjà un peu coder ou si tu ne t'intéresses pas un minimum à la programmation, d'oublier l'utilisation de Scripts. J'ai plusieurs solutions à te proposer, en attendant que tu nous ai décrit un peu plus en profondeur le gameplay de ton jeu pour qu'on puisse t'aider vraiment:

1) Tu veux faire un jeu dont les mécaniques de Gameplay sont tout bonnement celles d'un Zelda ?
   - Apprends à utiliser le logiciel zQuest qui est prévu pour, tu trouveras sur e-magination des
     tutoriels pour débuter, en Français.
   - Oublie les scripts et tente de coder ce système en Events (ce sera imprécis mais t'arriveras
     plus vite à quelque chose... De relativement injouable et / ou moche) avec RPG Maker.
   - Lance toi dans le Ruby / RGSS, comprends les rudiments de la programmation et modifie ton
     script RPG Maker.

2) Tu veux faire un RPG avec des objets limités utilisables en combat:
   - Utilises les "MP" en guise d'unité d'objet (1 MP = 1 flèche, 30 MP Max. Niveau 2 60 MP Max...)
   - Utilises simplement une variable de référence avec une valeur de "30" pour commencer ... Et je me rends compte que ce que je suis en train de t'expliquer là est certainement très chiant à comprendre donc je vais attendre que tu nous ai vraiment décris le gameplay de ton jeu, ce que tu aimerais vraiment, concrètement, qu'il se passe dans ton jeu, pour te répondre... Lol.


Tu peux aussi, par exemple, nous copier coller le script que tu utilises, pour qu'on y voit plus clair et qu'éventuellement, on te le modifie.
Revenir en haut Aller en bas
Relm
Comant on enleve le vert autoure du hero??? Lv 0,5
Comant on enleve le vert autoure du hero??? Lv 0,5
avatar

Nombre de messages : 40866

MessageSujet: Re: Questions en vrac sur XP   Mar 13 Déc 2016, 16:24

Si on peut acheter des flèches et bombes à l'unité via les magasins de base de RM, je pense que c'est fichu.
Bon, presque personne utilise des scripts ici de toute manière car on sait généralement faire sans, donc je crois que la meilleure façon pour toi c'est d'apprendre les scripts si tu veux en utiliser (mais ce serait finalement mieux d'apprendre les events lol).


____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Mar 13 Déc 2016, 16:37

Y a pas besoin d'apprendre la programmation pour créer un système pareil. Avec RPG Maker tu peux clairement faire ça en Event sans trop te prendre la tête donc oui, c'est mieux qu'il apprenne à faker correctement en événements ^^ Mais généralement les gens qui ont goûté à la simplicité d'inclure un script codé par autrui dans leur projet n'ont pas spécialement envie d'apprendre à faker en Event.

Mais bon là c'est clairement juste l'histoire de deux pauvres variables, une qui définit la quantité max d'objets qu'il peut posséder et l'autre qui définit le nombre d'objets justement possédés. Après avec une simple condition "Si objets > nombre_autorisé" on fait revenir le nombre d'objets au strict maximum.
Y a clairement pas besoin d'un script pour ça, Rm gère ça très bien dans ses fonctions de base.

Toujours est-il que s'il veut faire un Zelda, on peut l'orienter vers Zquest, n'est-ce pas ? Cool
Revenir en haut Aller en bas
Relm
Comant on enleve le vert autoure du hero??? Lv 0,5
Comant on enleve le vert autoure du hero??? Lv 0,5
avatar

Nombre de messages : 40866

MessageSujet: Re: Questions en vrac sur XP   Mar 13 Déc 2016, 17:23

Le seul problème avec ça c'est qu'il doit éviter les shops de base de RM où tu peux acheter 99 exemplaires des items d'un coup. (on perdrait de l'argent en faisant ça).


____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Mar 13 Déc 2016, 17:52

En effet, il faudra qu'il customise son propre shop mais c'est pas bien compliqué, là encore ça tient sur quelques bêtes variables, la boite de dialogue et de choix multiples (surtout pour un Shop "Zelda-Like" où généralement on n'a que 3,4 items par spot). =]
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Mer 14 Déc 2016, 00:28

Tout d'abord laissez-moi vous remercier pour l'aide que vous me confierez Smile

Pour ce qui est de changer de logiciel, je ne peut envisager une telle option
car voyez-vous j'estime que j'ai consacré pas mal de temps sur ce projet et j'estime aussi
que j'ai très bien avancé snif snif ouin

Tout ce que je demande c'est ce tout petit détail de rien du tout certes
mais qui donnera plus de perspective à mon projet...

Maintenant si cela n'est pas possible tant pis le joueur commencera à collecter des flèches
jusqu'à 99 unités.
Pour ma part je trouve cela vraiment dommage...
néanmoins j'ai trouvé deux scripts d'origine concernant la limite d'objets maximal et pour l'autre script
il s'agit je pense de la partie concernant les shops.

Voici le script "Game_Party" ici il est question des limites d'objet et j'aimerais avoir votre avis
sur les lignes 176 à 181.
Code:
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold
#  and items. Refer to "$game_party" for the instance of this class.
#==============================================================================

class Game_Party
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :actors                   # actors
  attr_reader   :gold                     # amount of gold
  attr_reader   :steps                    # number of steps
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    # Create actor array
    @actors = []
    # Initialize amount of gold and steps
    @gold = 0
    @steps = 0
    # Create amount in possession hash for items, weapons, and armor
    @items = {}
    @weapons = {}
    @armors = {}
  end
  #--------------------------------------------------------------------------
  # * Initial Party Setup
  #--------------------------------------------------------------------------
  def setup_starting_members
    @actors = []
    for i in $data_system.party_members
      @actors.push($game_actors[i])
    end
  end
  #--------------------------------------------------------------------------
  # * Battle Test Party Setup
  #--------------------------------------------------------------------------
  def setup_battle_test_members
    @actors = []
    for battler in $data_system.test_battlers
      actor = $game_actors[battler.actor_id]
      actor.level = battler.level
      gain_weapon(battler.weapon_id, 1)
      gain_armor(battler.armor1_id, 1)
      gain_armor(battler.armor2_id, 1)
      gain_armor(battler.armor3_id, 1)
      gain_armor(battler.armor4_id, 1)
      actor.equip(0, battler.weapon_id)
      actor.equip(1, battler.armor1_id)
      actor.equip(2, battler.armor2_id)
      actor.equip(3, battler.armor3_id)
      actor.equip(4, battler.armor4_id)
      actor.recover_all
      @actors.push(actor)
    end
    @items = {}
    for i in 1...$data_items.size
      if $data_items[i].name != ""
        occasion = $data_items[i].occasion
        if occasion == 0 or occasion == 1
          @items[i] = 99
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh Party Members
  #--------------------------------------------------------------------------
  def refresh
    # Actor objects split from $game_actors right after loading game data
    # Avoid this problem by resetting the actors each time data is loaded.
    new_actors = []
    for i in 0...@actors.size
      if $data_actors[@actors[i].id] != nil
        new_actors.push($game_actors[@actors[i].id])
      end
    end
    @actors = new_actors
  end
  #--------------------------------------------------------------------------
  # * Getting Maximum Level
  #--------------------------------------------------------------------------
  def max_level
    # If 0 members are in the party
    if @actors.size == 0
      return 0
    end
    # Initialize local variable: level
    level = 0
    # Get maximum level of party members
    for actor in @actors
      if level < actor.level
        level = actor.level
      end
    end
    return level
  end
  #--------------------------------------------------------------------------
  # * Add an Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def add_actor(actor_id)
    # Get actor
    actor = $game_actors[actor_id]
    # If the party has less than 4 members and this actor is not in the party
    if @actors.size < 4 and not @actors.include?(actor)
      # Add actor
      @actors.push(actor)
      # Refresh player
      $game_player.refresh
    end
  end
  #--------------------------------------------------------------------------
  # * Remove Actor
  #     actor_id : actor ID
  #--------------------------------------------------------------------------
  def remove_actor(actor_id)
    # Delete actor
    @actors.delete($game_actors[actor_id])
    # Refresh player
    $game_player.refresh
  end
  #--------------------------------------------------------------------------
  # * Gain Gold (or lose)
  #     n : amount of gold
  #--------------------------------------------------------------------------
  def gain_gold(n)
    @gold = [[@gold + n, 0].max, 9999999].min
  end
  #--------------------------------------------------------------------------
  # * Lose Gold
  #     n : amount of gold
  #--------------------------------------------------------------------------
  def lose_gold(n)
    # Reverse the numerical value and call it gain_gold
    gain_gold(-n)
  end
  #--------------------------------------------------------------------------
  # * Increase Steps
  #--------------------------------------------------------------------------
  def increase_steps
    @steps = [@steps + 1, 9999999].min
  end
  #--------------------------------------------------------------------------
  # * Get Number of Items Possessed
  #     item_id : item ID
  #--------------------------------------------------------------------------
  def item_number(item_id)
    # If quantity data is in the hash, use it. If not, return 0
    return @items.include?(item_id) ? @items[item_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Get Number of Weapons Possessed
  #     weapon_id : weapon ID
  #--------------------------------------------------------------------------
  def weapon_number(weapon_id)
    # If quantity data is in the hash, use it. If not, return 0
    return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Get Amount of Armor Possessed
  #     armor_id : armor ID
  #--------------------------------------------------------------------------
  def armor_number(armor_id)
    # If quantity data is in the hash, use it. If not, return 0
    return @armors.include?(armor_id) ? @armors[armor_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Gain Items (or lose)
  #     item_id : item ID
  #     n       : quantity
  #--------------------------------------------------------------------------
  def gain_item(item_id, n)
    # Update quantity data in the hash.
    if item_id > 0
      @items[item_id] = [[item_number(item_id) + n, 0].max, 30].min
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Weapons (or lose)
  #     weapon_id : weapon ID
  #     n         : quantity
  #--------------------------------------------------------------------------
  def gain_weapon(weapon_id, n)
    # Update quantity data in the hash.
    if weapon_id > 0
      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Armor (or lose)
  #     armor_id : armor ID
  #     n        : quantity
  #--------------------------------------------------------------------------
  def gain_armor(armor_id, n)
    # Update quantity data in the hash.
    if armor_id > 0
      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Lose Items
  #     item_id : item ID
  #     n       : quantity
  #--------------------------------------------------------------------------
  def lose_item(item_id, n)
    # Reverse the numerical value and call it gain_item
    gain_item(item_id, -n)
  end
  #--------------------------------------------------------------------------
  # * Lose Weapons
  #     weapon_id : weapon ID
  #     n         : quantity
  #--------------------------------------------------------------------------
  def lose_weapon(weapon_id, n)
    # Reverse the numerical value and call it gain_weapon
    gain_weapon(weapon_id, -n)
  end
  #--------------------------------------------------------------------------
  # * Lose Armor
  #     armor_id : armor ID
  #     n        : quantity
  #--------------------------------------------------------------------------
  def lose_armor(armor_id, n)
    # Reverse the numerical value and call it gain_armor
    gain_armor(armor_id, -n)
  end
  #--------------------------------------------------------------------------
  # * Determine if Item is Usable
  #     item_id : item ID
  #--------------------------------------------------------------------------
  def item_can_use?(item_id)
    # If item quantity is 0
    if item_number(item_id) == 0
      # Unusable
      return false
    end
    # Get usable time
    occasion = $data_items[item_id].occasion
    # If in battle
    if $game_temp.in_battle
      # If useable time is 0 (normal) or 1 (only battle) it's usable
      return (occasion == 0 or occasion == 1)
    end
    # If useable time is 0 (normal) or 2 (only menu) it's usable
    return (occasion == 0 or occasion == 2)
  end
  #--------------------------------------------------------------------------
  # * Clear All Member Actions
  #--------------------------------------------------------------------------
  def clear_actions
    # Clear All Member Actions
    for actor in @actors
      actor.current_action.clear
    end
  end
  #--------------------------------------------------------------------------
  # * Determine if Command is Inputable
  #--------------------------------------------------------------------------
  def inputable?
    # Return true if input is possible for one person as well
    for actor in @actors
      if actor.inputable?
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # * Determine Everyone is Dead
  #--------------------------------------------------------------------------
  def all_dead?
    # If number of party members is 0
    if $game_party.actors.size == 0
      return false
    end
    # If an actor is in the party with 0 or more HP
    for actor in @actors
      if actor.hp > 0
        return false
      end
    end
    # All members dead
    return true
  end
  #--------------------------------------------------------------------------
  # * Slip Damage Check (for map)
  #--------------------------------------------------------------------------
  def check_map_slip_damage
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
        actor.hp -= [actor.maxhp / 100, 1].max
        if actor.hp == 0
          $game_system.se_play($data_system.actor_collapse_se)
        end
        $game_screen.start_flash(Color.new(255,0,0,128), 4)
        $game_temp.gameover = $game_party.all_dead?
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Random Selection of Target Actor
  #     hp0 : limited to actors with 0 HP
  #--------------------------------------------------------------------------
  def random_target_actor(hp0 = false)
    # Initialize roulette
    roulette = []
    # Loop
    for actor in @actors
      # If it fits the conditions
      if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
        # Get actor class [position]
        position = $data_classes[actor.class_id].position
        # Front guard: n = 4; Mid guard: n = 3; Rear guard: n = 2
        n = 4 - position
        # Add actor to roulette n times
        n.times do
          roulette.push(actor)
        end
      end
    end
    # If roulette size is 0
    if roulette.size == 0
      return nil
    end
    # Spin the roulette, choose an actor
    return roulette[rand(roulette.size)]
  end
  #--------------------------------------------------------------------------
  # * Random Selection of Target Actor (HP 0)
  #--------------------------------------------------------------------------
  def random_target_actor_hp0
    return random_target_actor(true)
  end
  #--------------------------------------------------------------------------
  # * Smooth Selection of Target Actor
  #     actor_index : actor index
  #--------------------------------------------------------------------------
  def smooth_target_actor(actor_index)
    # Get an actor
    actor = @actors[actor_index]
    # If an actor exists
    if actor != nil and actor.exist?
      return actor
    end
    # Loop
    for actor in @actors
      # If an actor exists
      if actor.exist?
        return actor
      end
    end
  end
end


Quant à ici "Scene_Shop" pour le problème des shops je n'en suis pas si sûr (ligne 184)oops
Code:
#==============================================================================
# ** Scene_Shop
#------------------------------------------------------------------------------
#  This class performs shop screen processing.
#==============================================================================

class Scene_Shop
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make help window
    @help_window = Window_Help.new
    # Make command window
    @command_window = Window_ShopCommand.new
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 480
    @gold_window.y = 64
    # Make dummy window
    @dummy_window = Window_Base.new(0, 128, 640, 352)
    # Make buy window
    @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
    @buy_window.active = false
    @buy_window.visible = false
    @buy_window.help_window = @help_window
    # Make sell window
    @sell_window = Window_ShopSell.new
    @sell_window.active = false
    @sell_window.visible = false
    @sell_window.help_window = @help_window
    # Make quantity input window
    @number_window = Window_ShopNumber.new
    @number_window.active = false
    @number_window.visible = false
    # Make status window
    @status_window = Window_ShopStatus.new
    @status_window.visible = false
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @help_window.dispose
    @command_window.dispose
    @gold_window.dispose
    @dummy_window.dispose
    @buy_window.dispose
    @sell_window.dispose
    @number_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @help_window.update
    @command_window.update
    @gold_window.update
    @dummy_window.update
    @buy_window.update
    @sell_window.update
    @number_window.update
    @status_window.update
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If buy window is active: call update_buy
    if @buy_window.active
      update_buy
      return
    end
    # If sell window is active: call update_sell
    if @sell_window.active
      update_sell
      return
    end
    # If quantity input window is active: call update_number
    if @number_window.active
      update_number
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when command window is active)
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 0  # buy
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Change windows to buy mode
        @command_window.active = false
        @dummy_window.visible = false
        @buy_window.active = true
        @buy_window.visible = true
        @buy_window.refresh
        @status_window.visible = true
      when 1  # sell
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Change windows to sell mode
        @command_window.active = false
        @dummy_window.visible = false
        @sell_window.active = true
        @sell_window.visible = true
        @sell_window.refresh
      when 2  # quit
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to map screen
        $scene = Scene_Map.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when buy window is active)
  #--------------------------------------------------------------------------
  def update_buy
    # Set status window item
    @status_window.item = @buy_window.item
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Change windows to initial mode
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      # Erase help text
      @help_window.set_text("")
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get item
      @item = @buy_window.item
      # If item is invalid, or price is higher than money possessed
      if @item == nil or @item.price > $game_party.gold
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Get items in possession count
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      # If 99 items are already in possession
      if number == 99
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Calculate maximum amount possible to buy
      max = @item.price == 0 ? 99 : $game_party.gold / @item.price
      max = [max, 99 - number].min
      # Change windows to quantity input mode
      @buy_window.active = false
      @buy_window.visible = false
      @number_window.set(@item, max, @item.price)
      @number_window.active = true
      @number_window.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when sell window is active)
  #--------------------------------------------------------------------------
  def update_sell
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Change windows to initial mode
      @command_window.active = true
      @dummy_window.visible = true
      @sell_window.active = false
      @sell_window.visible = false
      @status_window.item = nil
      # Erase help text
      @help_window.set_text("")
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Get item
      @item = @sell_window.item
      # Set status window item
      @status_window.item = @item
      # If item is invalid, or item price is 0 (unable to sell)
      if @item == nil or @item.price == 0
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Get items in possession count
      case @item
      when RPG::Item
        number = $game_party.item_number(@item.id)
      when RPG::Weapon
        number = $game_party.weapon_number(@item.id)
      when RPG::Armor
        number = $game_party.armor_number(@item.id)
      end
      # Maximum quanitity to sell = number of items in possession
      max = number
      # Change windows to quantity input mode
      @sell_window.active = false
      @sell_window.visible = false
      @number_window.set(@item, max, @item.price / 2)
      @number_window.active = true
      @number_window.visible = true
      @status_window.visible = true
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when quantity input window is active)
  #--------------------------------------------------------------------------
  def update_number
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Set quantity input window to inactive / invisible
      @number_window.active = false
      @number_window.visible = false
      # Branch by command window cursor position
      case @command_window.index
      when 0  # buy
        # Change windows to buy mode
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # sell
        # Change windows to sell mode
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Play shop SE
      $game_system.se_play($data_system.shop_se)
      # Set quantity input window to inactive / invisible
      @number_window.active = false
      @number_window.visible = false
      # Branch by command window cursor position
      case @command_window.index
      when 0  # buy
        # Buy process
        $game_party.lose_gold(@number_window.number * @item.price)
        case @item
        when RPG::Item
          $game_party.gain_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.gain_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.gain_armor(@item.id, @number_window.number)
        end
        # Refresh each window
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        # Change windows to buy mode
        @buy_window.active = true
        @buy_window.visible = true
      when 1  # sell
        # Sell process
        $game_party.gain_gold(@number_window.number * (@item.price / 2))
        case @item
        when RPG::Item
          $game_party.lose_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.lose_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.lose_armor(@item.id, @number_window.number)
        end
        # Refresh each window
        @gold_window.refresh
        @sell_window.refresh
        @status_window.refresh
        # Change windows to sell mode
        @sell_window.active = true
        @sell_window.visible = true
        @status_window.visible = false
      end
      return
    end
  end
end

Mais permettez-moi de vous informez que Xas ne vient en aucun cas interférer
sur les scripts d'origine.
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Mer 14 Déc 2016, 15:51

Je pense que tu n'as pas à toucher au script "Scene_Shop" puisqu'il fait lui-même référence au Game_Party qui définit la limite d'objets qu'on peut posséder:

Code:

@items[i] = 99


Dans le Scene_shop:

Code:
when 0  # buy
        # Buy process
        $game_party.lose_gold(@number_window.number * @item.price)
        case @item
        when RPG::Item
          $game_party.gain_item(@item.id, @number_window.number)
        when RPG::Weapon
          $game_party.gain_weapon(@item.id, @number_window.number)
        when RPG::Armor
          $game_party.gain_armor(@item.id, @number_window.number)
        end
        # Refresh each window
        @gold_window.refresh
        @buy_window.refresh
        @status_window.refresh
        # Change windows to buy mode
        @buy_window.active = true
        @buy_window.visible = true

On a juste un appel de "Case @item", on n'a pas de comparaison directe de valeurs. Donc si tu changes le "@item[i] = 99" pour "@item[i] = 30" dans le Game_Party, quand le joueur voudra acheter des flèches en en ayant déjà 30 dans son stock, l'option devrait être grisée.

Si ça fonctionne il restera tout de même un problème à solutionner, tu devras être en mesure de pouvoir redéfinir cette valeur quand le joueur aura une upgrade (et faire passer de 30 à 60, par exemple) et ça, je ne sais pas comment on fait avec RPG Maker, en Event, je n'utilise que trèèèès rarement (pour ne pas dire "jamais") des versions supérieures à 2K3.

Je peux me tromper car j'ai beau connaître le Ruby (grosso merdo, je connais d'autres langages et c'est plus ou moins le même merdier) je n'ai jamais scripté vraiment pour RPG Maker...

Sinon tu peux aussi créer un événement en processus parallèle (un événement commun) qui checkerait continuellement si le nombre d'objets possédés n'excède pas la quantité autorisée et dans le cas contraire, retire "x" objet(s) au stock du joueur. Pour optimiser tu pourras activer ce processus uniquement lors de passages aux shops. Restera deux problèmes à régler, avec cette solution:

1) Les pertes d'argent du joueur (va falloir être créatif).
2) L'esthétique (Le joueur pourra bel et bien dépasser son quota mais une fois hors du shop, il reviendra au maximum autorisé ... Ca fait un peu "sale").
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Jeu 15 Déc 2016, 13:37

Je vois... Crying or Very sad

Merci pour ton aide en tout cas. Je vais continuer mes recherches en espérant trouver un jour la solution.

Je reste ouvert à toute autre solution... Encore une fois merci beaucoup.
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Jeu 15 Déc 2016, 15:46

Bin, t'as essayé de changer la valeur de @item[i] au moins ? Et quoi, ça marche pas ?
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Jeu 15 Déc 2016, 17:29

Lorsque je change la valeur "@item[i] = 99" pour "@item[i] = 30" ça fonctionne la dessus c'est nickel.
mais le problème est pour le upgrade. Il faudrait juste modifier cette petite portion du script pour expliquer que lorsque l'objet carquois d'argent est possédé, ont augmente
"@item[i] = 30" pour "@item[i] = 60". Et ça malheureusement je ne sais pas faire Grrr !

@KoZzY a écrit:
Sinon tu peux aussi créer un événement en processus parallèle (un événement commun) qui checkerait continuellement si le nombre d'objets possédés n'excède pas la quantité autorisée et dans le cas contraire, retire "x" objet(s) au stock du joueur. Pour optimiser tu pourras activer ce processus uniquement lors de passages aux shops. Restera deux problèmes à régler, avec cette solution:

J'oriente justement mes recherches dans cette direction mais le problème
est que lorsque j'ajoute ou retire l'objet en question (les flèches) cela le fait en répétition
comme c'est en processus parallèle.
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Dim 18 Déc 2016, 20:43

En événement, dans "Appeler un Script" essaye:

Code:
@item[i] = 60

En cliquant sur cet événement, le joueur changera la valeur de la variable lui-même... Enfin, je l'espère. Si ça marche pas, je réinstallerai Xp et on trouvera bien une solution.

ps: Si ta tentative d'événements communs tourne en boucle et l'affiche (te retire tes flèches non-stop) c'est qu'il manque une condition quelque part dans ton code ou que cette dernière n'est pas correctement paramétrée.
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Mar 20 Déc 2016, 21:54

Alors j'ai essayé d'entrer ce code mais en vain mon ordinateur m'insulte silent
J'ai aussi tenté de modifier quelque portions de code, rien à faire.

Ceci dit si tu compte réinstallerai Xp laisse moi te proposé ce lien Xas v3.82 comme ça tu pourras voir directement se que ça donne, n'est-ce pas ?

https://xasabs.wordpress.com/xp/
Revenir en haut Aller en bas
Relm
Comant on enleve le vert autoure du hero??? Lv 0,5
Comant on enleve le vert autoure du hero??? Lv 0,5
avatar

Nombre de messages : 40866

MessageSujet: Re: Questions en vrac sur XP   Mar 20 Déc 2016, 22:38

En fait je ne pense pas que tu as répondu à ma question précisement.

Quand tu mets en vente tes flèches ou bombes c'est via un système de boutique de base ? Celui qui est déjà tout fait par RM et accessible via un simple event "appeler boutique" (ou un truc du genre).

____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Mar 20 Déc 2016, 23:01

Pour te répondre précisément, oui en effet j'utilise par défaut la boutique RM XP.
Je parle avec un évent puis "ouvrir un magasin".

Mais cela ne me dérange pas de modifier la boutique avec des articles déjà posé sur un comptoir
et lorsqu'on presse la touche il faut allé payé l'article à la caisse par exemple...
Revenir en haut Aller en bas
Relm
Comant on enleve le vert autoure du hero??? Lv 0,5
Comant on enleve le vert autoure du hero??? Lv 0,5
avatar

Nombre de messages : 40866

MessageSujet: Re: Questions en vrac sur XP   Mar 20 Déc 2016, 23:29

Dans ce cas, tu peux facilement t'en sortir avec juste des events.
Si tu fais que chaque article est un event. Tu peux mettre une condition qui vérifie le nombre de flèche max dont à le droit le joueur et lui interdire l'achat s'il en a déjà le max.

Tu sais faire ça, sans que je détail plus ?

____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Mar 20 Déc 2016, 23:46

Sir yes sir ! je pense que pour le magasin je serai gérer la crise à ce niveau là.
C'est plutôt pour le système de carquois que je galère Le making c\'est dur
Revenir en haut Aller en bas
KoZzY
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 738
Age : 31

MessageSujet: Re: Questions en vrac sur XP   Mer 21 Déc 2016, 20:17

Je suis navré, je n'ai pas encore installé XP, j'ai tellement une sainte horreur de cette version, du coup je t'ai fait un "tutoriel" vite fait sous Rm2K3, c'est en Events donc c'est du pareil au même. C'est une version "vite fait" du mode Carquois à plusieurs Lvl que tu voudras avoir dans ton jeu, ce n'est ni joli ni fait en un seul objet (c'est tout à fait possible) mais on s'en fout, le but c'est que tu piges la démarche et que tu puisses l'adapter selon tes besoins:



Pour le problème du calcul de l'argent du joueur (forcément s'il peut dépenser plus pour avoir l'illusion d'avoir des flèches supplémentaires il le fera, mais en suite il se retrouvera bloqué par la limite du carquois et aura peut-être acheté 25 flèches en trop, par exemple...) Dans ce cas il faudra procéder plus ou moins de la même manière pour lui faire récupérer l'argent dépensé inutilement, ça demande un peu plus de variables "check" mais c'est faisable.

Seulement voilà, tout ça c'est fort "brouillon", c'est un bon entraînement sur RPG Maker pour apprendre à faker sur les Events mais c'est .. Pas très sérieux. Tu gagnerais à faire toi-même ton "shop" en Events plutôt que d'utiliser celui par défaut, ce serait plus simple, tu éviterais pas mal de "maths" (lol) et ton jeu aura l'air plus "pro" Wink
Revenir en haut Aller en bas
Relm
Comant on enleve le vert autoure du hero??? Lv 0,5
Comant on enleve le vert autoure du hero??? Lv 0,5
avatar

Nombre de messages : 40866

MessageSujet: Re: Questions en vrac sur XP   Mer 21 Déc 2016, 20:23

@redfox59 a écrit:
Sir yes sir ! je pense que pour le magasin je serai gérer la crise à ce niveau là.
C'est plutôt pour le système de carquois que je galère Le making c\'est dur

Que veux tu dire par là ?

____________
Alex RE a écrit:
C'est comme utiliser une hache pour trancher du pain. Je suis peut-être trop vieux pour ça.
Revenir en haut Aller en bas
redfox59
RTP de base Lv 1
RTP de base Lv 1
avatar

Nombre de messages : 16
Age : 24

MessageSujet: Re: Questions en vrac sur XP   Lun 26 Déc 2016, 14:47

Merci à toi pour ce tuto c'est vraiment super Youpi
Ainsi j'ai un aperçu sur ce que je dois faire.


@Relm a écrit:
Que veux tu dire par là ?


Je voulais dire par là que pour le problème du magasin, il me suffit de crée des articles en events
et de faire un système d'achat à la Zelda par exemple.
Mais en revanche c'est le carquois qui me pose problème mais soit j'y travaille...

En tout cas merci pour votre aide et je vous souhaite de bonnes fêtes de fin d'année Bravo !Partydiable welcome
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Questions en vrac sur XP   

Revenir en haut Aller en bas
 
Questions en vrac sur XP
Revenir en haut 
Page 6 sur 6Aller à la page : Précédent  1, 2, 3, 4, 5, 6

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
E-magination :: ~ Forums d'enrichissement ~ :: Apprentissage et partage :: RPG Maker XP :: Entre aides-
Sauter vers: