Mise à jours finale qui ajoute des opérandes !
Listes des commandes
Il est aussi possible d'attribuer une opérande (valeur aléaoire, coordonnées, expériences etc).
Voici la liste des coordonnées
* commande(:rand, 9, 18) => Retourne un nombre aléatoire entre 9 et 18
* commande(:id_map) => Retourne ID de la map
* commande(:team_size) => Retourne la taille de la team
* commande(:gold) => Retourne l'argent
* commande(:steps) => Retourne le nombre de pas
* commande(:play_time) => Retourne la durée de jeu
* commande(:timer) => Retourne la valeur du chronometre
* commande(:save_count) => le nombre de sauvegarde
* commande(:event_x, id) => le X (coordonnées) de levent ID
* commande(:event_y, id) => le y (coordonnées) de levent ID
* commande(:event_screen_y, id) => le y (écran) de levent ID
* commande(:event_screen_x, id) => le x (écran) de levent ID
* commande(:event_direction, id) => la direction de levent ID
* commande(:heroes_x, id) => le X (coordonnées) du héros
* commande(:heroes_y, id) => le Y (coordonnées) du héros
* commande(:heroes_screen_y, id) => le Y (ecran) du héros
* commande(:heroes_screen_x, id) => le X (ecran) du héros
* commande(:heroes_direction, id) => la direction du héros
* commande(:level, id) => niveau du personnage en fonction de l ID
* commande(:exp, id) => expérience du personnage en fonction de l ID
* commande(:hp, id) => hp du personnage en fonction de l ID
* commande(:mp, id) => mp du personnage en fonction de l ID
* commande(:max_hp, id) => HP Max du personnage en fonction de l ID
* commande(:max_mp, id) => MP Max du personnage en fonction de l ID
* commande(:atk, id) => Puissance attaque du personnage en fonction de l ID
* commande(:def, id) => Défence du personnage en fonction de l ID
* commande(:spi, id) => Spiritualité du personnage en fonction de l ID
* commande(:agi, id) => Agilité du personnage en fonction de l ID
* commande(:nb_item, id) => nombre d'objet possédés en fonction de l ID
* commande(:var, id) => attribue une variable en fonction de son ID a une variable locale
Exemple avec la commande rand => set(1, commande(:rand, 9, 19))
Code : Tout sélectionner
#Ajout de la gestion des variables locales aux evenement
#Auteur: Nuki
#Liste des méthodes utilisables
#=============================================================
# get(map_id, evt_id, id) -> retourne la variable n°id de l'evenement n°evt_id de la map n°map_id
# => Alias : get_by_map(map_id, evt_id, id)
# get(evt_id, id) -> retourne la variable n°id de l'evenement n°evt_id de la map courante
# => Alias : get_by_event(evt_id, id)
# get(id) -> retourne la variable n°id de l'evenement courant
# => Alias : get_by_id(id)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# set(map_id, evt_id, id, valeur) -> attribue valeur à la variable n°id de l'evenement n°evt_id de la map n°map_id
# => Alias : set_by_map(map_id, evt_id, id, valeur)
# set(evt_id, id, valeur) -> attribue valeur à la variable n°id de l'evenement n°evt_id de la map courante
# => Alias : set_by_event(evt_id, id, valeur)
# set(id, valeur) -> attribue valeur à la variable n°id de l'evenement courant
# => Alias : set_by_id(id, valeur)
#=============================================================
# commande("commande_name", args) => Retourne une opérande des variables
# OU commande(:commande, args)
#=============================================================
module SelfVar
class << self
def set(id_map, event_id, id, value)
index = $game_self_var.index(
$game_self_var.find{
|variable|
variable.map_id == map_id && variable.event_id == event_id && variable.id == id
})
if index == nil
$game_self_var << Self_Var.new(map_id, event_id, id, value)
else
$game_self_var[index].value = value
end
end
def get(map_id, event_id, id)
local = $game_self_var.find{
|variable|
variable.map_id == map_id && variable.event_id == event_id && variable.id == id
}
return local.value if local.instance_of?(Self_Var)
return 0 if local == nil
end
end
end
class Self_Var
attr_accessor :map_id
attr_accessor :event_id
attr_accessor :id
attr_accessor :value
def initialize(map_id, event_id, id, value)
@map_id = map_id
@event_id = event_id
@id = id
@value = value
end
end
class Scene_Title
alias var_main main
def main
var_main
$game_self_var = Array.new
end
end
class Game_Interpreter
# Récupère une variable en fonction de toute ces données
def get_by_map(map_id, event_id, id)
local = $game_self_var.find{
|variable|
variable.map_id == map_id && variable.event_id == event_id && variable.id == id
}
return local.value if local.instance_of?(Self_Var)
return 0 if local == nil
end
# Récupère une variable en fonction de son ID d'event et de son idée sur la map courante
def get_by_event(event_id, id)
return get_by_map(@map_id, event_id, id)
end
# Récupère la variable de l'evenement courant en fonction d'une ID
def get_by_id(id)
return get_by_map(@map_id, @event_id, id)
end
# Attribue une variable en fonction de toutes les données
def set_by_map(map_id, event_id, id, value)
index = $game_self_var.index(
$game_self_var.find{
|variable|
variable.map_id == map_id && variable.event_id == event_id && variable.id == id
})
if index == nil
$game_self_var << Self_Var.new(map_id, event_id, id, value)
else
$game_self_var[index].value = value
end
end
# Attribue une variable en fonction de l'evenement ID et de l'ID de la variable
def set_by_event(event_id, id, value)
set_by_map(@map_id, event_id, id, value)
end
# Attribue une variable en fonction de l'ID de la variable dans l'evenement courant
def set_by_id(id, value)
set_by_map(@map_id, @event_id, id, value)
end
#gestion des commandes
def commande(commande, *args)
case args.length
when 0
return Commandes::send(commande)
when 1
return Commandes::send(commande, args[0])
when 2
return Commandes::send(commande, args[0], args[1])
end
end
#Utilisation GET générique
def get(*args)
if args.length == 3
return get_by_map(args[0], args[1], args[2])
elsif args.length == 2
return get_by_event(args[0], args[1])
elsif args.length == 1
return get_by_id(args[0])
else
return 0
end
end
#Utilisation SET générique
def set(*args)
if args.length == 4
set_by_map(args[0], args[1], args[2], args[3])
return true
elsif args.length == 3
set_by_event(args[0], args[1], args[2])
return true
elsif args.length == 2
set_by_id(args[0], args[1])
return true
else
return false
end
end
end
module Commandes
class << self
# Random
def rand(*args)
return args[0] + Kernel.rand(args[1] - args[0])
end
# id Map
def id_map(*args)
return $game_map.map_id
end
#Taille de l'équipe
def team_size(*args)
return $game_party.members.size
end
# Argent de l'équipe
def gold(*args)
return $game_party.gold
end
# Nombre de pas
def steps(*args)
return $game_party.steps
end
# temps de jeu
def play_time(*args)
return Graphics.frame_count / Graphics.frame_rate
end
# Chronometre
def timer(*args)
return $game_system.timer / Graphics.frame_rate
end
# nombre de sauvegarde
def save_count(*args)
return $game_system.save_count
end
# coord_x evenement
def event_x(*args)
return $game_map.events[args[0]].x if args[0] != -1
return $game_player.x
end
# coord_y evenement
def event_y(*args)
return $game_map.events[args[0]].y if args[0] != -1
return $game_player.y
end
# coord screen y
def event_screen_y(*args)
return $game_map.events[args[0]].screen_y if args[0] != -1
return $game_player.screen_y
end
# coord screen x
def event_screen_x(*args)
return $game_map.events[args[0]].screen_x if args[0] != -1
return $game_player.screen_x
end
# coord screen x
def event_direction(*args)
return $game_map.events[args[0]].direction if args[0] != -1
return $game_player.direction
end
# coord heros
def heroes_x(*args)
return Commandes::event_x(-1)
end
def heroes_y(*args)
return Commandes::event_y(-1)
end
def heroes_screen_x(*args)
return Commandes::event_screen_x(-1)
end
def heroes_screen_y(*args)
return Commandes::event_screen_y(-1)
end
def heroes_direction(*args)
return Commandes::event_direction(-1)
end
# Level of an actor
def level(*args)
return $game_actors[args[0]].level
end
# exp of an actor
def exp(*args)
return $game_actors[args[0]].exp
end
#hp of an actor
def hp(*args)
return $game_actors[args[0]].hp
end
# mp of an actor
def mp(*args)
return $game_actors[args[0]].mp
end
#max hp of an actor
def max_hp(*args)
return $game_actors[args[0]].maxhp
end
# max mp of an actor
def max_mp(*args)
return $game_actors[args[0]].maxmp
end
# attaque of an actor
def atk(*args)
return $game_actors[args[0]].atk
end
# defense of an actor
def def(*args)
return $game_actors[args[0]].def
end
# attaque of an actor
def spi(*args)
return $game_actors[args[0]].spi
end
# attaque of an actor
def agi(*args)
return $game_actors[args[0]].agi
end
# item
def nb_item(*args)
return $game_party.item_number($data_items[args[0]])
end
# Get a true var value
def var(*args)
return $game_variables[args[0]]
end
end
end
class Scene_File
alias var_write_save_data write_save_data
alias var_read_save_data read_save_data
def write_save_data(file)
var_write_save_data(file)
Marshal.dump($game_self_var,file)
end
def read_save_data(file)
var_read_save_data(file)
$game_self_var = Marshal.load(file)
end
end