Ce script écrit par Biward ajoute un compteur d’achats et de ventes pour chaque objet, arme et armure dans RPG Maker XP.
Il permet de savoir combien de fois un élément a été acheté ou vendu dans les boutiques, information qui n’existe pas nativement dans RMXP.
Les compteurs sont :
- automatiques,
- persistants (sauvegardés dans les fichiers de sauvegarde),
- accessibles facilement via des commandes script.
Commandes disponibles (à utiliser dans les événements)
Toutes les commandes suivantes retournent un nombre entier, facilement stockable dans une variable RMXP.
counterb_item(id) # nombre d’achats de l’objet ID
counters_item(id) # nombre de ventes de l’objet ID
counterb_armo(id) # nombre d’achats de l’armure ID
counters_armo(id) # nombre de ventes de l’armure ID
counterb_weap(id) # nombre d’achats de l’arme ID
counters_weap(id) # nombre de ventes de l’arme ID
Exemple d’utilisation
- Débloquer un objet spécial si un objet a été acheté X fois
- Adapter les prix selon les habitudes du joueur
- Déclencher un événement si une arme est souvent vendue
- Créer des statistiques internes de gameplay
- Etc.
Script
#############################################################################################
################################## Buy & Sell Counter ###########################################
#############################################################################################
# Auteur : Biward
# Date : 01/09/32 16h01
#
# Ce script permet d'avoir un compteur d'achat et de vente pour chaque objet
#
# Les commandes sont :
# - counterb_item(id) connaitre le nombre d'achat de l'objet ID
# - counters_item(id) connaitre le nombre de vente de l'objet ID
# - counterb_weap(id) connaitre le nombre d'achat de l'arme ID
# - counters_weap(id) connaitre le nombre de vente de l'arme ID
# - counterb_armo(id) connaitre le nombre d'achat de l'armure ID
# - counters_armo(id) connaitre le nombre de vente de l'armure ID
#
# Le tout est donc stockable dans une variable pour vous faciliter la vie !
#
#############################################################################################
#################################### Début du script ############################################
#############################################################################################
### Scene_Shop ###
class Scene_Shop
alias dnibico update_number
def update_number
if Input.trigger?(Input::C)
case @command_window.index
when 0 # buy
$game_buycounter[@item] += @number_window.number
when 1 # sell
$game_sellcounter[@item] += @number_window.number
end
end
dnibico
end
end
### Game_BuySellCounter ###
class Game_BuySellCounter
def initialize
@data = Array.new
3.times { @data << [] }
end
def [](variable_id)
@data[which_type(variable_id)][variable_id.id] || 0
end
def []=(variable_id, value)
@data[which_type(variable_id)][variable_id.id] = value
end
def which_type(v)
w = 0 if v.is_a?(RPG::Item)
w = 1 if v.is_a?(RPG::Weapon)
w = 2 if v.is_a?(RPG::Armor)
w
end
end
### Scene_Title ###
class Scene_Title
alias cgobico2 command_new_game
def command_new_game
$game_buycounter = Game_BuySellCounter.new
$game_sellcounter = Game_BuySellCounter.new
cgobico2
end
end
### Scene_File ###
class Scene_Save
alias wsdbico2 write_save_data
def write_save_data(file)
wsdbico2(file)
Marshal.dump($game_buycounter, file)
Marshal.dump($game_sellcounter, file)
end
end
class Scene_Load
alias rsdbico2 read_save_data
def read_save_data(file)
rsdbico2(file)
$game_buycounter = Marshal.load(file)
$game_sellcounter = Marshal.load(file)
end
end
### Game_Interpreter ###
class Interpreter
def counterb_item(id)
$game_buycounter[$data_items[id]]
end
def counters_item(id)
$game_sellcounter[$data_items[id]]
end
def counterb_weap(id)
$game_buycounter[$data_weapons[id]]
end
def counters_weap(id)
$game_sellcounter[$data_weapons[id]]
end
def counterb_armo(id)
$game_buycounter[$data_armors[id]]
end
def counters_armo(id)
$game_sellcounter[$data_armors[id]]
end
end
#############################################################################################
#################################### Fin du Script ###############################################
#############################################################################################