¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [XP]Vender Objetos y Comprar Objetos el Sáb Mar 04, 2017 5:11 pm

Reputación del mensaje :100% (3 votos)

xXIsrael0499Xx

avatar
Como Dice El Titulo... Léelo...Hice Un Script... Que es el Primero Que Presento A Vosotros... Es Bastante Simple...Pero Útil..

¿Para Que Sirve?

Sirve Básicamente Para  Tener Un Evento Que Solo Te Compre Objetos...

¿Como Se Utiliza?

Vender Objetos:

En un evento Pones llamar Script y pones:
$scene = Scene_ShopSell.new

Comprar Objetos:

En un evento Debes Poner llamar Script y pones:

$scene = Scene_ShopBuy.new
$game_temp.shop_goods = [[0,ID]]


Explico:

En  el 0 representa Objetos... si pones 1 representa armas.. y si pones 2 representa protectores.... ID es la ID del objeto o Item...
Ejemplos:
Un Objeto:
$game_temp.shop_goods = [[0,10]]
Dos Objetos:
$game_temp.shop_goods = [[0,10],[1,1]]
Tres Objetos:
$game_temp.shop_goods = [[0,10],[1,1],[2,1]]

Aquí Esta El Script "Para los Que no Quieren Descargar La Demo"

Vender Objetos
Código:
#==============================================================================
# ** Window_ShopCommandSell
#------------------------------------------------------------------------------
#  This window is used to choose your business on the shop screen.
#==============================================================================

class Window_ShopCommandSell < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 480, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item_max = 2
    @column_max = 3
    @commands = ["Vender", "Salir"]
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    x = 50 + index * 180
    self.contents.draw_text(x + 80, 0, 128, 32, @commands[index])
  end
  #--------------------------------------------------------------------------
  # * Cursor
  #     Tamaño + Cordenadas
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(120 + index * 160, 0, 100, 32)
  end
end
#==============================================================================
# ** Scene_Shop
#------------------------------------------------------------------------------
#  This class performs shop screen processing.
#==============================================================================

class Scene_ShopSell
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    @spriteset = Spriteset_Map.new  # Mapa De Fondo
    # Make help window
    @help_window = Window_Help.new
    @help_window.x = 0
    @help_window.y = 64
    # Make command window
    @command_window = Window_ShopCommandSell.new
    @command_window.x = 0
    @command_window.y = 0
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 480
    @gold_window.y = 0
    # 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
    @spriteset.dispose # Mapa De Fondo
    @help_window.dispose
    @command_window.dispose
    @gold_window.dispose
    @sell_window.dispose
    @number_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @spriteset.update # Mapa De Fondo
    @help_window.update
    @command_window.update
    @gold_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 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  # sell
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Change windows to sell mode
        @command_window.active = false
        @sell_window.active = true
        @sell_window.visible = true
        @sell_window.refresh
      when 1  # 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 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
      @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 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  # 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

Comprar Objetos
Código:
#==============================================================================
# ** Window_ShopCommandBuy
#------------------------------------------------------------------------------
#  This window is used to choose your business on the shop screen.
#==============================================================================

class Window_ShopCommandBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 64, 480, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item_max = 2
    @column_max = 3
    @commands = ["Comprar", "Salir"]
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
#    x = 50 + index * 180  Si quieres Quitar el Colorsito ese feito que puse..
#    self.contents.draw_text(x + 80, 0, 128, 32, @commands[index])
    self.contents.font.color = Color.new(128, 255, 128, 150)  # Quita de aqui
    self.contents.draw_text(60 + 80, 0, 128, 32, @commands[0])
    self.contents.font.color = Color.new(255, 64, 0)
    self.contents.draw_text(230 + 80, 0, 128, 32, @commands[1]) # A qui..
  end
  #--------------------------------------------------------------------------
  # * Cursor
  #     Tamaño + Cordenadas
  #--------------------------------------------------------------------------
  def update_cursor_rect
    self.cursor_rect.set(120 + index * 160, 0, 100, 32)
  end
end
#==============================================================================
# ** Scene_Shop
#------------------------------------------------------------------------------
#  This class performs shop screen processing.
#==============================================================================

class Scene_ShopBuy
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    @spriteset = Spriteset_Map.new  # Mapa De Fondo
    # Make help window
    @help_window = Window_Help.new
    @help_window.x = 0
    @help_window.y = 64
    # Make command window
    @command_window = Window_ShopCommandBuy.new
    @command_window.x = 0
    @command_window.y = 0
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 480
    @gold_window.y = 0
    # 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 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
    @spriteset.dispose
    @help_window.dispose
    @command_window.dispose
    @gold_window.dispose
    @buy_window.dispose
    @number_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @spriteset.update
    @help_window.update
    @command_window.update
    @gold_window.update
    @buy_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 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
        @buy_window.active = true
        @buy_window.visible = true
        @buy_window.refresh
        @status_window.visible = true
      when 1  # 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
      @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 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
      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
      end
      return
    end
  end
end

¿Como Se Hizo?

Este Es Script La realidad es que es  una Modificación de el Script  De Tienda del Maker por defecto...así que no tiene mucho.. misterio... creo que si lo intentas puedes hacerlo tu Mismo..

¿Se añadirán Mejoras Al Script?

Hay un 60% De posibilidades de que lo mejore...ya que creo que se le puede sacar mas jugo a este Script...
La Mayoría De Cambios Notorios se añadirán a la Demo... ( Con esto quiero Decir  " En cuanto a la Presentación" )

¿Y La Demo?

Pues aquí Esta:
Vamos Golden Descargarlo Es Gratis...Ópalo Sonrisa Grande
La Demo Tiene Pequeñas modificaciones.. en Honor a  Silva...
por su colaboración...

Mega
Código:
https://mega.nz/#!DUdHgaBK!FvltGYIyreENPXnxtSy8SAR1YKtX8TadJA_KEH6foGE

Regalo De Tio Silva

Código:
class Game_Temp
  
  attr_accessor :slv_shop_forbidden
  
  alias slv_init initialize unless $@
  
  def initialize
    slv_init
    @slv_shop_forbidden = nil
  end
  
end

class Scene_Shop
  
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Nulls forbidden shop options
      $game_temp.slv_shop_forbidden = nil
      # 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
        # If buying is forbidden
        if $game_temp.slv_shop_forbidden == :buy
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 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
        # If selling is forbidden
        if $game_temp.slv_shop_forbidden == :sell
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 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
        # Nulls forbidden shop options
        $game_temp.slv_shop_forbidden = nil
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to map screen
        $scene = Scene_Map.new
      end
      return
    end
  end

end

¿En que Consiste?

Este permite hacer tiendas en las que sólo se puede comprar o vender objetos.
A Diferencia Del Mio Este Deshabilita Los Comandos que no se Utilizan....
En el Mio El comando que no se utiliza No aparece..

¿Como lo Utilizo?

Antes de insertar una tienda, llama a script con

Para Comprar
Código:
$game_temp.slv_shop_forbidden = :buy

Para Vender
Código:
$game_temp.slv_shop_forbidden = :sell

Ejemplo:

Código:
<>Script : $game_temp.slv_shop_forbidden = :buy
<>Insertar Tienda : [Espada De Bronce]

Agradecimientos A Silvanash
A Ledai Por animarme a Publicarlo En el Foro...
Y a RiKennedy-Maker Por Pedir Comprar Objetos...



Última edición por xXIsrael0499Xx el Vie Mar 10, 2017 7:20 pm, editado 3 veces

#2 Re: [XP]Vender Objetos y Comprar Objetos el Dom Mar 05, 2017 11:35 pm

RiKennedy-Maker

avatar
Buen aporte Isra!! Ópalo Tuerto
Aunque me descargue de la demo de MM y no tenía la opción de "SOLO COMPRAR", esta la tiene? no quiero descargarme lo mismo 3 veces xD
Y aunque no viene al tema te felicito por el mapeado Ópalo Sonrisa Grande
Y no crees que me merezco créditos :v? digo... si no fuera por mí el tito silva no lo modifica Ópalo Sonrisa Grande Ópalo Reputación Saludos!!

#3 Re: [XP]Vender Objetos y Comprar Objetos el Lun Mar 06, 2017 12:01 am

Ledai

avatar
Ópalo Reputación Ehh! gracias por publicarlo!! no deja de ser un aporte muy útil y práctico!!! Seguro seguro que en algún otro proyecto lo llegaré a utilizar; pero mientras, seguro seguro que alguien lo usará mientras tanto Ópalo Sonrisa Grande.




Entérate de todas las novedades

#4 Re: [XP]Vender Objetos y Comprar Objetos el Lun Mar 06, 2017 10:05 pm

xXIsrael0499Xx

avatar
Actualización

Agregado:

** Actualización De Enlace...
** Script De Comprar Objetos...

@RiKennedy-Maker Ya Esta Listo Tu Pedido...Perdona la Demora...
Actualice El Link para que no te salte el antivirus Ópalo Sonrisa Grande....
PD: Gracias Por el Cumplido del Mapeado...Ópalo Sonrisa Grande Como Dices no Tiene nada que ver con el Tema Ópalo Sonrisa Grande

Por Terminar:

** La Idea Principal: Era que Se pudieran tener 3 Tiendas Diferentes que no es del Todo Necesario..pero Era Mi sueño Ópalo Sonrisa Grande...Por los momentos Se Tienen 2 de 3 Tiendas listas...Aunque teóricamente ya están listas solo me falta definir un método para poder añadir una de las tiendas que es incompatible con las otras...

** Pedido De Producciones The Golden...

Meta:

Juntar:

** Tienda Del Maker
** Comprar Objetos
** Vender Objetos

#5 Re: [XP]Vender Objetos y Comprar Objetos el Vie Mar 10, 2017 3:09 pm

Natalie

avatar
Anda mira! Nunca pensé en la opción de solo comprar o solo vender, pero puede ser muy útil! Ópalo Contento
Gracias por el aporte @xXIsrael0499Xx!! Ópalo Reputación

#6 Re: [XP]Vender Objetos y Comprar Objetos el Vie Mar 10, 2017 6:23 pm

xXIsrael0499Xx

avatar

Actualización:


Ultima Actualización.. por los momentos. de este Script...

Mejoras:

** Se cumplió el Objetivo del Script que es Que los Scripts Vender y Comprar Objetos.. fueran totalmente independientes.. me explico.. poner los scripts sin quitar el funcionamiento de la tienda normal del maker..

Agradecimiento:

Como agradecimiento a Silvanash... Hago un Spam sobre su juego MosterSimulator3 +4 +5... por aver contribuido a que este script llegara a su Objetico principal...
Y por respecto a Su juego Me dedique a hacer la Windowskin de su juego Me costo un poco.... para hacer Mención a su Juego.. No obstante solo no es la Misma ya que esta es hecha por mi y no esta terminada del todo.. para evitar que alguien mas tome posecion de ella...  Y para que Silva no me mate.....

PD: Si tienes Dudas Con la Utilización de Este Script Pues eres libre de Preguntar...
Quiero Aclarar que este script  es de uso libre... y podéis modificarlo a su antojo si deseáis..
Solo les pido que no os olvidéis mi por favor Ópalo Sonrisa Grande....

@Natalie Gracias por Tu... Consideración...
tranquila.. aveces pasa...Ópalo Sonrisa Grande

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.