FAQRechercherPortailAccueilAccueilForumPraline au mielS'enregistrerConnexionMembres


Partagez | 
 

 script magasin

Aller en bas 
AuteurMessage
lafouine



Messages : 16


MessageSujet: script magasin   Mar 22 Oct - 20:16

j'ai trouve ce script pour les magasins.
normalement quand je change de magasin j'ai la possibilité de changer le perso qui vend mais je trouve pas.

le script

#------------------------------------------------------------------------------#
# Galv's Shop Upgrade
#------------------------------------------------------------------------------#
# For: RPGMAKER VX ACE
# Version 2.7
# Thanks Nicke for scrolling help
#------------------------------------------------------------------------------#
# 2013-02-17 - Version 2.7 - added images to display with equip comparison
# 2013-02-16 - Version 2.6 - added ability to specify which stat a class uses
# in weapon comparisons.
# 2013-02-12 - Version 2.5 - bug fix for changing text
# 2013-02-12 - Version 2.4 - added a stock feature to limit items in shops
# - added pose for trying to buy out of stock
# 2013-01-24 - Version 2.3 - fixed bug with displaying item mana gain
# 2013-01-22 - Version 2.2 - added compatability with YEA Equip Dynamic Stats
# 2013-01-16 - Version 2.1 - added changeable windowskin for shop
# 2013-01-15 - Version 2.0 - fixed a bug with talking when viewing details
# 2013-01-15 - Version 1.9 - animated actors when item is equippable
# added more settings for equip status window
# 2013-01-15 - Version 1.8 - added pose for trying to view details on no item
# 2013-01-15 - Version 1.7 - added pose for when details window is open
# - added sound effect option for open/close details
# 2013-01-15 - Version 1.6 - added state resist feature to equips
# 2013-01-15 - Version 1.5 - added 'details' to show item features + stats
# 2013-01-12 - Version 1.4 - more poses added: too many items, farewell
# 2013-01-12 - Version 1.3 - more poses added: greet, cant buy, cant sell
# 2013-01-12 - Version 1.2 - changed name to "Galv's Shop Upgrade"
# added variable that controls selling rate
# modified shop window positions
# changed the 'better/worse' item status display
# 2013-01-07 - Version 1.1 - added background scrolling
# 2013-01-05 - Version 1.0 - release
#------------------------------------------------------------------------------#
# This script overwrites much of the default shop.
# It adds a background and shopkeeper images, uses a variable to contol selling
# price and rearranges the shop windows.
#
# The shopkeeper can change graphic throughout the shopping process to be used
# to make them smile or anything else your imagination thinks of.
# It also adds text that displays for shopkeeper talk during this process.
#
# This script does not include graphics for you to use. You'll need to create
# your own.
#
# The script can also keep track of stock in different shops, even if you sell
# items to the shop, it will add that item to it's buy list.
#
#------------------------------------------------------------------------------#
# INSTRUCTIONS:
#------------------------------------------------------------------------------#
# Put script under Materials and above Main
# Images go in /Graphics/Pictures/ folder.
#
#------------------------------------------------------------------------------#
# SCRIPT CALLS to change images
#------------------------------------------------------------------------------#
#
# $game_system.shopkeeper = "ImageName" # Changes shopkeeper image
#
# $game_system.shopback = "ImageName" # Changes background image
#
# $game_system.shop_windowskin = "ImageName" # Change windowskin for shop
# # /Graphics/System/ folder
#
#------------------------------------------------------------------------------#
# ADVANCED SCRIPT CALL to change shopkeeper talk (x is the line in settings)
#------------------------------------------------------------------------------#
#
# $game_system.shop_talk[x] = "New shopkeeper saying here"
#
#------------------------------------------------------------------------------#
# The reason I say this is advanced is because it's used in the tiny script call
# box, you may need to use additional code. An example below:
#
# $game_system.shop_talk[0] = "This will " +
# "change the text for the initial welcome
# message."
#
# See below in SHOPKEEPER TALK each quote will be numbered to use here.
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# SCRIPT CALLS to control SHOP STOCK
#------------------------------------------------------------------------------#
#
# shop(shop_id) # Use this script call to set the next shop processing event
# # to be a certain shop number. If you do not use this script
# # call before a shop event, the shop will not use stock.
#
# add_stock(shop_id,type,item_id,amount) # Add a number of items to the shop
# # number you specify.
#
# rem_stock(shop_id,type,item_id,amount) # Remove a number of items from the
# # shop number you specify.
#
# bulk_fill(shop_id,type,amount,[id,id,id]) # Add items to a shop in bulk.
#
#
# # If you do NOT add an item as stock (using the above script call) to a shop
# # that includes that item in the shop processing event - that item will be
# # unlimited.
#
#------------------------------------------------------------------------------#
# EXPLANATION of the above script calls
#------------------------------------------------------------------------------#
# shop_id
# This is a number you choose to use for a certain shop. You can use this
# number for any shop anywhere and it will keep track of what items are sold
# and bought from it. You can have as many different shop id's as you likd.
#
# type
# 0 = an item 1 = a weapon 2 = an armor
#
# item_id or id
# The id of the item/weapon/armor in your database.
#
# amount
# How many of the item you wish to add or remove from the chosen shop id.
#
#------------------------------------------------------------------------------#
# EXAMPLES
#------------------------------------------------------------------------------#
#
# add_stock(2,0,1,20) # Will add 20 of item 1 to shop number 2
# add_stock(6,1,10,2) # Will add 2 of weapon 10 to shop number 6
# rem_stock(6,1,10,2) # Will remove 2 of weapon 10 from shop number 6
#
# bulk_fill(1,0,20,[1,2,3,4,5,6]) # Will add 20 of each item inside square
# # brackets to shop number 1
#
# bulk_fill(3,2,1,[12,22,13]) # Will add 1 of each armor inside square
# # brackets to shop number 3
#
# shop(3) # The next shop processing will use shop number 3
#
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# NOTETAG for CLASS
#------------------------------------------------------------------------------#
#
# # The weapon and armor paramater a class will use
# # to compare if the weapon(x) or armor(y) is better
# # for that actor to equip or not.
#
# Not including this notetag in a class will use the default 2,3 (ATK and DEF)
#
# Parameter ID's are:
#
# 0 - MaxHP 1 - MaxMP 2 - ATK 3 - DEF
# 4 - MAT 5 - MDF 6 - AGI 7 - LUK
#
#------------------------------------------------------------------------------#

($imported ||= {})["Galvs_Shopkeepers"] = true
module Galv_Shopkeeper

#------------------------------------------------------------------------------#
# SCRIPT SETTINGS
#------------------------------------------------------------------------------#
#-------------------#
# SHOPKEEPER IMAGES #
#-------------------#

SHOPKEEPER_IMAGE = "shopkeeper"

# Shopkeeper will change to an image using the current shopkeeper file name
# with the below extentions added (eg. Graphics/Pictures/shopkeeper_happy.png)

GREET = "_happy" # image extension greeting when you enter shop
FAREWELL = "_happy" # image extension when you leave the shop

BUY = "_happy" # image extension when you buy an item
SELL = "_happy" # image extension when you sell an item

DONT_BUY = "_annoyed" # image extension when you don't buy something
DONT_SELL = "_annoyed" # image extension when you don't sell something

CANT_BUY = "_annoyed" # image extension when you can't afford something
CANT_SELL = "_annoyed" # image extension when you can't sell an item
MAX_ITEMS = "_annoyed" # image extension when you can't hold more of an item
SOLD_OUT = "_happy" # image extension when can't buy sold out item

SHOW_DETAILS = "_happy" # image extension when show details window is open
NO_DETAILS = "_annoyed" # image extension when no item when 'd' pressed


#-------------------#
# BACKGROUND IMAGE #
#-------------------#

SHOP_BACKGROUND = "shop_background" # background image behind shopkeeper
BACKGROUND_SCROLL_X = 0 # speed background scroll horizontally
BACKGROUND_SCROLL_Y = 0 # speed background scroll vertically

WINDOWSKIN = "Window" # windowskin used by shop

#-----------------#
# SHOPKEEPER TALK #
#-----------------#

# These are defaults. You can change them using script calls during game.

TALK = [ # don't touch

"Bienvenue! Jetez un coup d'oeil!", # 0: when entering a shop
"Merci pour votre achat", # 1: when purchase an item
"J'en ferai bon usage.", # 2: when sell an item
"Avez-vous besoin d'autre chose ?", # 3: when in root menu after shopping
"Je regarde seulement", # 4: when in root menu but didn't buy
"Vous me faite perdre mon temps", # 5: when in root menu but didn't sell
"Vous n'avez pas assez d'argent!", # 6: when try to buy too pricey item
"Je ne peux pas l'acheter...", # 7: when try to sell something you cant
"Vous ne pouvez pas en acheter plus",# 8: when try to buy when items maxed
"Merci, revenez de bientôt!", # 9: when leaving a shop
"Vous ne pouvez pas le voir en détails!", # 10: when pressing 'd' on no item.
"Nous n’avons plus cet article", # 11: when item is sold out

] # don't touch


#---------------#
# OTHER OPTIONS #
#---------------#

ITEM_COUNT_TEXT = "En stock" # Text that appears before item amount
HOW_MANY_TEXT = "Combien?" # Text for when determining how many
STOCK_TEXT = "En Stock" # Text to display how many items in stock
# only displays if a limit is set.
NO_STOCK = "Liquidé" # Displayed if limit of 0 is reached
STOCK_COLOR = 6 # Color of stock text.



FRAME_TIME = 0 # time that above text and images stay active before
# returning to default image and no talk.
# (60 = 1 second)

SALE_VAR = 1 # variable that controls sale price as a % of item's
# price. Default is 50, use control variables to change
# this during the game. Make this 0 to not use this
# feature.

DETAILS_KEY = :Z # :Z is "D". Press "D" in the shop to show the item
# selected's details.

D_IMAGE = "shop_detail" # The image used to show what key to press for details
# This image goes in /Graphics/System/

SE1 = ["Book2", 85, 100] # Sound effect played when opening details
SE2 = ["Blow1", 85, 150] # Sound effect played when closing details

ACTORS_SHOWN = 4 # Number of actors shown in the equip status window
ACTORS_X = 15 # x position of first actor in the equip status window
ACTORS_SPACE = 70 # space between each actor in equip status window

# Settings to fit 6 actors here nicely are:
# ACTORS_SHOWN = 6, ACTORS_X = 5, ACTORS_SPACE = 50


#---------------#
# EQUIP COMPARE #
#---------------#


SHOW_COMPARE_IMAGE = true # if true: shop will display only an image behind
# the characters shown when viewing equipment

SHOW_PARAM_CHANGE = true # shows by how much the primary parameter changes

SHOW_PARAM_NAME = true # shows which paramater it is changing

IMAGE_OVER = false # false: images are under the characters
# true: images are on top of them.


# Below images are taken from /Graphics/System/

E_INCREASE = "shop_up" # L'image montrée(affichée) quand équipent est meilleure
E_DECREASE = "shop_down" # L'image montrée(affichée) quand équipent est plus mauvaise
E_SAME = "" # Image displayed when euqip is same

#------------------------------------------------------------------------------#
# END SCRIPT SETTINGS
#------------------------------------------------------------------------------#
end


module Shop_Stock
def check_stock(item)
if item.is_a?(RPG::Item); itype = 0
elsif item.is_a?(RPG::Weapon); itype = 1
else; itype = 2; end
return -1 if item.nil?
return -1 if $game_system.shop_stock[$game_system.shop_selected][[itype,item.id]].nil?
if $game_system.shop_stock[$game_system.shop_selected][[itype,item.id]] >= 0
return $game_system.shop_stock[$game_system.shop_selected][[itype,item.id]]
else
return -1
end
end
end


class Game_Interpreter
def shop(shop_id)
$game_system.shop_selected = shop_id
end

def add_stock(shop_id,type,item_id,amount)
# type 0 = item, 1 = weapon, 2 = armor
$game_system.shop_stock[shop_id] ||= {}
$game_system.shop_stock[shop_id][[type,item_id]] ||= 1
$game_system.shop_stock[shop_id][[type,item_id]] += amount
end

def rem_stock(shop_id,type,item_id,amount)
# type 0 = item, 1 = weapon, 2 = armor
return if $game_system.shop_stock[shop_id].nil?
return if $game_system.shop_stock[shop_id][[type,item_id]].nil?
$game_system.shop_stock[shop_id][[type,item_id]] -= amount
if $game_system.shop_stock[shop_id][[type,item_id]] < 0
$game_system.shop_stock[shop_id][[type,item_id]] = 2
end
end

def reset_shop_settings
$game_system.shopkeeper = Galv_Shopkeeper::SHOPKEEPER_IMAGE
$game_system.shopback = Galv_Shopkeeper::SHOP_BACKGROUND
$game_system.shop_windowskin = Galv_Shopkeeper::WINDOWSKIN
$game_system.shop_talk = Array.new(Galv_Shopkeeper::TALK)
end

def bulk_fill(*args)
array = [*args]
shop_id = array[0]
type = array[1]
amount = array[2]
ids = array[3]

$game_system.shop_stock[shop_id] ||= {}
ids.each do |i|
$game_system.shop_stock[shop_id][[type,i]] ||= 0
$game_system.shop_stock[shop_id][[type,i]] += amount
end
end
end # Game_Interpreter


class Game_System
attr_accessor :shop_selected
attr_accessor :shop_stock
attr_accessor :shopback
attr_accessor :shopkeeper
attr_accessor :shop_talk
attr_accessor :shop_spose
attr_accessor :shop_windowskin

alias galv_shopkeeper_system_initialize initialize
def initialize
galv_shopkeeper_system_initialize
@shopback = Galv_Shopkeeper::SHOP_BACKGROUND
@shopkeeper = Galv_Shopkeeper::SHOPKEEPER_IMAGE
@shop_talk = Array.new(Galv_Shopkeeper::TALK)
@shop_windowskin = Galv_Shopkeeper::WINDOWSKIN
@shop_spose = nil
@shop_selected = 0
@shop_stock = {0=>{}}
end

end # Game_System


class Scene_Shop < Scene_MenuBase

alias galv_shopkeeper_scene_shop_prepare prepare
def prepare(goods, purchase_only)
galv_shopkeeper_scene_shop_prepare(goods, purchase_only)
return if $game_system.shop_stock[$game_system.shop_selected].nil?
stock_change

end

def stock_change
temp_list = $game_system.shop_stock[$game_system.shop_selected].keys
@goods.each do |i|
if temp_list.include?([i[0],i[1]])
temp_list.delete([i[0],i[1]])
end
end
temp_list.each do |i|
if $game_system.shop_stock[$game_system.shop_selected][[i[0],i[1]]] != 0
@goods << [i[0],i[1],0,0]
end
end
end

alias galv_shopkeeper_scene_shop_start start
def start
galv_shopkeeper_scene_shop_start
@shoptime = 0
@has_shopped = false
create_talk_window
create_desc_window
create_shop_background
create_shopkeeper
create_images
@leave_shop = false
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::GREET) rescue Cache.picture($game_system.shopkeeper)
@shoptime = Galv_Shopkeeper::FRAME_TIME
end

def create_desc_window
b = @buy_window
@desc_window = Window_ItemDesc.new(b.x, b.y, b.width, b.height)
@desc_window.viewport = @viewport
@desc_window.hide
end

def create_talk_window
@talk_window = Window_Help.new
@talk_window.viewport = @viewport
@talk_window.set_text($game_system.shop_talk[0])
@help_window.hide
end

def create_itemcount_window
wy = @dummy_window.y
ww = Graphics.width - 304
wh = @gold_window.height
@itemcount_window = Window_ItemCount.new(0, wy, ww, wh)
@itemcount_window.viewport = @viewport
@itemcount_window.hide
end

# OVERWRITE
def create_dummy_window
wy = @command_window.y + @command_window.height
wh = Graphics.height - wy - @gold_window.height * 2
@dummy_window = Window_Base.new(0, wy, Graphics.width, wh)
@dummy_window.viewport = @viewport
end

# OVERWRITE
def create_buy_window
wy = @dummy_window.y
wh = @dummy_window.height
@buy_window = Window_ShopBuy.new(0, wy, wh, @goods)
@buy_window.viewport = @viewport
@buy_window.help_window = @help_window
@buy_window.status_window = @status_window
@buy_window.count_window = @itemcount_window
@buy_window.desc_window = @desc_window
@buy_window.hide
@buy_window.set_handler(:ok, method(:on_buy_ok))
@buy_window.set_handler(:cancel, method(:on_buy_cancel))
@buy_window.x = Graphics.width - @buy_window.width
end

# OVERWRITE
def create_sell_window
wy = @category_window.y + @category_window.height
wh = Graphics.height - wy
@sell_window = Window_ShopSell.new(0, wy, @buy_window.width, wh)
@sell_window.viewport = @viewport
@sell_window.help_window = @help_window
@sell_window.status_window = @itemcount_window
@sell_window.hide
@sell_window.set_handler(:ok, method(:on_sell_ok))
@sell_window.set_handler(:cancel, method(:on_sell_cancel))
@category_window.item_window = @sell_window
@sell_window.x = Graphics.width - @buy_window.width
end

alias galv_shopkeeper_create_number_window create_number_window
def create_number_window
galv_shopkeeper_create_number_window
@number_window.x = Graphics.width - @number_window.width
end

# OVERWRITE
def create_status_window
wx = @number_window.x
wy = @dummy_window.y + @dummy_window.height
ww = @number_window.width
wh = Graphics.height - @dummy_window.height - @dummy_window.y
@status_window = Window_ShopStatus.new(wx, wy, ww, wh)
@status_window.viewport = @viewport
@status_window.hide
create_itemcount_window
end

alias galv_shopkeeper_create_dummy_window create_dummy_window
def create_dummy_window
galv_shopkeeper_create_dummy_window
@dummy_window.hide
end

def create_shopkeeper
@keeper = Sprite.new
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
@keeper.y = Graphics.height - @keeper.bitmap.height
end

def create_images
@dkey = Sprite.new
@dkey.opacity = 0
@dkey.bitmap = Cache.system(Galv_Shopkeeper:Gros sourire_IMAGE) rescue Cache.system("")
@dkey.y = Graphics.height - @dkey.bitmap.height
end

def create_shop_background
@shopback = Plane.new
@shopback.bitmap = Cache.picture($game_system.shopback)
end

alias galv_shopkeer_sell_on_category_ok on_category_ok
def on_category_ok
galv_shopkeer_sell_on_category_ok
@dkey.opacity = 255
end

# OVERWRITE
def on_category_cancel
@command_window.activate
@category_window.hide
@sell_window.hide
if @has_shopped == true
@talk_window.set_text($game_system.shop_talk[3])
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
else
@talk_window.set_text($game_system.shop_talk[5])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::DONT_SELL)
end
show_talk
@has_shopped = false
end

# OVERWRITE
def on_buy_cancel
@command_window.activate
@buy_window.hide
@itemcount_window.hide
@status_window.hide
@status_window.item = nil
@itemcount_window.item = nil
@help_window.clear
if @has_shopped == true
@talk_window.set_text($game_system.shop_talk[3])
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
else
@talk_window.set_text($game_system.shop_talk[4])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::DONT_BUY)
end
show_talk
@has_shopped = false
@dkey.opacity = 0
end

# OVERWRITE
def on_sell_cancel
@sell_window.unselect
@category_window.activate
@status_window.item = nil
@itemcount_window.item = nil
@itemcount_window.hide
@help_window.clear
@dkey.opacity = 0
end

alias galv_shopkeeper_command_buy command_buy
def command_buy
galv_shopkeeper_command_buy
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
@itemcount_window.show
hide_talk
@dkey.opacity = 255
@desc_window.y = @buy_window.y
@desc_window.height = @buy_window.height
end

alias galv_shopkeeper_command_sell command_sell
def command_sell
galv_shopkeeper_command_sell
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
hide_talk
@desc_window.y = @sell_window.y
@desc_window.height = @sell_window.height
end

alias galv_shopkeeper_do_buy do_buy
def do_buy(number)
@has_shopped = true
galv_shopkeeper_do_buy(number)
remove_stock(@item,number)
@talk_window.set_text($game_system.shop_talk[1])
show_talk
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::BUY) rescue Cache.picture($game_system.shopkeeper)
@shoptime = Galv_Shopkeeper::FRAME_TIME
end

def remove_stock(item,number)
return if $game_system.shop_stock[$game_system.shop_selected].nil? ||
$game_system.shop_selected == 0
if item.is_a?(RPG::Item); itype = 0
elsif item.is_a?(RPG::Weapon); itype = 1
else; itype = 2; end
return if $game_system.shop_stock[$game_system.shop_selected][[itype,item.id]].nil?
$game_system.shop_stock[$game_system.shop_selected][[itype,item.id]] -= number
end

alias galv_shopkeeper_do_sell do_sell
def do_sell(number)
@has_shopped = true
galv_shopkeeper_do_sell(number)
add_stock(@item,number)
stock_change
@talk_window.set_text($game_system.shop_talk[2])
show_talk
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::SELL) rescue Cache.picture($game_system.shopkeeper)
@shoptime = Galv_Shopkeeper::FRAME_TIME
end

def add_stock(item,number)
return if $game_system.shop_selected == 0
if item.is_a?(RPG::Item); itype = 0
elsif item.is_a?(RPG::Weapon); itype = 1
else; itype = 2; end
@goods.each do |i|
if i[0] == itype && i[1] == item.id && $game_system.shop_stock[$game_system.shop_selected][[itype,item.id]].nil?
return
end
end
$game_system.shop_stock[$game_system.shop_selected][[itype,item.id]] ||= 0
$game_system.shop_stock[$game_system.shop_selected][[itype,item.id]] += number
end


# OVERWRITE
def on_number_ok
Sound.play_shop
case @command_window.current_symbol
when :buy
do_buy(@number_window.number)
when :sell
do_sell(@number_window.number)
@itemcount_window.hide
end
end_number_input
@gold_window.refresh
@status_window.refresh
@itemcount_window.refresh
@dkey.opacity = 255
end

alias galv_shopkeeper_on_number_cancel on_number_cancel
def on_number_cancel
galv_shopkeeper_on_number_cancel
case @command_window.current_symbol
when :sell
@itemcount_window.hide
end
@dkey.opacity = 255
end

alias galv_shopkeeper_on_sell_ok on_sell_ok
def on_sell_ok
@number_window.trans = :sell
galv_shopkeeper_on_sell_ok
@itemcount_window.show
@dkey.opacity = 0
end

alias galv_shopkeeper_on_buy_ok on_buy_ok
def on_buy_ok
@number_window.trans = :buy
galv_shopkeeper_on_buy_ok
@dkey.opacity = 0
end


def end_shopanim
SceneManager.return if @leave_shop == true
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
hide_talk unless @command_window.active
end

def show_talk
@talk_window.show
@help_window.hide
end

def hide_talk
@talk_window.hide
@help_window.show
end

def update
super
@shoptime -= 1
end_shopanim if @shoptime == 0
if @shoptime.odd?
@shopback.ox += Galv_Shopkeeper::BACKGROUND_SCROLL_X
@shopback.oy += Galv_Shopkeeper::BACKGROUND_SCROLL_Y
end
check_button
other_poses if $game_system.shop_spose != nil
end

def check_button
if @desc_window.visible
if Input.trigger?(Galv_Shopkeeper::DETAILS_KEY) || Input.trigger?(:B)
case @command_window.current_symbol
when :buy
@buy_window.show.activate
when :sell
@sell_window.show.activate
end
RPG::SE.new(Galv_Shopkeeper::SE2[0], Galv_Shopkeeper::SE2[1], Galv_Shopkeeper::SE2[2]).play
@desc_window.hide
@keeper.bitmap = Cache.picture($game_system.shopkeeper)
end
elsif @buy_window.active || @sell_window.active
if Input.trigger?(Galv_Shopkeeper::DETAILS_KEY)
case @command_window.current_symbol
when :buy
return if @buy_window.item.nil?
@buy_window.hide.deactivate
@desc_window.refresh(@buy_window.item,0)
when :sell
if @sell_window.item.nil?
$game_system.shop_spose = 3
return other_poses
end
@sell_window.hide.deactivate
@desc_window.refresh(@sell_window.item,1)
end
@shoptime = 0
RPG::SE.new(Galv_Shopkeeper::SE1[0], Galv_Shopkeeper::SE1[1], Galv_Shopkeeper::SE1[2]).play
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::SHOW_DETAILS) rescue Cache.picture($game_system.shopkeeper)
hide_talk
@desc_window.show
end
end
end

def other_poses
case $game_system.shop_spose
when 0
@talk_window.set_text($game_system.shop_talk[6])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::CANT_BUY) rescue Cache.picture($game_system.shopkeeper)
when 1
@talk_window.set_text($game_system.shop_talk[7])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::CANT_SELL) rescue Cache.picture($game_system.shopkeeper)
when 2
@talk_window.set_text($game_system.shop_talk[8])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::MAX_ITEMS) rescue Cache.picture($game_system.shopkeeper)
when 3
@talk_window.set_text($game_system.shop_talk[10])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::NO_DETAILS) rescue Cache.picture($game_system.shopkeeper)
when 4
@talk_window.set_text($game_system.shop_talk[11])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::SOLD_OUT) rescue Cache.picture($game_system.shopkeeper)
end
show_talk
@shoptime = Galv_Shopkeeper::FRAME_TIME
$game_system.shop_spose = nil
end

def return_scene
@talk_window.set_text($game_system.shop_talk[9])
@keeper.bitmap = Cache.picture($game_system.shopkeeper + Galv_Shopkeeper::FAREWELL) rescue Cache.picture($game_system.shopkeeper)
show_talk
@shoptime = Galv_Shopkeeper::FRAME_TIME
@leave_shop = true
$game_system.shop_selected = 0
end

def terminate
super
@keeper.dispose
@keeper.bitmap.dispose
@shopback.dispose
@dkey.bitmap.dispose
@dkey.dispose
end

# OVERWRITE
def selling_price
if $game_variables[Galv_Shopkeeper::SALE_VAR] > 0
((@item.price * 0.01) * $game_variables[Galv_Shopkeeper::SALE_VAR]).round
else
@item.price / 2
end
end

end # Scene_Shop < Scene_MenuBase


class Scene_Title < Scene_Base
alias galv_shopkeeper_command_new_game command_new_game
def command_new_game
galv_shopkeeper_command_new_game
$game_variables[Galv_Shopkeeper::SALE_VAR] = 50 if $game_variables[Galv_Shopkeeper::SALE_VAR] > 0
end
end # Scene_Title < Scene_Base


class Window_ItemCount < Window_Base
def initialize(x, y, width, height)
super(x, y, width, height)
@item = nil
refresh
end

def refresh
contents.clear
draw_possession(4, 0)
end

def item=(item)
@item = item
refresh
end

def draw_possession(x, y)
rect = Rect.new(x, y, contents.width - 4 - x, line_height)
change_color(system_color)
draw_text(rect, Galv_Shopkeeper::ITEM_COUNT_TEXT)
change_color(normal_color)
draw_text(rect, $game_party.item_number(@item), 2)
end
end # Window_ItemCount < Window_Base


class Window_ShopNumber < Window_Selectable
attr_accessor :trans

alias galv_shopkeeper_number_initialize initialize
def initialize(x, y, height)
galv_shopkeeper_number_initialize(x, y, height)
@trans = :buy
draw_how_many
draw_stock
end

alias galv_shopkeeper_number_refresh refresh
def refresh
galv_shopkeeper_number_refresh
draw_how_many
draw_stock
end

def draw_how_many
change_color(system_color)
draw_text(4, 4, contents.width, line_height, Galv_Shopkeeper::HOW_MANY_TEXT)
change_color(normal_color)
end

def draw_stock
return if $game_system.shop_stock[$game_system.shop_selected].nil?
@stock = check_stock(@item)

if @stock > 0
text = @stock.to_s + " " + Galv_Shopkeeper::STOCK_TEXT
elsif @stock == 0
text = Galv_Shopkeeper::NO_STOCK
elsif @stock < 0
text = ""
end
change_color(text_color(Galv_Shopkeeper::STOCK_COLOR))
draw_text(4, 4, contents.width, line_height, text + " ",2) if @trans != :sell
change_color(normal_color)
end

def change_number(amount)
if @stock > 0; stock = @stock
else stock = @max
end
if @trans == :buy
@number = [[@number + amount, @max, stock].min, 1].max
elsif @trans == :sell
@number = [[@number + amount, @max].min, 1].max
end
end

include Shop_Stock

end # Window_ShopNumber < Window_Selectable


class Window_ShopStatus < Window_Base

alias galv_shopkeeper_window_status_initialize initialize
def initialize(x, y, width, height)
@walk = 0
@step = 0 # 0 is left, 1 is right
@animtime = 0
@e_images = {}
galv_shopkeeper_window_status_initialize(x, y, width, height)
end

# OVERWRITE
def refresh
contents.clear
draw_equip_info(Galv_Shopkeeper::ACTORS_X + 5, 40) if @item.is_a?(RPG::EquipItem)
end

def update
super
@animtime += 1
if @animtime == 10
case @walk
when 1; @walk -= 1
when -1; @walk += 1
when 0
if @step == 1
@walk = -1
@step = 0
else
@walk = 1
@step = 1
end
end
refresh
@animtime = 0
end
end

# OVERWRITE
def draw_equip_info(x, y)
status_members.each_with_index do |actor, i|
draw_actor_equip_info(x + (i * Galv_Shopkeeper::ACTORS_SPACE), y, actor)
end
end

# OVERWRITE
def page_size
return Galv_Shopkeeper::ACTORS_SHOWN
end

# OVERWRITE
def draw_actor_equip_info(x, y, actor)
enabled = actor.equippable?(@item)
change_color(normal_color, enabled)
item1 = current_equipped_item(actor, @item.etype_id)
if Galv_Shopkeeper::IMAGE_OVER
draw_character(actor.character_name, actor.character_index, x + 10, y + 11, enabled)
draw_actor_param_change(x - 10, y + 10, actor, item1) if enabled
else
draw_actor_param_change(x - 10, y + 10, actor, item1) if enabled
draw_character(actor.character_name, actor.character_index, x + 10, y + 11, enabled)
end
if Galv_Shopkeeper::SHOW_PARAM_NAME
draw_text(x - 8, y - 40, 40, line_height, Vocab::param(@p_id),1) if enabled
end
end

def draw_character(character_name, character_index, x, y,enabled)
return unless character_name
bitmap = Cache.character(character_name)
sign = character_name[/^[\!\$]./]
if sign && sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
n = character_index
step = 0
step = @walk if enabled
src_rect = Rect.new((n%4*3+1+step)*cw, (n/4*4)*ch, cw, ch)
contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end

# OVERWRITE
def draw_actor_param_change(x, y, actor, item1)
@p_id = pid(actor.class_id)
rect = Rect.new(x, y - 2, 40, line_height)
change = @item.params[@p_id] - (item1 ? item1.params[@p_id] : 0)
change_color(param_change_color(change))
draw_e_image(rect.x,rect.y,actor.id,change) if Galv_Shopkeeper::SHOW_COMPARE_IMAGE
contents.font.size = 20
draw_text(rect, sprintf("%+d", change), 1) if Galv_Shopkeeper::SHOW_PARAM_CHANGE
contents.font.size = 20
end

def pid(cid)
primary_param = $data_classes[cid].primary_params
@item.is_a?(RPG::Weapon) ? type = primary_param[0] : primary_param[1]
end

def draw_e_image(x,y,actor_id,change)
if change > 0
bitmap = Cache.system(Galv_Shopkeeper::E_INCREASE)
elsif change < 0
bitmap = Cache.system(Galv_Shopkeeper::E_DECREASE)
else
bitmap = Cache.system(Galv_Shopkeeper::E_SAME)
end
src_rect = Rect.new(0, 0, 100, 100)
contents.blt(x, 0, bitmap, src_rect)
end




end # Window_ShopStatus < Window_Base


class Window_ShopBuy < Window_Selectable

# OVERWRITE
def initialize(x, y, height, shop_goods)
super(x, y, window_width, height)
@shop_goods = shop_goods
@money = 0
@max_items_reached = false
refresh
select(0)
end

def count_window=(count_window)
@count_window = count_window
end

def desc_window=(desc_window)
@desc_window = desc_window
end

# OVERWRITE
def update_help
@help_window.set_item(item) if @help_window
@status_window.item = item if @status_window
@count_window.item = item if @count_window
@desc_window.item = item if @desc_window
end

# OVERWRITE
def current_item_enabled?
if $game_party.item_max?(item)
@max_items_reached = true
else
@max_items_reached = false
end
if check_stock(item) == 0
@item_sold_out = true
else
@item_sold_out = false
end
enable?(@data[index])
end

def enable?(item)
item && price(item) <= @money && !$game_party.item_max?(item) &&
check_stock(item) != 0
end

# OVERWRITE
def draw_item(index)
item = @data[index]
stock = check_stock(item)
rect = item_rect(index)
draw_item_name(item, rect.x, rect.y, enable?(item))
rect.width -= 4
if stock == 0
draw_text(rect, Galv_Shopkeeper::NO_STOCK, 2)
else
draw_text(rect, price(item), 2)
end
end

def process_ok
if current_item_enabled?
Sound.play_ok
Input.update
deactivate
call_ok_handler
else
if @item_sold_out == true
$game_system.shop_spose = 4
elsif @max_items_reached == false
$game_system.shop_spose = 0
else
$game_system.shop_spose = 2
end
Sound.play_buzzer
end
end

include Shop_Stock

end # class Window_ShopBuy < Window_Selectable


class Window_ShopSell < Window_ItemList
def col_max
return 1
end

def process_ok
if current_item_enabled?
Sound.play_ok
Input.update
deactivate
call_ok_handler
else
$game_system.shop_spose = 1
Sound.play_buzzer
end
end

def status_window=(status_window)
@status_window = status_window
end

def update_help
@help_window.set_item(item) if @help_window
@status_window.item = item if @status_window
end
end # Window_ShopSell < Window_ItemList


class Window_ItemDesc < Window_Base
def initialize(x, y, width, height)
super(x, y, width, height)
@item = nil
@shop_type = 0
end

def refresh(item,type)
@item = item
contents.clear
return if item.nil?
@shop_type = type
draw_item_name(@item, 0, 0)
draw_currency_value(get_price, Vocab::currency_unit, 0, 0, contents.width)
equip_stats if @item.is_a?(RPG::EquipItem)
item_stats if @item.is_a?(RPG::Item)
end

def get_price
if @shop_type == 0
return @item.price
else
if $game_variables[Galv_Shopkeeper::SALE_VAR] > 0
return ((@item.price * 0.01) * $game_variables[Galv_Shopkeeper::SALE_VAR]).round
else
return @item.price / 2
end
end
end

def stat_col
contents.width / 2
end

def equip_stats
y_offset = -15
draw_equip_stats(0, line_height * 2 + y_offset, 0) # HP
draw_equip_stats(stat_col, line_height * 2 + y_offset, 1) # MP
draw_equip_stats(0, line_height * 3 + y_offset, 2) # ATK
draw_equip_stats(stat_col, line_height * 3 + y_offset, 3) # DEF
draw_equip_stats(0, line_height * 4 + y_offset, 4) # MAT
draw_equip_stats(stat_col, line_height * 4 + y_offset, 5) # MDF
draw_equip_stats(0, line_height * 5 + y_offset, 6) # AGI
draw_equip_stats(stat_col, line_height * 5 + y_offset, 7) # LUK
draw_icons(100, line_height * 6 , width = 96) # States
end

def item=(item)
@item = item
refresh
end

def draw_equip_stats(x, y, param_id)
draw_param_name(x + 4, y, param_id)
draw_param(x + 94, y, param_id)
end

def draw_icons(x, y, width = 96)
icons = [] # atk
icons2 = [] # resistances
@item.features.each do |f|
if f.code == 32
icons << $data_states[f.data_id].icon_index
elsif f.code == 14
icons2 << $data_states[f.data_id].icon_index
end
end
if icons != []
change_color(system_color)
draw_text(0, line_height * 6, 120, line_height, "Inflicts")
change_color(normal_color)
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
elsif icons2 != []
change_color(system_color)
draw_text(0, line_height * 6, 120, line_height, "Resists")
change_color(normal_color)
icons2.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
end
end

def draw_param_name(x, y, param_id)
change_color(system_color)
draw_text(x, y, 80, line_height, Vocab::param(param_id))
end

def draw_param(x, y, param_id)
if @item.params[param_id] > 0
change_color(power_up_color)
elsif @item.params[param_id] < 0
change_color(power_down_color)
else
change_color(normal_color)
end
draw_text(x, y, 32, line_height, @item.params[param_id].to_s, 2)

end

def item_stats
x = 0
y = 0
line = 1
y_offset = 15
width = contents.width
rem_states = []
add_states = []
add_buffs = []
rem_buffs = []

if @item.damage.type != 0
change_color(system_color)
case @item.damage.type
when 1; vocab = Vocab::hp_a + " Damage"
when 2; vocab = Vocab::mp_a + " Damage"
when 3; vocab = Vocab::hp_a + " Restore"
when 4; vocab = Vocab::mp_a + " Restore"
when 5; vocab = Vocab::hp_a + " Drain"
when 6; vocab = Vocab::mp_a + " Drain"
end
draw_text(0, line_height * line + y_offset, width, line_height, vocab, 0)
change_color(normal_color)
draw_text(0, line_height * line + y_offset, width, line_height, @item.damage.formula.to_s, 2)
line += 1
end

@item.effects.each do |e|
next if line == 6
change_color(system_color)
case e.code
when 11; vocab = Vocab::hp_a; vocab2 = Vocab::hp
when 12; vocab = Vocab::mp_a; vocab2 = Vocab::mp
when 13; vocab = Vocab::tp_a; vocab2 = Vocab::tp
end

case e.code
when 11, 12
draw_text(0, line_height * line + y_offset, width, line_height, vocab + " (" + vocab2 + ")", 0)
v1 = (e.value1 * 100).to_i
v2 = e.value2.to_i
if e.value1 == 0
check_color(v2)
draw_text(0, line_height * line + y_offset, width, line_height, v2.to_s, 2)
elsif e.value2 == 0
check_color(v1)
draw_text(0, line_height * line + y_offset, width, line_height, v1.to_s + "%", 2)
else
check_color(v1)
draw_text(0, line_height * line + y_offset, width, line_height, v2.to_s + " + " + v1.to_s + "%", 2)
end
line += 1
when 13
draw_text(0, line_height * line + y_offset, width, line_height, vocab + " (" + vocab2 + ")", 0)
check_color(e.value1)
draw_text(0, line_height * line + y_offset, width, line_height, e.value1.to_i.to_s + "%", 2)
line += 1
when 21
#add state
add_states << e.data_id unless e.data_id == 0
when 22
#remove state
rem_states << e.data_id unless e.data_id == 0
when 31, 32
#add buff/debuffs
add_buffs << (64 + e.data_id) if e.code == 31
add_buffs << (64 + e.data_id + 16) if e.code == 32
when 33, 34
rem_buffs << (64 + e.data_id) if e.code == 33
rem_buffs << (64 + e.data_id + 16) if e.code == 34
when 42
#grow stat
change_color(system_color)
name = $data_system.terms.params[e.data_id] + " Increase"
draw_text(0, line_height * line + y_offset, width, line_height, name, 0)
change_color(normal_color)
draw_text(0, line_height * line + y_offset, width, line_height, e.value1.to_i.to_s, 2)
line += 1
when 43
#learn skill
change_color(system_color)
skill = $data_skills[e.data_id].name
draw_text(0, line_height * line + y_offset, width, line_height, "Learn", 0)
change_color(normal_color)
draw_text(0, line_height * line + y_offset, width, line_height, skill, 2)
line += 1
end
end

if add_states != [] && line < 6 || add_buffs != [] && line < 6
x = 90
icons = []
add_states.each do |s|
icons << $data_states[s].icon_index
end
add_buffs.each do |b|
icons << b
end
change_color(system_color)
draw_text(0, line_height * line + y_offset, width, line_height, "Applies")
change_color(normal_color)
icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, line_height * line + y_offset) }
line += 1
end

if rem_states != [] && line < 6 || rem_buffs != [] && line < 6
x = 90
icons2 = []
rem_states.each do |s|
icons2 << $data_states[s].icon_index
end
rem_buffs.each do |b|
icons2 << b
end
change_color(system_color)
draw_text(0, line_height * line + y_offset, width, line_height, "Removes")
change_color(normal_color)
icons2.each_with_index {|n, i| draw_icon(n, x + 24 * i, line_height * line + y_offset) }
line += 1
end
end

def check_color(amount)
if amount < 0
change_color(power_down_color)
else
change_color(normal_color)
end
end
end # Window_ItemDesc < Window_Base


class Window_Base < Window
alias galv_shopkeeper_windowbase_initialize initialize
def initialize(x, y, width, height)
galv_shopkeeper_windowbase_initialize(x, y, width, height)
if SceneManager.scene_is?(Scene_Shop)
self.windowskin = Cache.system($game_system.shop_windowskin)
end
end
end # Window_Base < Window


class RPG::Class
def primary_params
if @primary_params.nil?
if @note =~ //i
@primary_params = [$1.to_i,$2.to_i]
else
@primary_params = [2,3]
end
end
@primary_params
end
end # RPG::Class


#------------------------------------------------------------------------------#
# COMPATABILITY PATCH FOR YANFLY'S EQUIP DYNAMIC STATS SCRIPT
#------------------------------------------------------------------------------#
# If you don't use this script from Yanfly, you can remove this. #
#------------------------------------------------------------------------------#

if $imported["YEA-EquipDynamicStats"]
class Window_ShopStatus < Window_Base
def draw_actor_param_change(x, y, actor, item1)
rect = Rect.new(x, y, 40, line_height)
change = actor_param_change_value(actor, item1)
change_color(param_change_color(change))
text = change.group
text = "+" + text if change >= 0
draw_text(rect, sprintf("%+d", change), 1)
end
end # Window_ShopStatus

class Window_ItemDesc < Window_Base
def draw_equip_stats(x, y, param_id)
draw_param_name(x + 4, y, param_id)
draw_param(x + 30, y, param_id)
end

def draw_param(x, y, param_id)
a = @item.params[param_id] + $game_variables[@item.var_params[param_id]]
b = @item.per_params[param_id]
if a > 0 || b > 0; change_color(power_up_color)
elsif a < 0 || b < 0; change_color(power_down_color)
else; change_color(normal_color); end
a != 0 && b != 0 ? plus = "+" : plus = ""
if b != 0; perc = "%"; b = (b *= 100).to_i.to_s; else; perc = ""; b = ""; end
if b == "" && a == 0; a = 0; elsif b != "" && a == 0; a = ""; end
draw_text(x, y, 100, line_height, a.to_s + plus + b.to_s + perc, 2)
end
end # Window_ItemDesc < Window_Base
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ray

avatar

Messages : 658


MessageSujet: Re: script magasin   Mar 22 Oct - 22:59

Essaye de mettre ton script dans une balise code parce que là, ça fait vraiment long comme post ^^
Sinon, je ne peux pas vraiment t'aider sur ce script (RGSS et moi ça fait plusieurs, toussa... )...
Mais je te conseille de lire les commentaires les trucs, derrière #, même si c'est en anglais. Le code m'a l'air très bien commenté. A moins d'être un total anglophobe, tu devrais pouvoir trouver ce que tu cherches Clin d\'oeil

EDIT : Oublie ce que j'ai dit, le code est plutôt bien commenté au début seulement
Reste plus qu'à espérer que quelqu’un s'y connaissant un peu mieux que moi passera par là ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 
script magasin
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Appeler un script/ une page PHP?
» [Script RMVX] Fenêtre additionnelle
» After Effects script
» [demande] conversion de script
» Extension magasin (1er Rendu avec Atl)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker Détente :: La Guinguette participative :: Entraide-
Sauter vers: