Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Modern Shop System

Modern Shop
version: 1.1.2

Introduction
This system features a shop in which the player is able to pick up different items from a store, and take them all to a cashier when ready to pay for all of them.
Also, when the character is holding any item, the menu becomes disabled, and instead a list of all the items currently being held shows up.

Screenshots
modershop1ln7.jpg



modershop2my0.jpg

Demo
Version 1.1.2 Here!


Script

Script removed due to post length.


Instructions

The Item Taking

When you create your shop, you'll need to create a new event for every item.
For the graphic, you might want to use a modified icon graphic.

For example, let's use the apple as an example. The icon for the apple is 24*24, you'll need to modified it to make it four times that: 96*96 and put that modified picture in your "Characters" folder.  That way it can be used as a picture for the event.

041items10eg3.png


Now, in the command window add the folowing script (last option on page three)

[rgss]item = $data_items
$scene = Scene_Modern_Shop.new(item)
[/rgss]

And change i to the id of the item you want.  In the case of the apple, it'll be 32

For weapons you'll need to use
[rgss]item = $data_weapons
$scene = Scene_Modern_Shop.new(item)
[/rgss]

... and armors
[rgss]item = $data_armors
$scene = Scene_Modern_Shop.new(item)
[/rgss]


The Cashier

For the cashier, you'll need another event.

In this event, you need to once more create a script command.

[rgss]$scene = Scene_ShoppingCart.new
[/rgss]


Selling Items

To sell items, all you need to do is create an event with the following scrip command

[rgss]$scene = Scene_Sell.new
[/rgss]

Leaving The Store

Lastly, when you leave the store, you need to add the following script command

[rgss]$game_system.have_temp_item = 0
$game_system.in_shop = 0
[/rgss]


Credits and Thanks
Thanks to speedolphins for requesting it.
Thank to jbrist for reminding me there was no way to sell.
Thanks to khoa and andrek9 for bug finding.
 

Khoa

Member

It's great!! Good work (^^)
But I think you should add "Cancel" command, like this:
- Take
- place
- Cancel
Not only
- Take
- Place
(^^)
 
here try this one

i adapted it on my work  :grin:
i am not good at scripting i cant make my own scripts but i can adapt them.

give me a script and a smal change and i can try to make it work


Script
Code:
#============================================================================
# ** Modern Shop
#----------------------------------------------------------------------------
# vpcdmd
# 1.0
# 2/12/2008
#---
# ~ Originally requested by                 : speedolphins
#============================================================================

#--------------------------------------------------------------------------
# ** Scene_Modern_Shop
#--------------------------------------------------------------------------

class Scene_Modern_Shop
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(item)
    @item = item
  end
  #--------------------------------------------------------------------------
  # * Main
  #--------------------------------------------------------------------------
  def main
    @sprite_set = Spriteset_Map.new
    @help_window = Window_Help2.new
    @help_window.opacity = 200
    @command_window = Window_Command.new(160, ['take','place',cansel])
    @command_window.y = 64
    @command_window.opacity = 200
    @number_window = Window_ShopNumber.new
    @number_window.active = false
    @number_window.visible = false
    @number_window.y = 64
    @number_window.opacity = 200
    @shopping_window = Window_ShoppingCart.new
    @shopping_window.active = false
    @shopping_window.visible = false
    @objects = [@sprite_set, @help_window, @command_window, @number_window, @shopping_window]
    Graphics.transition
    while $scene == self
      Graphics.update
      Input.update
      @objects.each {|x| x.update}
      update
    end
    Graphics.freeze
    @objects.each {|object| object.dispose}
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if @command_window.active
      update_command
      return
    end
    if @number_window.active
      update_number
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when command window is active)
  #--------------------------------------------------------------------------
  def update_command
    @help_window.set_text('Would you like to take or place or cansele '+@item.name+'?', 1)
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0  # Take
        case @item
        when RPG::Item
          number = $game_party.temp_item_number(@item.id)
        when RPG::Weapon
          number = $game_party.temp_weapon_number(@item.id)
        when RPG::Armor
          number = $game_party.temp_armor_number(@item.id)
        end
        if number == 99
          $game_system.se_play($data_system.buzzer_se)
          @help_window.set_text('There\'s no room for  '+@item.name+'s.', 1)
          return
        end
        $game_system.se_play($data_system.decision_se)
        max = @item.price == 0 ? 99 : $game_party.gold / @item.price
        max = [max, 99 - number].min
        @command_window.active = false
        @command_window.visible = false
        @number_window.set(@item, max, @item.price)
        @number_window.active = true
        @number_window.visible = true
      when 1  # Place
        case @item
        when RPG::Item
          number = $game_party.temp_item_number(@item.id)
        when RPG::Weapon
          number = $game_party.temp_weapon_number(@item.id)
        when RPG::Armor
          number = $game_party.temp_armor_number(@item.id)
        end
        if number == 0
          $game_system.se_play($data_system.buzzer_se)
        else
          max = number
          $game_system.se_play($data_system.decision_se)
          @command_window.active = false
          @command_window.visible = false
          @number_window.set(@item, max, @item.price / 2)
          @number_window.active = true
          @number_window.visible = true
       when 1  # cansel
       $game_system.se_play($data_system.cancel_se)
       $scene = Scene_Map.new
        end
      end
      return      
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when quantity input window is active)
  #--------------------------------------------------------------------------
  def update_number
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      @number_window.active = false
      @number_window.visible = false
      @command_window.active = true
      @command_window.visible = true
    end
    if @item.price > $game_party.gold
      @help_window.set_text('You can\'t afford '+@item.name+'s.', 1)
    else
      @help_window.set_text('How many '+@item.name+'s.', 1)
    end
    if Input.trigger?(Input::C)
      if @item.price > $game_party.gold
        $game_system.se_play($data_system.buzzer_se)
      else
        $game_system.se_play($data_system.shop_se)
        @number_window.active = false
        @number_window.visible = false
        case @command_window.index
        when 0  # Take
          case @item
          when RPG::Item
            $game_party.gain_temp_item(@item.id, @number_window.number)
            @shopping_window.refresh
          when RPG::Weapon
            $game_party.gain_temp_weapon(@item.id, @number_window.number)
            @shopping_window.refresh
          when RPG::Armor
            $game_party.gain_temp_armor(@item.id, @number_window.number)
            @shopping_window.refresh
          end
          @command_window.active = true
          @command_window.visible = true
        when 1  # Place
          case @item
          when RPG::Item
            $game_party.gain_temp_item(@item.id, (@number_window.number * -1))
            @shopping_window.refresh
          when RPG::Weapon
            $game_party.gain_temp_weapon(@item.id, (@number_window.number * -1))
            @shopping_window.refresh
          when RPG::Armor
            $game_party.gain_temp_armor(@item.id, (@number_window.number * -1))
            @shopping_window.refresh
          end
          @command_window.active = true
          @command_window.visible = true
        end
      end
      return
    end
  end
end
#------------------------------------------------------------------------------
# ** Scene_ShoppingCart
#------------------------------------------------------------------------------

class Scene_ShoppingCart
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(access = 0)
    @access = access
  end
  #--------------------------------------------------------------------------
  # * Main
  #--------------------------------------------------------------------------
  def main
    @sprite_set = Spriteset_Map.new
    @shopping_cart = Window_ShoppingCart.new
    @shopping_cart.active = true
    @shopping_cart.index = 0
    @shopping_cart.opacity = 0
    @command_window = Window_HorizCommand.new(['Ok', 'Cancel'], 320)
    @command_window.x = 320
    @command_window.y = 288
    @command_window.opacity = 200
    @total_ammount = @shopping_cart.get_total_ammount
    @total_price = @shopping_cart.get_total_price
    @shoptotal_window = Window_ShopTotal.new(@total_ammount, @total_price)
    @shoptotal_window.opacity = 0
    @dummy_window = Window_Base.new(320, 0, 320, 288)
    @dummy_window.opacity = 200
    if @access == 1
      @command_window.visible = false
      @command_window.active = false
    end
    @objects = [@sprite_set, @shopping_cart, @command_window, @shoptotal_window, @dummy_window]
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      @objects.each {|x| x.update}
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @objects.each {|object| object.dispose}
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
      return
    end
    if @command_window.active
      if Input.trigger?(Input::C)
        case @command_window.index
        when 0
          if @total_price > $game_party.gold
            $game_system.se_play($data_system.buzzer_se)
          else
            $game_system.se_play($data_system.shop_se)
            $game_party.lose_gold(@total_price)
            @shopping_cart.add_items
            @shopping_cart.refresh
            $scene = Scene_Map.new
          end
        when 1
          $scene = Scene_Map.new
          end
         when 2
          $scene = Scene_Map.new
        end
      end
    end
  end
end
#--------------------------------------------------------------------------
# ** Game_Party
#--------------------------------------------------------------------------

class Game_Party
  alias vpcdmd_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    vpcdmd_initialize
    @temp_items = {}
    @temp_weapons = {}
    @temp_armors = {}
  end
  #--------------------------------------------------------------------------
  # * Get Number of Items Possessed
  #--------------------------------------------------------------------------
  def temp_item_number(item_id)
    return @temp_items.include?(item_id) ? @temp_items[item_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Get Number of Weapons Possessed
  #--------------------------------------------------------------------------
  def temp_weapon_number(weapon_id)
    return @temp_weapons.include?(weapon_id) ? @temp_weapons[weapon_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Get Amount of Armor Possessed
  #--------------------------------------------------------------------------
  def temp_armor_number(armor_id)
    return @temp_armors.include?(armor_id) ? @temp_armors[armor_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Gain Items (or lose)
  #--------------------------------------------------------------------------
  def gain_temp_item(item_id, n)
    if item_id > 0
      @temp_items[item_id] = [[temp_item_number(item_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Weapons (or lose)
  #--------------------------------------------------------------------------
  def gain_temp_weapon(weapon_id, n)
    if weapon_id > 0
      @temp_weapons[weapon_id] = [[temp_weapon_number(weapon_id) + n, 0].max, 99].min
    end
  end
  #--------------------------------------------------------------------------
  # * Gain Armor (or lose)
  #--------------------------------------------------------------------------
  def gain_temp_armor(armor_id, n)
    if armor_id > 0
      @temp_armors[armor_id] = [[temp_armor_number(armor_id) + n, 0].max, 99].min
    end
  end
end
#------------------------------------------------------------------------------
# ** Scene_Map
#------------------------------------------------------------------------------

class Scene_Map
  #--------------------------------------------------------------------------
  # * Menu Call
  #--------------------------------------------------------------------------
  def call_menu
    $game_temp.menu_calling = false
    if $game_temp.menu_beep
      $game_system.se_play($data_system.decision_se)
      $game_temp.menu_beep = false
    end
    $game_player.straighten
    if $game_system.have_temp_item == 1
      $scene = Scene_ShoppingCart.new(1)
    else
      $scene = Scene_Menu.new
    end
  end
end
#--------------------------------------------------------------------------
# ** Game_System
#--------------------------------------------------------------------------

class Game_System
  attr_accessor :in_shop
  attr_accessor :have_temp_item
  alias vpcdmd_initialize initialize
  #--------------------------------------------------------------------------
  # * Initialization
  #--------------------------------------------------------------------------
  def initialize
    vpcdmd_initialize
    @in_shop = 0
    @have_temp_item = 0
  end
  #--------------------------------------------------------------------------
  # * In_Shop
  #--------------------------------------------------------------------------
  def in_shop
    return @in_shop
  end
  #--------------------------------------------------------------------------
  # * In_Shop
  #--------------------------------------------------------------------------
  def have_temp_item
    return @have_temp_item
  end
end
#------------------------------------------------------------------------------
# ** Window_Help
#------------------------------------------------------------------------------

class Window_Help2 < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 490, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
  end
  #--------------------------------------------------------------------------
  # * Set Text
  #--------------------------------------------------------------------------
  def set_text(text, align = 0)
    if text != @text or align != @align
      self.contents.clear
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
      @text = text
      @align = align
      @actor = nil
    end
    self.visible = true
  end
end
#------------------------------------------------------------------------------
# ** Window_ShoppingCart
#------------------------------------------------------------------------------
class Window_ShoppingCart < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(320, 0, 320, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end  
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 1...$data_items.size
      if $game_party.temp_item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    for i in 1...$data_weapons.size
      if $game_party.temp_weapon_number(i) > 0
        @data.push($data_weapons[i])
      end
    end
    for i in 1...$data_armors.size
      if $game_party.temp_armor_number(i) > 0
        @data.push($data_armors[i])
      end
    end
    @item_max = @data.size
    if $game_system.in_shop == 0
      empty_list
      @item_max = 0
      $game_system.in_shop = 1
    else
    if @item_max > 0
      $game_system.have_temp_item = 1
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    else
      $game_system.have_temp_item = 0
    end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.temp_item_number(item.id)
    when RPG::Weapon
      number = $game_party.temp_weapon_number(item.id)
    when RPG::Armor
      number = $game_party.temp_armor_number(item.id)
    end
    self.contents.font.color = normal_color
    x = 4 + index % 1 * (288 + 32)
    y = index / 1 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(item.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 170, y, 16, 32, "x", 1)
    self.contents.draw_text(x + 180, y, 24, 32, number.to_s, 2)
    self.contents.draw_text(x + 206, y, 54, 32, (item.price*number).to_s, 2)
    self.contents.draw_text(x + 250, y, 32, 32, $data_system.words.gold, 2)
  end
  #--------------------------------------------------------------------------
  # * Get_Total_Ammount
  #--------------------------------------------------------------------------
  def get_total_ammount
    total = 0
    if @item_max > 0
      for i in 0...@item_max
        item = @data[i]
        case item
        when RPG::Item
          total += $game_party.temp_item_number(item.id)
        when RPG::Weapon
          total += $game_party.temp_weapon_number(item.id)
        when RPG::Armor
          total += $game_party.temp_armor_number(item.id)
        end
      end
    end
    return total
  end
  #--------------------------------------------------------------------------
  # * Get_Total_Price
  #--------------------------------------------------------------------------
  def get_total_price
    total = 0
    if @item_max > 0
      for i in 0...@item_max
        item = @data[i]
        case item
        when RPG::Item
          total += item.price * $game_party.temp_item_number(item.id)
        when RPG::Weapon
          total += item.price * $game_party.temp_weapon_number(item.id)
        when RPG::Armor
          total += item.price * $game_party.temp_armor_number(item.id)
        end
      end
    end
    return total
  end
  #--------------------------------------------------------------------------
  # * Add_Items
  #--------------------------------------------------------------------------
  def add_items
    if @item_max > 0
      for i in 0...@item_max
        item = @data[i]
        case item
        when RPG::Item
          $game_party.gain_item(item.id, $game_party.temp_item_number(item.id))
        when RPG::Weapon
          $game_party.gain_weapon(item.id, $game_party.temp_weapon_number(item.id))
        when RPG::Armor
          $game_party.gain_armor(item.id,$game_party.temp_armor_number(item.id))
        end
      end
    end
    empty_list
  end
  #--------------------------------------------------------------------------
  # * Empty_List
  #--------------------------------------------------------------------------
  def empty_list
    if @item_max > 0
      for i in 0...@item_max
        item = @data[i]
        case item
        when RPG::Item
          $game_party.gain_temp_item(item.id, $game_party.temp_item_number(item.id)*-1)
        when RPG::Weapon
          $game_party.gain_temp_weapon(item.id, $game_party.temp_weapon_number(item.id)*-1)
        when RPG::Armor
          $game_party.gain_temp_armor(item.id,$game_party.temp_armor_number(item.id)*-1)
        end
      end
    end
    $game_system.have_temp_item = 0
  end
end
#------------------------------------------------------------------------------
# ** Window Horizontal Command
#------------------------------------------------------------------------------

class Window_HorizCommand < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(commands, width = 640, height = 64)
    super(0, 0, width, height)
    self.contents = Bitmap.new(width - 32, height - 32)
    @commands = commands
    @item_max = @commands.size
    @column_max = @commands.size
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = color
    x = width / @item_max * index
    off = width / @item_max - 32
    self.contents.draw_text(x, 0, off, 32, @commands[index], 1)
  end
  #--------------------------------------------------------------------------
  # * Disable Item
  #--------------------------------------------------------------------------
  def disable_item(index)
    draw_item(index, disabled_color)
  end
end
#------------------------------------------------------------------------------
# ** Window Shop Total
#------------------------------------------------------------------------------

class Window_ShopTotal < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(total_ammount, total_price)
    @total_ammount = total_ammount
    @total_price = total_price
    super(320, 160, 320, 128)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 160, 32, "Total Ammount")
    self.contents.draw_text(160, 0, 160, 32, @total_ammount.to_s)
    self.contents.draw_text(4, 32, 160, 32, "Total Price")
    self.contents.draw_text(160, 32, 160, 32, @total_price.to_s)
    self.contents.draw_text(4, 32, 280, 32, $data_system.words.gold, 2)
    self.contents.draw_text(4, 64, 160, 32, "Gold Available")
    self.contents.draw_text(160, 64, 160, 32, $game_party.gold.to_s)
    self.contents.draw_text(4, 32, 280, 32, $data_system.words.gold, 2)
  end
end
#------------------------------------------------------------------------------
# ** Window Shop Number (Text Removal)
#------------------------------------------------------------------------------

class Window_ShopNumber < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 128, 368, 200)
    self.contents = Bitmap.new(width - 32, height - 32)
    @item = nil
    @max = 1
    @price = 0
    @number = 1
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_item_name(@item, 36, 64)
    self.contents.font.color = normal_color
    self.contents.draw_text(64, 96, 32, 32, "×")
    self.contents.draw_text(100, 96, 24, 32, @number.to_s, 2)
    self.cursor_rect.set(96, 96, 32, 32)
  end
end
 

Jason

Awesome Bro

Just a question, how could this be edited to make it so you can sell stuff back to the shop ? Like place things into a box, and then press Sell.
 

Khoa

Member

@robot7979797: I tried your script, but...
Code:
---------------------------
Modern Shop
---------------------------
Script 'Modern Shop' line 117: SyntaxError occurred.
---------------------------
OK   
---------------------------
Please fix it (^^)
 
@Khoa: I didn't add a cancel because I figured the "B" button would be enough. xD

@robot7979797: Yeah, it would require just a small change like you did to add a cancel option; however, you made two mistakes, on line 29, and 117

Code:
@command_window = Window_Command.new(160, ['take','place',cansel])

needs to be
Code:
@command_window = Window_Command.new(160, ['take','place','cancel'])

If you don't put the command in quotes it doesn't read it as a string.

And finally line 117
Code:
when 1  # cansel

should be
Code:
when 2  # cancel

@jbrist: Mmmm, selling ... that's a good question. xD
I'll work on that.
 
Upgraded to Version: 1.1

Added a way to sell items.

The player first chooses how many of which items to sell, and then must press the "A" button (Shift) to go to the confirm screen.
 
This is great! You should make a Zelda add-on so you can trick the cashier and steal shit. Then when you come back in, he whoops ya' ass! That'd be cool. It's a good script...I'll use it for sure.
 
@Mundane: Hahaha, that's actually pretty funny. xD
I'll see what I can do about that, shouldn't be too hard ... I hope. xD

@andrek9: Ahhh, thank you for finding that bug!

When I tested it I gave me 99 items so I never thought of that problem.  I'll fix it right away.  :D

Edit:
Bug had been Squished!

Updated both script and demo to 1.1.1 ^_^
 

Khoa

Member

Hey vpcdmd, when I talk to the box near the cashier, it appear an error:
---------------------------
Modern Shop
---------------------------
Script 'Modern Shop' line 404: NoMethodError occurred.

undefined method `price' for nil:NilClass
---------------------------
OK 
---------------------------
please fix it (^^)
 

Star

Sponsor

@ vpcdmd

Hmm.. I was looking at this awhile ago and I saw this.  And I was like..  hmm.. it's good.. reminds me of Zelda Links Awakening, but..  I can't sell crap.. 

Now I'm thinking..  I can sell crap,  in infinite amounts and make billions off of items I don't have

It be awesome if you could steal then get owned by the shop owner.  That's a wicked Zelda Links Awakening here we go!  Get called Theif the rest of the game.. XD

When ever your bugs are worked out, I'd like to put this into my game :thumb:
 
@khoa: Thanks for reporting it, that bug is now under my shoe. :D

@StarGGundam2: What do you mean by selling items you don't have? I believe I already fixed that bug.

And yeah, it would be nice to be owned by the shop owner, but I'm not usre if that would be too much of an advantage for the player.  Plus I still haven't though of a way to do that :P

@andrek9: Thanks for finding another bug, It has been squished it now. ^_^

Script has been updated to Version 1.1.2!

Also, the script has been removed from the first post due to it getting cut off due to post length.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top