- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
[VXAce] SBS Homemade
Dim 12 Jan 2014 - 17:33
Auteur : Skillo
Version du script : V 0.2 (ça avance ^^)
Principe du script : C'est un script de SBS que j'ai bidouillé en quelques heures.
Le principe pour l'instant est de faire un SBS maison, en gardant le moteur de combat de VX Ace.
Attention ceci est un début, je vais étoffer par la suite.
Contenu :
A venir :
Instructions :
Pour que le script marche il faut télécharger le fichier "json.rb" et le mettre à la racine de votre projet ainsi que créer deux fichier "battlers.json" et "positions.json" et les remplir avec les json disponibles un peu plus loin.
Script :
Fichiers de configuration :
Ce fichier sert à definir les battlers. Il est en deux parties :
Chaque battler est attribué en fonction d'un id et il peut avoir plusieurs parametres :
Si un héros n'est pas définie dans ce fichier de config alors on utilisera sont character par défaut sans animation.
Si un ennemie n'est pas définie dans ce fichier de config alors on utilisera son image fixe par défaut.
Fichier ruby à placer à la racine de votre projet :
http://www.mediafire.com/view/2axzacfjd87dacv/json.rb
Screen :
Pour l'instant ça donne ça
ou ça
ou un mix des deux
Edit : ajout de la configuration dans un fichier json + gestion du zoom sur les battlers
Edit : ajout de la configuration dans deux fichiers json + gestion des characters pour les combat à avec possibilité de les animers
Version du script : V 0.2 (ça avance ^^)
Principe du script : C'est un script de SBS que j'ai bidouillé en quelques heures.
Le principe pour l'instant est de faire un SBS maison, en gardant le moteur de combat de VX Ace.
Attention ceci est un début, je vais étoffer par la suite.
Contenu :
- Possibilité de choisir une image comme battler pour chaque perso
- Placement automatique des perso et des enemy sur la surface de combat
- Configuration du SBS dans un fichier de configuration en JSON
- Possibilité de Configurer le positionnement et le zoom des ennemies et des persos en fonction du nombre
- Possibilité d'utiliser des characters pour les perso et les enemies et de les faire marcher
A venir :
- Possibilité de définir des battler animés autre que les character de base (j'ai prévue de ne pas mettre de limite au niveau de l'animation)
- Possibilité de définir une animation sur les perso et les ennemies lors d'un sort ou d'une attaque
- Eventuelement un ATB
- D'autres trucs ^^
Instructions :
Pour que le script marche il faut télécharger le fichier "json.rb" et le mettre à la racine de votre projet ainsi que créer deux fichier "battlers.json" et "positions.json" et les remplir avec les json disponibles un peu plus loin.
Script :
- Scrpt à coller au dessus de Main:
- Code:
#==============================================================================
# ** Require
#------------------------------------------------------------------------------
# This module require.
#==============================================================================
module Require
#--------------------------------------------------------------------------
# * Methode require de Berka
#--------------------------------------------------------------------------
def self.require(dll)
$LOAD_PATH<<"./"
Kernel.send(:require,dll)
end
end
#==============================================================================
# ** SBSManager
#------------------------------------------------------------------------------
# This module manages SBS.
#==============================================================================
module SBSManager
#--------------------------------------------------------------------------
# * Load Config
#--------------------------------------------------------------------------
def self.load_config(filename)
if FileTest.exist?("json.rb")
Require.require 'json'
else
error_json("json.rb does not exist")
end
if FileTest.exist?(filename)
File.open(filename) do |file|
text = file.read.gsub("\n","").gsub("\t","").gsub(" ","")
json_object = JSON.decode(text)
error_json("JSON File "+ filename +" is not valid") if json_object.nil?
json_object
end
else
error_json(filename+" does not exist")
end
end
#--------------------------------------------------------------------------
# * Display error
#--------------------------------------------------------------------------
def self.error_json(msg)
msgbox(msg)
exit
end
#--------------------------------------------------------------------------
# * Methode to_boolean
#--------------------------------------------------------------------------
def self.to_boolean(value)
(value.to_s =~ (/(true|t|yes|y|1)$/i)) == 0
end
end
#==============================================================================
# ** DataManager
#------------------------------------------------------------------------------
# This module manages the database and game objects. Almost all of the
# global variables used by the game are initialized by this module.
#==============================================================================
module DataManager
class << self
#--------------------------------------------------------------------------
# * Create Game Objects
#--------------------------------------------------------------------------
alias :skillo_sbs_create_game_objects :create_game_objects
def create_game_objects
skillo_sbs_create_game_objects
$game_battle = Game_Battle.new
end
#--------------------------------------------------------------------------
# * Create Save Contents
#--------------------------------------------------------------------------
alias :skillo_sbs_make_save_contents :make_save_contents
def make_save_contents
contents = skillo_sbs_make_save_contents
contents[:battle] = $game_battle
contents
end
#--------------------------------------------------------------------------
# * Extract Save Contents
#--------------------------------------------------------------------------
alias :skillo_sbs_extract_save_contents :extract_save_contents
def extract_save_contents(contents)
skillo_sbs_extract_save_contents(contents)
$game_battle = contents[:battle]
end
end
end
#==============================================================================
# ** BattleManager
#------------------------------------------------------------------------------
# This module manages battle progress.
#==============================================================================
module BattleManager
class << self
#--------------------------------------------------------------------------
# * Setup
#--------------------------------------------------------------------------
alias :skillo_sbs_bm_setup :setup
def setup(troop_id, can_escape = true, can_lose = false)
$game_party.setup
skillo_sbs_bm_setup(troop_id, can_escape, can_lose)
end
end
end
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# This class handles system data. It saves the disable state of saving and
# menus. Instances of this class are referenced by $game_system.
#==============================================================================
class Game_Battle
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :party_battlers # party battlers
attr_accessor :troop_battlers # troop battlers
attr_accessor :party_positions # party positions
attr_accessor :troop_positions # troop positions
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
json = SBSManager.load_config("battlers.json")
@party_battlers = json["party"]
@troop_battlers = json["troop"]
json = SBSManager.load_config("positions.json")
@party_positions = json["party"]
@troop_positions = json["troop"]
end
#--------------------------------------------------------------------------
# * Actors Battlers Position
#--------------------------------------------------------------------------
def actors_battlers_position(index)
num_members = $game_party.battle_members.size
position_member = party_positions[num_members.to_s][index]
pos ={}
pos[:x] = position_member["x"].to_i
pos[:y] = position_member["y"].to_i
pos[:z] = position_member["z"].to_i
position_member["zoom"] = 1.0 if position_member["zoom"].nil?
pos[:zoom] = position_member["zoom"].to_f
pos
end
#--------------------------------------------------------------------------
# * Actors Battlers Position
#--------------------------------------------------------------------------
def troop_battlers_position(index)
num_members = $game_troop.members.size
position_member = troop_positions[num_members.to_s][index]
pos ={}
pos[:x] = position_member["x"].to_i
pos[:y] = position_member["y"].to_i
pos[:z] = position_member["z"].to_i
position_member["zoom"] = 1.0 if position_member["zoom"].nil?
pos[:zoom] = position_member["zoom"].to_f
pos
end
end
#==============================================================================
# ** Game_Battler
#------------------------------------------------------------------------------
# A battler class with methods for sprites and actions added. This class
# is used as a super class of the Game_Actor class and Game_Enemy class.
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :zoom # zoom sprite
attr_accessor :screen_z # battle screen z coordinate
attr_accessor :battler_type # battler type
attr_accessor :battler_index # battler index
attr_accessor :direction # direction
attr_accessor :pattern # pattern
attr_accessor :screen_x # battle screen X coordinate
attr_accessor :screen_y # battle screen Y coordinate
attr_accessor :screen_z # battle screen Y coordinate
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias :skillo_sbs_gb_initialize :initialize
def initialize
skillo_sbs_gb_initialize
@zoom = 1.0
@battler_type = 0
@battler_index = 0
@screen_x = 0
@screen_y = 0
@screen_z = 100
@direction = 4
@pattern = 1
@anime_count = 0
@animated = false
end
#--------------------------------------------------------------------------
# * Update Walking/Stepping Animation
#--------------------------------------------------------------------------
def update
if @battler_type == 1 && @animated
@anime_count += 1
if @anime_count > 18
@pattern = (@pattern + 1) % 4
@anime_count = 0
end
end
end
end
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
# This class handles enemies. It used within the Game_Troop class
# ($game_troop).
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias :skillo_sbs_ge_initialize :initialize
def initialize(index, enemy_id)
skillo_sbs_ge_initialize(index, enemy_id)
enemy = $data_enemies[@enemy_id]
battler = $game_battle.troop_battlers[@enemy_id.to_s]
if battler
@battler_type = battler["type"].to_i
case @battler_type
when 0
@battler_name = enemy.battler_name
@battler_index = 0
when 1
@animated = SBSManager.to_boolean(battler["animated"])
@battler_name = battler["battler"]
@battler_index = battler["index"].to_i
@direction = 6
@pattern = 1
end
else
@battler_type = 0
@battler_name = enemy.battler_name
@battler_index = 0
end
end
#--------------------------------------------------------------------------
# * Get Battle Screen Z-Coordinate
#--------------------------------------------------------------------------
def screen_z
return @screen_z
end
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles actors. It is used within the Game_Actors class
# ($game_actors) and is also referenced from the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Setup
#--------------------------------------------------------------------------
alias :skillo_sbs_setup :setup
def setup(actor_id)
@battler_hue = 0
skillo_sbs_setup(actor_id)
battler = $game_battle.party_battlers[actor_id.to_s]
if battler
@battler_type = battler["type"].to_i
case @battler_type
when 0
@battler_name = battler["battler"]
@battler_index = character_index
when 1
@animated = SBSManager.to_boolean(battler["animated"])
@battler_name = character_name
@battler_index = character_index
@direction = 4
@pattern = 1
end
else
@battler_type = 1
@animated = false
@battler_name = character_name
@battler_index = character_index
@direction = 4
@pattern = 1
end
end
#--------------------------------------------------------------------------
# * Use Sprites?
#--------------------------------------------------------------------------
def use_sprite?
return true
end
#--------------------------------------------------------------------------
# * Get Battle Screen Z-Coordinate
#--------------------------------------------------------------------------
def screen_z
return @screen_z
end
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# This class handles parties. Information such as gold and items is included.
# Instances of this class are referenced by $game_party.
#==============================================================================
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# * Setup
#--------------------------------------------------------------------------
def setup
battle_members.each_index do |index|
member = battle_members[index]
pos = $game_battle.actors_battlers_position(index)
member.screen_x = pos[:x]
member.screen_y = pos[:y]
member.screen_z = pos[:z]
member.zoom = pos[:zoom]
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
battle_members.each do |battler|
battler.update
end
end
end
#==============================================================================
# ** Game_Troop
#------------------------------------------------------------------------------
# This class handles enemy groups and battle-related data. Also performs
# battle events. The instance of this class is referenced by $game_troop.
#==============================================================================
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# * Setup
#--------------------------------------------------------------------------
alias :skillo_sbs_gt_setup :setup
def setup(troop_id)
skillo_sbs_gt_setup(troop_id)
members.each_index do |index|
pos = $game_battle.troop_battlers_position(index)
enemy = members[index]
enemy.screen_x = pos[:x]
enemy.screen_y = pos[:y]
enemy.screen_z = pos[:z]
enemy.zoom = pos[:zoom]
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias :skillo_sbs_gt_update :update
def update
skillo_sbs_gt_update
members.each do |enemy|
enemy.update
end
end
end
#==============================================================================
# ** Sprite_Base
#------------------------------------------------------------------------------
# A sprite class with animation display processing added.
#==============================================================================
class Sprite_Base < Sprite
#--------------------------------------------------------------------------
# * Set Animation Sprite
# frame : Frame data (RPG::Animation::Frame)
#--------------------------------------------------------------------------
alias :skillo_sbs_animation_set_sprites :animation_set_sprites
def animation_set_sprites(frame)
skillo_sbs_animation_set_sprites(frame)
cell_data = frame.cell_data
@ani_sprites.each_with_index do |sprite, i|
next unless sprite
pattern = cell_data[i, 0]
if !pattern || pattern < 0
sprite.visible = false
next
end
sprite.zoom_x = cell_data[i, 3] / (100.0/self.zoom_x)
sprite.zoom_y = cell_data[i, 3] / (100.0/self.zoom_y)
end
end
end
#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# This sprite is used to display battlers. It observes an instance of the
# Game_Battler class and automatically changes sprite states.
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# * Update Transfer Origin Bitmap
#--------------------------------------------------------------------------
alias :skillo_sbs_update_bitmap :update_bitmap
def update_bitmap
if(@battler.battler_type == 0)
skillo_sbs_update_bitmap
@cw = bitmap.width
@ch = bitmap.height
else
if graphic_changed?
@character_name = @battler.battler_name
@character_index = @battler.battler_index
set_character_bitmap
end
update_src_rect
end
self.zoom_x = @battler.zoom
self.zoom_y = @battler.zoom
end
#--------------------------------------------------------------------------
# * Determine if Graphic Changed
#--------------------------------------------------------------------------
def graphic_changed?
@character_name != @battler.battler_name ||
@character_index != @battler.battler_index
end
#--------------------------------------------------------------------------
# * Update Origin
#--------------------------------------------------------------------------
def update_origin
if bitmap
self.ox = @cw/2
self.oy = @ch/2
end
end
#--------------------------------------------------------------------------
# * Set Character Bitmap
#--------------------------------------------------------------------------
def set_character_bitmap
self.bitmap = Cache.character(@battler.battler_name)
sign = @battler.battler_name[/^[\!\$]./]
if sign && sign.include?('$')
@cw = self.bitmap.width / 3
@ch = self.bitmap.height / 4
else
@cw = self.bitmap.width / 12
@ch = self.bitmap.height / 8
end
end
#--------------------------------------------------------------------------
# * Update Transfer Origin Rectangle
#--------------------------------------------------------------------------
def update_src_rect
index = @battler.battler_index
pattern = @battler.pattern < 3 ? @battler.pattern : 1
sx = (index % 4 * 3 + pattern) * @cw
sy = (index / 4 * 4 + (@battler.direction - 2) / 2) * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
#--------------------------------------------------------------------------
# * Update Position
#--------------------------------------------------------------------------
def update_position
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
#--------------------------------------------------------------------------
# * Revert to Normal Settings
#--------------------------------------------------------------------------
alias :skillo_sbs_revert_to_normal :revert_to_normal
def revert_to_normal
skillo_sbs_revert_to_normal
self.ox = @cw / 2 if bitmap
end
end
#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
# This class brings together battle screen sprites. It's used within the
# Scene_Battle class.
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# * Create Actor Sprite
# By default, the actor image is not displayed, but for convenience
# a dummy sprite is created for treating enemies and allies the same.
#--------------------------------------------------------------------------
def create_actors
@actor_sprites = $game_party.battle_members.reverse.collect do |actor|
Sprite_Battler.new(@viewport1, actor)
end
end
#--------------------------------------------------------------------------
# * Update Enemy Sprite
#--------------------------------------------------------------------------
def update_actors
@actor_sprites.each {|sprite| sprite.update }
end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Update Frame (Basic)
#--------------------------------------------------------------------------
alias :skillo_sbs_sb_update_basic :update_basic
def update_basic
skillo_sbs_sb_update_basic
$game_party.update
end
end
Fichiers de configuration :
- battlers.json:
- Code:
{
"party" : {
"1": {
"type":"1"
"animated":"true"
},
"2": {
"type":"1"
"animated":"true"
}
},
"troop" : {
"2": {
"type":"0"
},
"1": {
"type":"1",
"battler":"Actor1.png",
"index":"0"
"animated":"false"
}
}
}
Ce fichier sert à definir les battlers. Il est en deux parties :
- les perso (party)
- les enemies (troop)
Chaque battler est attribué en fonction d'un id et il peut avoir plusieurs parametres :
- "type" : Le type de battler ("0"=Image fixe, "1"=character)
- "battler" : L'image du battler (présente dans "Battlers" si type = "0" ou dans "Characters" si type = "1")
- "animated" : definir si le character sera animé ou non (utilisé seulement si le type = 1)
- "index" : dans le cas où c'est un enemie auquel on attribue un character, l'index est celui du personnage dans la planche de character
Si un héros n'est pas définie dans ce fichier de config alors on utilisera sont character par défaut sans animation.
Si un ennemie n'est pas définie dans ce fichier de config alors on utilisera son image fixe par défaut.
- positions.json:
- Code:
{
"party": {
"1": [
{"x":"360","y":"220","z":"100","zoom":"1.0"}
],
"2": [
{"x":"330","y":"220","z":"100","zoom":"1.0"},
{"x":"390","y":"250","z":"100","zoom":"1.0"}
],
"3": [
{"x":"330","y":"200","z":"100","zoom":"1.0"},
{"x":"390","y":"230","z":"100","zoom":"1.0"},
{"x":"450","y":"260","z":"100","zoom":"1.0"}
],
"4": [
{"x":"300","y":"180","z":"100","zoom":"1.0"},
{"x":"340","y":"210","z":"100","zoom":"1.0"},
{"x":"380","y":"240","z":"100","zoom":"1.0"},
{"x":"420","y":"270","z":"100","zoom":"1.0"}
]
},
"troop": {
"1": [
{"x":"180","y":"20","z":"100","zoom":"1.0"}
],
"2": [
{"x":"210","y":"220","z":"100","zoom":"1.0"},
{"x":"150","y":"250","z":"100","zoom":"1.0"}
],
"3": [
{"x":"210","y":"200","z":"100","zoom":"1.0"},
{"x":"150","y":"230","z":"100","zoom":"1.0"},
{"x":"90","y":"260","z":"100","zoom":"1.0"}
],
"4": [
{"x":"210","y":"190","z":"100","zoom":"1.0"},
{"x":"150","y":"210","z":"100","zoom":"1.0"},
{"x":"90","y":"230","z":"100","zoom":"1.0"},
{"x":"30","y":"250","z":"100","zoom":"1.0"}
]
}
}
Fichier ruby à placer à la racine de votre projet :
http://www.mediafire.com/view/2axzacfjd87dacv/json.rb
Screen :
Pour l'instant ça donne ça
ou ça
ou un mix des deux
Edit : ajout de la configuration dans un fichier json + gestion du zoom sur les battlers
Edit : ajout de la configuration dans deux fichiers json + gestion des characters pour les combat à avec possibilité de les animers
- onikowaiMembre
- Nombre de messages : 396
Age : 38
Localisation : Vaucluse
Distinction : aucune
Date d'inscription : 04/01/2013
Re: [VXAce] SBS Homemade
Dim 12 Jan 2014 - 17:45
Ah mais c'est super.
J'attend juste de voir le rendu des combat.
En tout cas bravo.
Ah oui existe t'il des battlers des heros?
J'attend juste de voir le rendu des combat.
En tout cas bravo.
Ah oui existe t'il des battlers des heros?
- XandiarMembre
- Nombre de messages : 497
Age : 29
Localisation : Suisse
Distinction : aucune
Date d'inscription : 12/10/2013
Re: [VXAce] SBS Homemade
Lun 13 Jan 2014 - 11:45
@onikowai
Nan, il n'en existe pas (j'ai pas été voir sur les sites japonais) mais crée plutôt tes charas en fonction de ton "Battler-Hero".
Il faut dire que normalement on est pas censé avoir son héro en face de soit x'), encore moins sous la forme de battler ^^.
En tout cas c'est un script sympa, je vais vite l'essayé !
Nan, il n'en existe pas (j'ai pas été voir sur les sites japonais) mais crée plutôt tes charas en fonction de ton "Battler-Hero".
Il faut dire que normalement on est pas censé avoir son héro en face de soit x'), encore moins sous la forme de battler ^^.
En tout cas c'est un script sympa, je vais vite l'essayé !
- Elisa'Staffeux retraité
- Nombre de messages : 2924
Age : 26
Localisation : Par là-bas !
Distinction : Mon héritière que je chéris
[Coco' ]
Plus que 2 ans avant d'épouser Coco' ! Compte à rebours lancé !
[Auto-distinction]
Adepte du "Je le savais" alors qu'elle le savait pas.
Date d'inscription : 30/05/2009
Re: [VXAce] SBS Homemade
Lun 13 Jan 2014 - 22:52
+5 points de participation
Bonne continuation
Bonne continuation
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: [VXAce] SBS Homemade
Mar 14 Jan 2014 - 22:21
Merci bien ^^
Changement de plan, le fichier de configuration sera au format JSON, et ouais parce que ya un script pour décoder du JSON et que le parser YAML qui est efficace bah il fait partie des libs de ruby et qu'il est pas inclue dans RPG Maker et c'est domage mais c'est pas là mort.
Pour ceux qui ne connaissent pas le JSON ou JavaScript Object Notation c'est un format de donné super utilisé dans le monde du web car il a l'avantage de se mapper directement en objets Javascript et ça c'est biensurtout quand on est comme moi à faire de l'AngularJS la moitié de son temps.
Enfin bref je m'égare. En gros, en JSON :
Ce qui donnerais comme configuration pour ma version prépré alpha de mon script ceci :
Là on voit que battlers c'est la définition des images, positions c'est évidemment la position des personnages et si on interprète bien on peut même comprendre que c'est la position en fonction du nombre de persos. De plus les coordonnées sont des attributs donc, on visualise bien quel nombre correspond à la coordonnée x etc ...
Voilà hésitez pas à donner votre avis sur ça, sachant que l'inconvenient c'est que le fichier de configuration risque d'être gros mais je préfère gros et lisible que petit et incompréhensible (on est plus à quelques Mo près).
Pour les plus attentifs d'entre vous, vous aurez peut être remarquer la notion de zoom, en effet il sera possible très très bientôt de définir un zoom, sur les sprites (ça retaillera aussi les animations) ce qui pourra éviter de resizeer tous les battlers à la main. Par défaut, le zoom est à 1 s'il n'est pas précisé dans le JSON.
Changement de plan, le fichier de configuration sera au format JSON, et ouais parce que ya un script pour décoder du JSON et que le parser YAML qui est efficace bah il fait partie des libs de ruby et qu'il est pas inclue dans RPG Maker et c'est domage mais c'est pas là mort.
Pour ceux qui ne connaissent pas le JSON ou JavaScript Object Notation c'est un format de donné super utilisé dans le monde du web car il a l'avantage de se mapper directement en objets Javascript et ça c'est biensurtout quand on est comme moi à faire de l'AngularJS la moitié de son temps.
Enfin bref je m'égare. En gros, en JSON :
- Code:
{}
- Code:
[]
- Code:
{"clé":"valeur"}
Ce qui donnerais comme configuration pour ma version prépré alpha de mon script ceci :
- Code:
{
battlers : {
"1": "Hero_m.png",
"2": "Hero_f.png"
},
positions : {
"actors": {
"1": [
{ "x":"10","y":20,"z":"100" ,"zoom":"0.5"}
],
"2": [
{ "x":"10","y":20,"z":"100" ,"zoom":"0.5"},
{ "x":"20","y":50,"z":"100" ,"zoom":"1"}
]
}
}
}
Là on voit que battlers c'est la définition des images, positions c'est évidemment la position des personnages et si on interprète bien on peut même comprendre que c'est la position en fonction du nombre de persos. De plus les coordonnées sont des attributs donc, on visualise bien quel nombre correspond à la coordonnée x etc ...
Voilà hésitez pas à donner votre avis sur ça, sachant que l'inconvenient c'est que le fichier de configuration risque d'être gros mais je préfère gros et lisible que petit et incompréhensible (on est plus à quelques Mo près).
Pour les plus attentifs d'entre vous, vous aurez peut être remarquer la notion de zoom, en effet il sera possible très très bientôt de définir un zoom, sur les sprites (ça retaillera aussi les animations) ce qui pourra éviter de resizeer tous les battlers à la main. Par défaut, le zoom est à 1 s'il n'est pas précisé dans le JSON.
- SkilloStaffeux retraité
- Nombre de messages : 526
Age : 35
Localisation : Rennes
Distinction : J'aime ce gars
(by Coco')
Scripteur apprenti, futur Berka !
(par Tretian)
Membre anonyme de la communauté, caché derrière son PC
(???)
super prof de script
[Dudu']
Résident permanent de la Chat Box
[Autoproclamé]
Adepte du XDDD [Yak' ]
Fanatique hystérique de Raymond le français [Un connu]
Date d'inscription : 19/01/2008
Re: [VXAce] SBS Homemade
Mar 21 Jan 2014 - 9:32
Mise à jour du topic principale pour ajouter le fichier de configuration, le positionnement des perso et des ennemy ainsi que le zoom sur les sprites.
Mise à jour du topic principale pour ajouter un nouveau fichier de configuration, l'utilisation des character pour les persos et les ennemies.
Mise à jour du topic principale pour ajouter un nouveau fichier de configuration, l'utilisation des character pour les persos et les ennemies.
- Fairy-TeamMembre
- Nombre de messages : 98
Age : 23
Localisation : dans tes neurones
Distinction : aucune
Date d'inscription : 06/04/2014
Re: [VXAce] SBS Homemade
Dim 20 Avr 2014 - 9:23
J'espère ne pas faire de nécropost mais quelqu'un aurais pas une démo car moi je suis perdus
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum