Variables locales
2 participants
Page 1 sur 1
Variables locales
Ce script ajoute un espace nom aux variables et permet de créer une notion de "portée locale".
Elle fonctionne comme la version VX.
Il est possible d'ajouter des commandes en monkeypatchant le module Commandes et en donnant a ses méthodes une portée statique :
Je n'ai pas testé toutes les commandes qui viennent de l'ancien script de Nuki.
Ce script est utile pour créer des systèmes complexes rapidement
si vous avez besoin d'aide : molok6000_AT_hotmail.com
je ne lis pas souvent mes mails sur cette adresse mais je vais souvent sur MSN.
Bonne année.
Elle fonctionne comme la version VX.
Il est possible d'ajouter des commandes en monkeypatchant le module Commandes et en donnant a ses méthodes une portée statique :
- Code:
# Utilitaire de variables locales pour RPG MAKER VX ACE
# http://funkywork.blogspot.com
# -------------------------------------------------------------------------------
#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)
#=============================================================
# cmd("commande_name", args) => Retourne une opérande des variables
# OU cmd(:commande, args)
#=============================================================
# Liste des commandes utilisables (à appeler comme ceci : cmd(:nom_de_la_commande, parametre1, parametre2 etc...) )
module Commandes
extend 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
def distance_px(*args)
event1 = (args[0] == 0) ? $game_player : $game_map.events[args[0]]
event2 = (args[1] == 0) ? $game_player : $game_map.events[args[1]]
return Math.hypot((event1.screen_x - event2.screen_x), (event1.screen_y-event2.screen_y))
end
# donne la distance entre 2 events en case
def distance_case(*args)
event1 = (args[0] == 0) ? $game_player : $game_map.events[args[0]]
event2 = (args[1] == 0) ? $game_player : $game_map.events[args[1]]
return Math.hypot((event1.x - event2.x), (event1.y-event2.y))
end
end
class Game_SelfVar
attr_reader :id, :event_id, :map_id
attr_accessor :value
def initialize id, event_id, map_id, value
@id, @event_id, @map_id, @value = id, event_id, map_id, value
end
def +(value)
@value += value
end
def -(value)
@value -= value
end
def *(value)
@value *= value
end
def /(value)
@value /= value
end
def %(value)
@value %= value
end
def **(value)
@value = @value ** value
end
class << self
def get map_id, event_id, id
elt = $game_selfVars.find do |var |
var.id == id and
var.event_id == event_id and
var.map_id == map_id
end
if elt == nil
return 0
else return elt.value
end
end
def set map_id, event_id, id, value
elt = $game_selfVars.index do |var |
var.id == id and
var.event_id == event_id and
var.map_id == map_id
end
if elt == nil
$game_selfVars << self.new(id, event_id, map_id, value)
else
$game_selfVars[elt].value = value
end
end
end
end
module DataManager
class << self
alias ace_create_game_objects create_game_objects
alias ace_extract_save_contents extract_save_contents
alias ace_make_save_contents make_save_contents
def create_game_objects
ace_create_game_objects
$game_selfVars = Array.new
end
def make_save_contents
contents = ace_make_save_contents
contents[:selfVars] = $game_selfVars
return contents
end
def extract_save_contents(contents)
ace_extract_save_contents contents
$game_selfVars = contents[:selfVars]
end
end
end
class Game_Interpreter
def set_by_map map_id, event_id, id, value
Game_SelfVar.set map_id, event_id, id, value
end
def set_by_event event_id, id, value
Game_SelfVar.set @map_id, event_id, id, value
end
def set_by_id id, value
Game_SelfVar.set @map_id, @event_id, id, value
end
def get_by_map map_id, event_id, id
Game_SelfVar.get map_id, event_id, id
end
def get_by_event event_id, id
Game_SelfVar.get @map_id, event_id, id
end
def get_by_id id
Game_SelfVar.get @map_id, @event_id, id
end
def set *array
case array.length
when 2 then
set_by_id array[0], array[1]
when 3 then
set_by_event array[0], array[1], array[2]
when 4 then
set_by_map array[0], array[1], array[2], array[3]
else return false
end
end
def get *array
case array.length
when 1 then
return (get_by_id array[0])
when 2 then
(get_by_event array[0], array[1])
when 3 then
(get_by_map array[0], array[1], array[2])
else return 0
end
end
def cmd(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
end
Je n'ai pas testé toutes les commandes qui viennent de l'ancien script de Nuki.
Ce script est utile pour créer des systèmes complexes rapidement
si vous avez besoin d'aide : molok6000_AT_hotmail.com
je ne lis pas souvent mes mails sur cette adresse mais je vais souvent sur MSN.
Bonne année.
Kolom- Poulet trizo Lv.3
- Messages : 16
Fiche
Palmarès: 1
Spécialité: Script
Avertissements: Aucun
Re: Variables locales
Ah yes, le même script que sur la commu' VX!
Merci du partage! =)
(je te met pas de points, on a supprimé toutes les barres ya quelques mois, ça servait à rien )
Merci du partage! =)
(je te met pas de points, on a supprimé toutes les barres ya quelques mois, ça servait à rien )
elm6- Justicier Lv.Zero
- Messages : 2547
Age : 33
Fiche
Palmarès: 2
Spécialité: Ecriture, making
Avertissements: Aucun
Re: Variables locales
Je rigole quand je querit des points je m'en fiche un peu
Pour les "commandes", je dois avouer que j'ai volé celui de Nuki pour VX donc il manque peut être des commandes PRIMORDIALES pour ACE mais écrire une commande est facile et si vous en avez besoin d'une spécifique, il suffit de demander
Pour les "commandes", je dois avouer que j'ai volé celui de Nuki pour VX donc il manque peut être des commandes PRIMORDIALES pour ACE mais écrire une commande est facile et si vous en avez besoin d'une spécifique, il suffit de demander
Kolom- Poulet trizo Lv.3
- Messages : 16
Fiche
Palmarès: 1
Spécialité: Script
Avertissements: Aucun
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|