Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Leon

New Shop Interface

Recommended Posts

New Shop Interface by Leon_Westbrooke

Version: 1.1

Type: Shopping System

 

Introduction

This script is for all of those who want a new way of looking at the shopping menu.

 

Features

 

  • Replaces the old shop system.

 

Screenshots

shop1.png

shop2.png

 

Script

Place the script below all defaults, but above main:

#========================================================================

=======

# Leon's Shopping System

#-------------------------------------------------------------------------------

# 3/10/2007

# v. 1.0

#-------------------------------------------------------------------------------

# Instructions:

# Place above main, and below the other default scripts.

# (Yes, that is all of the instructions)

#

# Features:

# Replaces the default shop system.

#

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Info

#===============================================================================

class Window_Shop_Info < Window_Base

def initialize

super(160, 0, 480, 64)

self.contents = Bitmap.new(width - 32, height - 32)

refresh

end

 

def refresh(selection = 0)

self.contents.clear

if selection == 0

self.contents.draw_text(0, 0, 448, 32, "Buy, sell, or leave?", 1)

else

self.contents.draw_text(0, 0, 448, 32, "Press 'Z' for character compatabilitiy.", 1)

end

end

end

#===============================================================================

# END Window_Shop_Info

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Option

#===============================================================================

class Window_Shop_Option < Window_Selectable

def initialize

super(0, 0, 160, 128)

@option = ["Buy", "Sell", "Leave"]

@item_max = @option.size

self.contents = Bitmap.new(width - 32, height - 32)

self.index = 0

self.active = true

refresh

end

 

def refresh

self.contents.clear

for i in 0...@option.size

y = i * 32

self.contents.draw_text(0, y, 128, 32, @option, 1)

end

end

end

#===============================================================================

# END Window_Shop_Option

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Gold

#===============================================================================

class Window_Shop_Gold < Window_Base

def initialize

super(0, 128, 160, 64)

self.contents = Bitmap.new(width - 32, height - 32)

refresh

end

 

def refresh

self.contents.clear

self.contents.font.color = system_color

self.contents.draw_text(0, 0, 60, 32, $data_system.words.gold + ":")

self.contents.font.color = normal_color

self.contents.draw_text(0, 0, 128, 32, $game_party.gold.to_s, 2)

end

end

#===============================================================================

# END Window_Shop_Gold

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Own

#===============================================================================

class Window_Shop_Own < Window_Base

def initialize

super(0, 192, 160, 64)

self.contents = Bitmap.new(width - 32, height - 32)

item = nil

refresh(item)

end

 

def refresh(item)

self.contents.clear

self.contents.font.color = system_color

self.contents.draw_text(0, 0, 48, 32, "Own:")

if item == nil

return

end

self.contents.font.color = normal_color

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

self.contents.draw_text(0, 0, 128, 32, number.to_s, 2)

end

end

#===============================================================================

# END Window_Shop_Own

#===============================================================================

 

 

#===============================================================================

# Window_Shop_List

#===============================================================================

class Window_Shop_List < Window_Selectable

def initialize(shop_goods)

super(160, 64, 480, 192)

self.contents = Bitmap.new(width - 32, height - 32)

self.active = false

self.index = 0

self.visible = false

@shop_goods = shop_goods

@sell = false

end

 

def item

if @data != nil

return @data[index]

end

end

 

def refresh

@sell = false

@option_index = nil

if self.contents != nil

self.contents.dispose

self.contents = nil

end

@data = []

for goods_item in @shop_goods

case goods_item[0]

when 0

item = $data_items[goods_item[1]]

when 1

item = $data_weapons[goods_item[1]]

when 2

item = $data_armors[goods_item[1]]

end

if item != nil

@data.push(item)

end

end

@item_max = @data.size

if @item_max > 0

self.contents = Bitmap.new(width - 32, row_max * 32)

for i in 0...@item_max

draw_item(i)

end

end

end

 

def refresh_sell(option_index)

@sell = true

@option_index = option_index

if self.contents != nil

self.contents.dispose

self.contents = nil

end

@data = []

for i in 1...$data_items.size

if $game_party.item_number(i) > 0

@data.push($data_items)

end

end

for i in 1...$data_weapons.size

if $game_party.weapon_number(i) > 0

@data.push($data_weapons)

end

end

for i in 1...$data_armors.size

if $game_party.armor_number(i) > 0

@data.push($data_armors)

end

end

@item_max = @data.size

if @item_max > 0

self.contents = Bitmap.new(width - 32, row_max * 32)

for i in 0...@item_max

draw_item(i)

end

end

end

 

def draw_item(index)

item = @data[index]

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 @option_index == nil

if item.price <= $game_party.gold and number < 99

self.contents.font.color = normal_color

else

self.contents.font.color = disabled_color

end

else

self.contents.font.color = normal_color

end

x = 4

y = index * 32

if item.price == 0

self.contents.font.color = disabled_color

else

self.contents.font.color = normal_color

end

if @sell == false

if item.price < $game_party.gold and number < 99

self.contents.font.color = normal_color

else

self.contents.font.color = disabled_color

end

end

rect = Rect.new(x, y, self.width - 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)

if @option_index == nil

self.contents.draw_text(x + 350, y, 88, 32, item.price.to_s, 2)

else

item_price = (item.price / 2).round

self.contents.draw_text(x + 350, y, 88, 32, item_price.to_s, 2)

end

end

end

#===============================================================================

# END Window_Shop_List

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Description_Item

#===============================================================================

class Window_Shop_Description_Item < Window_Base

def initialize

super(90, 256, 460, 192)

self.contents = Bitmap.new(width - 32, height - 32)

self.visible = false

item = nil

refresh(item)

end

 

def refresh(item)

self.contents.clear

if item == nil

return

end

bitmap = RPG::Cache.icon(item.icon_name)

opacity = self.contents.font.color == normal_color ? 255 : 128

self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

self.contents.draw_text(28, 0, 120, 32, item.name)

self.contents.draw_text(0, 32, 428, 32, item.description)

self.contents.font.color = system_color

self.contents.draw_text(0, 64, 120, 32, "Range:")

self.contents.draw_text(0, 96, 140, 32, "% HP Recovered:")

self.contents.draw_text(0, 128, 140, 32, "% SP Recovered:")

self.contents.draw_text(230, 96, 120, 32, "HP Recovered:")

self.contents.draw_text(230, 128, 120, 32, "SP Recovered:")

self.contents.font.color = normal_color

self.contents.draw_text(150, 96, 90, 32, item.recover_hp_rate.to_s)

self.contents.draw_text(150, 128, 90, 32, item.recover_sp_rate.to_s)

self.contents.draw_text(360, 96, 90, 32, item.recover_hp.to_s)

self.contents.draw_text(360, 128, 90, 32, item.recover_sp.to_s)

case item.scope

when 0

self.contents.draw_text(70, 64, 120, 32, "None")

when 1

self.contents.draw_text(70, 64, 120, 32, "One Enemy")

when 2

self.contents.draw_text(70, 64, 120, 32, "All Enemies")

when 3

self.contents.draw_text(70, 64, 120, 32, "One Ally")

when 4

self.contents.draw_text(70, 64, 120, 32, "All Allies")

when 5

self.contents.draw_text(70, 64, 120, 32, "One Dead Ally")

when 6

self.contents.draw_text(70, 64, 120, 32, "All Dead Allies")

when 7

self.contents.draw_text(70, 64, 120, 32, "User")

end

end

end

#===============================================================================

# END Window_Shop_Description_Item

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Description_Equipment

#===============================================================================

class Window_Shop_Description_Equipment < Window_Base

def initialize

super(0, 256, 640, 224)

self.contents = Bitmap.new(width - 32, height - 32)

self.visible = false

item = nil

refresh(item)

end

 

def refresh(item)

self.contents.clear

if item == nil

return

end

bitmap = RPG::Cache.icon(item.icon_name)

opacity = self.contents.font.color == normal_color ? 255 : 128

self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

self.contents.draw_text(28, 0, 120, 32, item.name)

self.contents.draw_text(0, 32, 460, 32, item.description)

self.contents.font.color = system_color

if item.is_a?(RPG::Weapon)

self.contents.draw_text(0, 64, 75, 32, "Attack:")

self.contents.draw_text(0, 96, 120, 32, "Phys. Def:")

self.contents.draw_text(0, 128, 120, 32, "Mag. Def:")

self.contents.draw_text(165, 64, 120, 32, "Str:")

self.contents.draw_text(165, 96, 120, 32, "Dex:")

self.contents.draw_text(165, 128, 120, 32, "Agi:")

self.contents.draw_text(165, 160, 120, 32, "Int:")

self.contents.draw_text(290, 64, 120, 32, "Elements:")

self.contents.draw_text(470, 64, 120, 32, "Inflicts:")

else

self.contents.draw_text(0, 64, 120, 32, "Phys. Def:")

self.contents.draw_text(0, 96, 120, 32, "Mag. Def:")

self.contents.draw_text(0, 128, 120, 32, "Evade:")

self.contents.draw_text(0, 160, 120, 32, "Auto:")

self.contents.draw_text(165, 64, 120, 32, "Str:")

self.contents.draw_text(165, 96, 120, 32, "Dex:")

self.contents.draw_text(165, 128, 120, 32, "Agi:")

self.contents.draw_text(165, 160, 120, 32, "Int:")

self.contents.draw_text(370, 64, 120, 32, "Guards Against:")

end

self.contents.font.color = normal_color

if item.is_a?(RPG::Weapon)

self.contents.draw_text(60, 64, 75, 32, item.atk.to_s)

self.contents.draw_text(90, 96, 75, 32, item.pdef.to_s)

self.contents.draw_text(90, 128, 75, 32, item.mdef.to_s)

self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2)

self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2)

self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2)

self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2)

self.contents.font.size = 14

for i in 0...item.element_set.size

x = 265 + i % 2 * 75

y = 80 + i / 2 * 14

self.contents.draw_text(x, y, 120, 32, $data_system.elements[item.element_set])

end

for i in 0...item.plus_state_set.size

x = 445 + i % 2 * 75

y = 80 + i / 2 * 14

self.contents.draw_text(x, y, 120, 32, $data_states[item.plus_state_set].name)

end

else

self.contents.draw_text(90, 64, 75, 32, item.pdef.to_s)

self.contents.draw_text(90, 96, 75, 32, item.mdef.to_s)

self.contents.draw_text(60, 128, 75, 32, item.eva.to_s)

if $data_states[item.auto_state_id] != nil

self.contents.draw_text(55, 160, 75, 32, $data_states[item.auto_state_id].name)

end

self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2)

self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2)

self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2)

self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2)

self.contents.font.size = 14

@defense = []

for i in 0...item.guard_element_set.size

@defense.push($data_system.elements[item.guard_element_set])

end

for i in 0...item.guard_state_set.size

@defense.push($data_states[item.guard_state_set].name)

end

for i in 0...@defense.size

x = 265 + i % 4 * 80

y = 80 + i / 4 * 14

self.contents.draw_text(x + 15, y, 85, 32, @defense)

end

end

self.contents.font.size = 22

end

end

#===============================================================================

# END Window_Shop_Description_Equipment

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Actors

#===============================================================================

class Window_Shop_Actors < Window_Base

def initialize

super(84, 32, 472, 416)

self.contents = Bitmap.new(width - 32, height - 32)

self.visible = false

self.active = false

self.z += 100

item = nil

refresh(item)

end

 

def refresh(item)

self.contents.clear

if item == nil

return

end

for i in 0...$game_party.actors.size

x = i%2 * 236

y = i/2 * 192

draw_actor_graphic($game_party.actors, x + 16, y + 48)

draw_actor_name($game_party.actors, x + 48, y + 8)

pdef1 = item.pdef

mdef1 = item.mdef

str1 = item.str_plus

dex1 = item.dex_plus

agi1 = item.agi_plus

int1 = item.int_plus

atk2 = 0

eva2 = 0

pdef2 = 0

mdef2 = 0

str2 = 0

dex2 = 0

agi2 = 0

int2 = 0

if item.is_a?(RPG::Weapon)

if $data_weapons[$game_party.actors.weapon_id] != nil

atk1 = item.atk

atk2 = $data_weapons[$game_party.actors.weapon_id].atk

pdef2 = $data_weapons[$game_party.actors.weapon_id].pdef

mdef2 = $data_weapons[$game_party.actors.weapon_id].mdef

str2 = $data_weapons[$game_party.actors.weapon_id].str_plus

dex2 = $data_weapons[$game_party.actors.weapon_id].dex_plus

agi2 = $data_weapons[$game_party.actors.weapon_id].agi_plus

int2 = $data_weapons[$game_party.actors.weapon_id].int_plus

end

else

eva1 = item.eva

case item.kind

when 0

if $data_armors[$game_party.actors.armor1_id] != nil

eva2 = $data_armors[$game_party.actors.armor1_id].eva

pdef2 = $data_armors[$game_party.actors.armor1_id].pdef

mdef2 = $data_armors[$game_party.actors.armor1_id].mdef

str2 = $data_armors[$game_party.actors.armor1_id].str_plus

dex2 = $data_armors[$game_party.actors.armor1_id].dex_plus

agi2 = $data_armors[$game_party.actors.armor1_id].agi_plus

int2 = $data_armors[$game_party.actors.armor1_id].int_plus

end

when 1

if $data_armors[$game_party.actors.armor2_id] != nil

eva2 = $data_armors[$game_party.actors.armor2_id].eva

pdef2 = $data_armors[$game_party.actors.armor2_id].pdef

mdef2 = $data_armors[$game_party.actors.armor2_id].mdef

str2 = $data_armors[$game_party.actors.armor2_id].str_plus

dex2 = $data_armors[$game_party.actors.armor2_id].dex_plus

agi2 = $data_armors[$game_party.actors.armor2_id].agi_plus

int2 = $data_armors[$game_party.actors.armor2_id].int_plus

end

when 2

if $data_armors[$game_party.actors.armor3_id] != nil

eva2 = $data_armors[$game_party.actors.armor3_id].eva

pdef2 = $data_armors[$game_party.actors.armor3_id].pdef

mdef2 = $data_armors[$game_party.actors.armor3_id].mdef

str2 = $data_armors[$game_party.actors.armor3_id].str_plus

dex2 = $data_armors[$game_party.actors.armor3_id].dex_plus

agi2 = $data_armors[$game_party.actors.armor3_id].agi_plus

int2 = $data_armors[$game_party.actors.armor3_id].int_plus

end

when 3

if $data_armors[$game_party.actors.armor4_id] != nil

eva2 = $data_armors[$game_party.actors.armor4_id].eva

pdef2 = $data_armors[$game_party.actors.armor4_id].pdef

mdef2 = $data_armors[$game_party.actors.armor4_id].mdef

str2 = $data_armors[$game_party.actors.armor4_id].str_plus

dex2 = $data_armors[$game_party.actors.armor4_id].dex_plus

agi2 = $data_armors[$game_party.actors.armor4_id].agi_plus

int2 = $data_armors[$game_party.actors.armor4_id].int_plus

end

end

end

color1 = Color.new(25, 210, 25, 255)

color2 = Color.new(210, 25, 25, 255)

if $game_party.actors.equippable?(item)

self.contents.font.color = normal_color

# PDEF

if (pdef1 - pdef2) > 0

self.contents.font.color = color1

elsif (pdef1 - pdef2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 25, y + 80, 70, 32, (pdef1 - pdef2).to_s, 2)

# MDEF

if (mdef1 - mdef2) > 0

self.contents.font.color = color1

elsif (mdef1 - mdef2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 25, y + 112, 70, 32, (mdef1 - mdef2).to_s, 2)

# STR

if (str1 - str2) > 0

self.contents.font.color = color1

elsif (str1 - str2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 125, y + 48, 70, 32, (str1 - str2).to_s, 2)

# DEX

if (dex1 - dex2) > 0

self.contents.font.color = color1

elsif (dex1 - dex2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 125, y + 80, 70, 32, (dex1 - dex2).to_s, 2)

# AGI

if (agi1 - agi2) > 0

self.contents.font.color = color1

elsif (agi1 - agi2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 125, y + 112, 70, 32, (agi1 - agi2).to_s, 2)

# INT

if (int1 - int2) > 0

self.contents.font.color = color1

elsif (int1 - int2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 125, y + 144, 70, 32, (int1 - int2).to_s, 2)

if item.is_a?(RPG::Weapon)

self.contents.font.color = system_color

self.contents.draw_text(x, y + 48, 80, 32, "Atk:")

self.contents.draw_text(x, y + 80, 80, 32, "Pdef:")

self.contents.draw_text(x, y + 112, 80, 32, "Mdef:")

self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:")

self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:")

self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:")

self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:")

self.contents.font.color = normal_color

# ATTACK

if (atk1 - atk2) > 0

self.contents.font.color = color1

elsif (atk1 - atk2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 25, y + 48, 70, 32, (atk1 - atk2).to_s, 2)

# ELSE if armor...

else

self.contents.font.color = system_color

self.contents.draw_text(x, y + 48, 80, 32, "Eva:")

self.contents.draw_text(x, y + 80, 80, 32, "Pdef:")

self.contents.draw_text(x, y + 112, 80, 32, "Mdef:")

self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:")

self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:")

self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:")

self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:")

self.contents.font.color = normal_color

if (eva1 - eva2) > 0

self.contents.font.color = color1

elsif (eva1 - eva2) < 0

self.contents.font.color = color2

else

self.contents.font.color = normal_color

end

self.contents.draw_text(x + 25, y + 48, 70, 32, (eva1 - eva2).to_s, 2)

end

else

self.contents.font.color = disabled_color

self.contents.draw_text(x + 10, y + 80, 120, 32, "Cannot Equip")

self.contents.font.color = normal_color

end

end

end

end

#===============================================================================

# END Window_Shop_Actors

#===============================================================================

 

 

#===============================================================================

# Window_Shop_Amount

#===============================================================================

class Window_Shop_Amount < Window_Selectable

 

attr_accessor :amount

 

def initialize

super(80, 208, 480, 96)

@item_max = 1

self.contents = Bitmap.new(width - 32, height - 32)

self.visible = false

self.z += 100

@amount = 1

item = $data_items[1]

option_index = 0

refresh(item, option_index)

end

 

def refresh(item, option_index)

self.contents.clear

if item == nil

return

end

if option_index == nil

return

end

if option_index == 0

self.contents.font.color = system_color

self.contents.draw_text(0, 0, 200, 32, "How many?")

self.contents.font.color = normal_color

if $game_party.gold < (@amount * item.price)

self.contents.font.color = disabled_color

end

bitmap = RPG::Cache.icon(item.icon_name)

opacity = self.contents.font.color == normal_color ? 255 : 128

self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity)

self.contents.draw_text(28, 32, 120, 32, item.name)

self.contents.draw_text(335, 32, 10, 32, "x")

self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2)

self.cursor_rect.set(284, 32, 32, 32)

self.contents.draw_text(370, 32, 70, 32, (@amount * item.price).to_s, 2)

else

self.contents.font.color = system_color

self.contents.draw_text(0, 0, 200, 32, "How many?")

self.contents.font.color = normal_color

bitmap = RPG::Cache.icon(item.icon_name)

opacity = self.contents.font.color == normal_color ? 255 : 128

self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity)

self.contents.draw_text(28, 32, 120, 32, item.name)

self.contents.draw_text(335, 32, 10, 32, "x")

self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2)

self.cursor_rect.set(284, 32, 32, 32)

self.contents.draw_text(370, 32, 70, 32, (@amount * (item.price / 2)).to_s, 2)

end

end

end

#===============================================================================

# END Window_Shop_Amount

#===============================================================================

 

 

#===============================================================================

# Scene_Shop

#===============================================================================

class Scene_Shop

def main

@counter = 0

@info_window = Window_Shop_Info.new

@option_window = Window_Shop_Option.new

@gold_window = Window_Shop_Gold.new

@own_window = Window_Shop_Own.new

@list_window = Window_Shop_List.new($game_temp.shop_goods)

@desc_item_window = Window_Shop_Description_Item.new

@desc_equip_window = Window_Shop_Description_Equipment.new

@actor_window = Window_Shop_Actors.new

@amount_window = Window_Shop_Amount.new

 

Graphics.transition

loop do

Graphics.update

Input.update

update

if $scene != self

break

end

end

Graphics.freeze

 

@info_window.dispose

@option_window.dispose

@gold_window.dispose

@own_window.dispose

@list_window.dispose

@desc_item_window.dispose

@desc_equip_window.dispose

@actor_window.dispose

@amount_window.dispose

end

 

def update

@info_window.update

@option_window.update

@gold_window.update

@own_window.update

@list_window.update

@desc_item_window.update

@desc_equip_window.update

@actor_window.update

@amount_window.update

 

if @option_window.active

update_option

return

end

 

if @list_window.active

update_list

return

end

 

if @actor_window.visible

update_actors

return

end

 

if @amount_window.active and @option_window.index == 0

update_amount

return

end

 

if @amount_window.active and @option_window.index == 1

update_sell

return

end

end

 

def update_option

@info_window.refresh(0)

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 @option_window.index

when 0

$game_system.se_play($data_system.decision_se)

@list_window.refresh

@option_window.active = false

@list_window.visible = true

@list_window.active = true

@list_window.index = 0

when 1

$game_system.se_play($data_system.decision_se)

@list_window.refresh_sell(@option_window.index)

@option_window.active = false

@list_window.visible = true

@list_window.active = true

@list_window.index = 0

when 2

$game_system.se_play($data_system.cancel_se)

$scene = Scene_Map.new

return

end

end

end

 

def update_list

@info_window.refresh(1)

@item = @list_window.item

if @counter != 1

if @item.is_a?(RPG::Item)

@desc_item_window.refresh(@item)

@counter = 1

else

@desc_equip_window.refresh(@item)

@counter = 1

end

end

@own_window.refresh(@list_window.item)

if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) or Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)

@counter = 0

end

if @item.is_a?(RPG::Item)

if @counter != 1

@desc_item_window.refresh(@item)

@counter = 1

end

@desc_item_window.visible = true

@desc_equip_window.visible = false

else

if @counter != 1

@desc_equip_window.refresh(@item)

@counter = 1

end

@desc_item_window.visible = false

@desc_equip_window.visible = true

end

if Input.trigger?(Input::B)

@counter = 0

$game_system.se_play($data_system.cancel_se)

@desc_item_window.visible = false

@desc_equip_window.visible = false

@desc_item_window.refresh(nil)

@desc_equip_window.refresh(nil)

@option_window.active = true

@list_window.visible = false

@list_window.active = false

@own_window.refresh(nil)

return

end

if Input.trigger?(Input::A)

unless @item.is_a?(RPG::Item)

$game_system.se_play($data_system.decision_se)

@actor_window.refresh(@item)

@actor_window.visible = true

@list_window.active = false

return

else

$game_system.se_play($data_system.buzzer_se)

end

end

if Input.trigger?(Input::C)

if @item == nil or @item.id == 0 or @item.price == 0

$game_system.se_play($data_system.buzzer_se)

return

end

if @option_window.index == 0

case @item

when RPG::Item

if $game_party.item_number(@item.id) >= 99

$game_system.se_play($data_system.buzzer_se)

return

end

when RPG::Weapon

if $game_party.weapon_number(@item.id) >= 99

$game_system.se_play($data_system.buzzer_se)

return

end

when RPG::Armor

if $game_party.armor_number(@item.id) >= 99

$game_system.se_play($data_system.buzzer_se)

return

end

end

end

$game_system.se_play($data_system.decision_se)

@amount_window.visible = true

@amount_window.active = true

@list_window.active = false

return

end

end

 

def update_actors

if Input.trigger?(Input::B)

$game_system.se_play($data_system.cancel_se)

@actor_window.visible = false

@list_window.active = true

end

end

 

def update_amount

@amount_window.refresh(@item, @option_window.index)

if Input.trigger?(Input::B)

$game_system.se_play($data_system.cancel_se)

@amount_window.amount = 1

@amount_window.visible = false

@amount_window.active = false

@list_window.active = true

return

end

if Input.trigger?(Input::C)

if $game_party.gold >= (@amount_window.amount * @item.price)

$game_system.se_play($data_system.decision_se)

$game_party.lose_gold(@amount_window.amount * @item.price)

case @item

when RPG::Item

$game_party.gain_item(@item.id, @amount_window.amount)

when RPG::Weapon

$game_party.gain_weapon(@item.id, @amount_window.amount)

when RPG::Armor

$game_party.gain_armor(@item.id, @amount_window.amount)

end

@gold_window.refresh

@amount_window.amount = 1

@amount_window.visible = false

@amount_window.active = false

@list_window.active = true

@list_window.refresh

return

else

$game_system.se_play($data_system.buzzer_se)

end

end

if Input.trigger?(Input::LEFT)

$game_system.se_play($data_system.cursor_se)

@amount_window.amount -= 1

if @amount_window.amount == 0

@amount_window.amount = 1

end

return

end

if Input.trigger?(Input::RIGHT)

$game_system.se_play($data_system.cursor_se)

@amount_window.amount += 1

case @item

when RPG::Item

if ($game_party.item_number(@item.id) + @amount_window.amount) > 99

@amount_window.amount = (99 - $game_party.item_number(@item.id))

end

when RPG::Weapon

if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99

@amount_window.amount = (99 - $game_party.weapon_number(@item.id))

end

when RPG::Armor

if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99

@amount_window.amount = (99 - $game_party.armor_number(@item.id))

end

end

return

end

if Input.trigger?(Input::UP)

$game_system.se_play($data_system.cursor_se)

@amount_window.amount += 10

case @item

when RPG::Item

if ($game_party.item_number(@item.id) + @amount_window.amount) > 99

@amount_window.amount = (99 - $game_party.item_number(@item.id))

end

when RPG::Weapon

if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99

@amount_window.amount = (99 - $game_party.weapon_number(@item.id))

end

when RPG::Armor

if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99

@amount_window.amount = (99 - $game_party.armor_number(@item.id))

end

end

return

end

if Input.trigger?(Input::DOWN)

$game_system.se_play($data_system.cursor_se)

@amount_window.amount -= 10

if @amount_window.amount < 1

@amount_window.amount = 1

end

return

end

end

 

def update_sell

@amount_window.refresh(@item, @option_window.index)

if Input.trigger?(Input::B)

$game_system.se_play($data_system.cancel_se)

@amount_window.amount = 1

@amount_window.visible = false

@amount_window.active = false

@list_window.active = true

return

end

if Input.trigger?(Input::C)

if @item.price == 0

$game_system.se_play($data_system.buzzer_se)

return

end

$game_system.se_play($data_system.decision_se)

case @item

when RPG::Item

$game_party.gain_gold(@amount_window.amount * (@item.price / 2))

$game_party.lose_item(@item.id, @amount_window.amount)

when RPG::Weapon

$game_party.gain_gold(@amount_window.amount * (@item.price / 2))

$game_party.lose_weapon(@item.id, @amount_window.amount)

when RPG::Armor

$game_party.gain_gold(@amount_window.amount * (@item.price / 2))

$game_party.lose_armor(@item.id, @amount_window.amount)

end

@gold_window.refresh

@amount_window.amount = 1

@amount_window.visible = false

@amount_window.active = false

@list_window.active = true

@list_window.refresh_sell(@option_window.index)

@desc_equip_window.refresh(nil)

@desc_item_window.refresh(nil)

end

if Input.trigger?(Input::LEFT)

$game_system.se_play($data_system.cursor_se)

@amount_window.amount -= 1

if @amount_window.amount < 1

@amount_window.amount = 1

end

end

if Input.trigger?(Input::RIGHT)

$game_system.se_play($data_system.cursor_se)

case @item

when RPG::Item

@amount_window.amount += 1

if @amount_window.amount > $game_party.item_number(@item.id)

@amount_window.amount = $game_party.item_number(@item.id)

end

when RPG::Weapon

@amount_window.amount += 1

if @amount_window.amount > $game_party.weapon_number(@item.id)

@amount_window.amount = $game_party.weapon_number(@item.id)

end

when RPG::Armor

@amount_window.amount += 1

if @amount_window.amount > $game_party.armor_number(@item.id)

@amount_window.amount = $game_party.armor_number(@item.id)

end

end

end

if Input.trigger?(Input::UP)

$game_system.se_play($data_system.cursor_se)

case @item

when RPG::Item

@amount_window.amount += 10

if @amount_window.amount > $game_party.item_number(@item.id)

@amount_window.amount = $game_party.item_number(@item.id)

end

when RPG::Weapon

@amount_window.amount += 10

if @amount_window.amount > $game_party.weapon_number(@item.id)

@amount_window.amount = $game_party.weapon_number(@item.id)

end

when RPG::Armor

@amount_window.amount += 10

if @amount_window.amount > $game_party.armor_number(@item.id)

@amount_window.amount = $game_party.armor_number(@item.id)

end

end

end

if Input.trigger?(Input::DOWN)

$game_system.se_play($data_system.cursor_se)

@amount_window.amount -= 10

if @amount_window.amount < 1

@amount_window.amount = 1

end

end

end

 

end

 

 

 

Instructions

Please look in-script.

 

Compatibility

There are no known compatability issues.

 

Credits and Thanks

The only person to really credit is me.

Share this post


Link to post
Share on other sites

Looks good Leon and it's good to see someone changing the default menus like you do.

Share this post


Link to post
Share on other sites

I need help it gives me an error that has something to do with line 9

 

Script 'custom shop script' Line 9 TypeError Occurred

no implicit conversion from nil to integer

 

 

how do i fix this one

 

ps it occurred when i wanted to shop not when starting the game

Share this post


Link to post
Share on other sites

OK I just tried this out. It works in the Postality Knights version but not the legal version of RMXP.

 

Except I got the error on line 25 which says

 

self.contents.font.size = $defaultfontsize

 

So I deleted that then it came up on line 52 deleted it there to.

Then it came up on line 78 and deleted it there to.

Then it comes up on line 102 so I deleted it there to.

Then it comes up on line 138 s I deleted it there to.

Then it comes up on line 277 so I deleted it there to.

Then it comes up on line 336 so I deleted it there to.

Then it comes up on line 434 so I deleted it there to.

Then it comes up on line 643 so I deleted it there to.

Then it allows you to go into the shop menu but shows u no text and if you go to the Buy command (assuming u know which one it is, it gives ut he same error on 176 so I deleted it there to.)

 

Now the buy menu is working besides there is no text to say what you are buying.

 

Now if you go to Sell you get the same error but on line 209 so once again I deleted it.

 

Now the whole shop thing works with the exception of no text. Hope this helps Leon. I know it won't help k03n with the problem but hey I just completely diagnosed the whole thing to the best of my ability.

Share this post


Link to post
Share on other sites
Guest Hellfire Dragon

Cool script, works perfectly. The 'character compatibility' was a nice touch

Share this post


Link to post
Share on other sites

xD You can't just necro post and apologize for it. Next time please send a PM to the author of a topic.

 

 

So what do you mean you don't have text? Did you follow the instructions? Do you have a different font in your game? Please specify.

Share this post


Link to post
Share on other sites

It looks as if you dont have the legal version of RMXP. You need to legal version to view the text. I know theres another way but i forgot cause i been using the legal version for 4 years now.

Share this post


Link to post
Share on other sites

I don't think we're supposed to be talking about this kinda' stuff. Sooo, yeah. Actually I know we're not supposed to talk about this kind of stuff.

 

We can't help you man.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...