- Dream-SanMembre
- Nombre de messages : 23
Age : 30
Localisation : Et là, plus de mayo.
Distinction : aucune
Date d'inscription : 23/01/2013
[VXAce] Modifications d'interface et système de TP amélioré.
Jeu 24 Jan 2013 - 18:58
bjr jeu voudré dé skript pour fere un jeu a la kall of douti lol mdr xd x...Oooh, mais Kevin, tu fais encore n'importe quoi sur mon ordi ! Allez, va jouez à Daubefus et arrête de squatter mon ordi.
Bref, bonjour. J'ai besoin de personnes pour faire des scripts, au niveau de l'interface et du Gameplay. Je n'ai besoin que de 4 scripts (Allez, 3 et demi), dont voici la liste :
Type de script: Scripts améliorant les PT, avec des modifications sur l'interface.
Explication complète:
I) Menu modifié pour préparer le terrain du système de TP
C'est plus un add-on du script 3 qu'autre chose : J'aimerais changer l'interface du menu, pour qu'elle affiche les TP (Appelés "Burst" dans mon projet). Voici un screen de ce que j'aimerais :
(C'est moche, oui, mais c'est juste un exemple) Ainsi, on aura quelque chose de relativement propre et fidèle à l'interface originale. Le menu "options" pourrait ouvrir la fenêtre quand on appuie sur F1. Si ce n'est pas possible, ce n'est pas grave, vous pourrez le virer. De préférence, tout sera en windowskin, à l'exception du rond (D'ailleurs je suis une fiente en graphismes, un exemple ne serait pas de refus, mais non obligatoire. J'essaierais de le décrapouiller). Egalement, j'ai oublié de noter que les altérations d’état seront en bas des PM, mais pas marquées directement. Juste les icônes.
Wàla pour le premier script, on passe au deuxième, relativement similaire :
II) Interface des combats modifiée
Une image vaut mieux que des mots, donc voici :
J'ai oublié de dire que le fond de chaque case contiendra le faceset, par contre.
Donc je pense que vous, pauvres êtres sans morale, vous avez un semblant de réflexion, donc je n'aurai pas besoin de vous torturer pour que vous compreniez l'interface. Elle remplacera la liste des persos de gauche lors des combats, j'aimerais qu'elle soit compatible avec le Viewed Battle System :
Wàla. On passe maintenant au gros du sujet : Le système de TP.
III) Système de "Burst" et PB
Comme vous pouvez voir dans les screens ci-dessus, lors des combats il y aura un "camembert", qui se remplira. C'est le Burst. Il augmente à chaque fois qu'on subit des dégâts selon ce calcul : Burst gagné = % de PV perdu x 1.5. Quand le Burst est à 100%, on gagne un PT (Que j’appellerais PB dans mon jeu). Le nombre maximum de PT pourra être modifié au cours du jeu, mais au début il est à 1.
Ensuite, certaines attaques utiliseront des PT. Quand elles seront utilisées, l'écran s'assombrira, sauf le personnage qui lance l'action (Viewed Battle System powa) et la cible. L'écran reviendra à la normale après.
Allez, le dernier script :
IV) Formation améliorée, mais pas trop[/u
Dès qu'on choisira "Formation", le menu scrollera vers la gauche, pour ne laisser apparaître que les fenêtres des personnages dans l'équipe. A droite figureront les équipiers dans la réserve. On pourra switcher entre ceux dans la réserve et ceux actifs, mais le premier personnage sera bloqué : Impossible de le changer.
[u]Spécificités: Le camembert du Burst se remplira dans le sens des aiguilles d'une montre, et une fois complet il se remettra à zéro et donnera un PT.
Schéma très clair: Les schémas sont en haut. Je les repost :
Menu :
Combat :
Ressources supplémentaires: Faites en deux minutes et demi sur Paint.net :
Burst rempli :
Burst non-rempli :
Je suppose qu'en faisant "disparaître" le camembert noir au fur et à mesure qu'on gagne du Burst, on devrait avoir ce que je pense. Après, c'est juste des suppositions =P
Exemples dans un jeu video: J'en ai pas sous la main, mais je pense qu'il y en a. Je dirais Tales Of Graces, avec le système de PE (Jauge qui se remplit, et quand elle atteint un certain cap : 1 PE), mais je pense que ce système doit exister dans un jeu.
Scripts déjà possédés: Le center Map Name, le module de base du Victor Engine + Déplacements par pixel, Le Mist' Anime Title Screen et le Jet's Viewed Battle System.
Voîlà, c'est à peu prêt tout, je remercie chaleureusement ceux qui ont eu le temps de tout lire, et j’espère que ma demande vous interpellera ! Au revoir ! =P
Bref, bonjour. J'ai besoin de personnes pour faire des scripts, au niveau de l'interface et du Gameplay. Je n'ai besoin que de 4 scripts (Allez, 3 et demi), dont voici la liste :
Type de script: Scripts améliorant les PT, avec des modifications sur l'interface.
Explication complète:
I) Menu modifié pour préparer le terrain du système de TP
C'est plus un add-on du script 3 qu'autre chose : J'aimerais changer l'interface du menu, pour qu'elle affiche les TP (Appelés "Burst" dans mon projet). Voici un screen de ce que j'aimerais :
- Spoiler:
(C'est moche, oui, mais c'est juste un exemple) Ainsi, on aura quelque chose de relativement propre et fidèle à l'interface originale. Le menu "options" pourrait ouvrir la fenêtre quand on appuie sur F1. Si ce n'est pas possible, ce n'est pas grave, vous pourrez le virer. De préférence, tout sera en windowskin, à l'exception du rond (D'ailleurs je suis une fiente en graphismes, un exemple ne serait pas de refus, mais non obligatoire. J'essaierais de le décrapouiller). Egalement, j'ai oublié de noter que les altérations d’état seront en bas des PM, mais pas marquées directement. Juste les icônes.
Wàla pour le premier script, on passe au deuxième, relativement similaire :
II) Interface des combats modifiée
Une image vaut mieux que des mots, donc voici :
- Spoiler:
J'ai oublié de dire que le fond de chaque case contiendra le faceset, par contre.
Donc je pense que vous, pauvres êtres sans morale, vous avez un semblant de réflexion, donc je n'aurai pas besoin de vous torturer pour que vous compreniez l'interface. Elle remplacera la liste des persos de gauche lors des combats, j'aimerais qu'elle soit compatible avec le Viewed Battle System :
- Spoiler:
- Code:
#===============================================================================
# Jet's Viewed Battle System
# By Jet10985(Jet)
#===============================================================================
# This script will add actor sprites into the battle scene.
# This script has: 10 customization options.
#===============================================================================
# Overwritten Methods:
# Game_Actor: use_sprite?, screen_x, screen_y
# Sprite_Battler: revert_to_normal
# Scene_Battle: show_attack_animation
#-------------------------------------------------------------------------------
# Aliased methods:
# Game_Enemy: screen_x, screen_y
# Sprite_Battler: update_origin, update_bitmap
# Window_BattleEnemy: update
# Window_BattleActor: update
# Window_ActorCommand: update
#===============================================================================
=begin
Set an enemy's attack animation by using this in their notebox:
<anim: 50>
Replace 50 with the animation id.
--------------------------------------------------------------------------------
You may use a sprite for a monster instead of a regular battler by using this
notetag in the monster's notebox:
<sprite: ImageName, 0>
Replace ImageName with the name of the spritesheet, and 0 with the index on the
spritesheet you want the monster to use.
=end
module Jet
module VBS
# Which direction do actors face on the field? There are 4 options:
# :up, :down, :left, or :right. Actor's will direction chosen.
ACTOR_ORIENTATION = :up
# This will make it so actor's are centered on the screen instead of being
# placed in pre-determined lines using START_POINT and SPACE_DIFFERENCE.
CENTER_ACTORS = true
# This is the x and y starting point for actors. This option may take one of
# 2 functions. If CENTER_ACTORS is true, and ACTOR_ORIENTATION is either
# :left, or :right, then only the x value will be used as where to center
# the actors. If it is :down or :up, only the y value will be used.
# If CENTER_ACTORS is false, then this is where actor's will begin to be
# placed on screen.
START_POINT = [400, 250]
# This is how much space is between each actor on the field.
SPACE_DIFFERENCE = 50
# If you're using the :left or :right view, this will push each
# subsequent actor back by a certain number of pixels, to avoid having
# a straight line.
SIDEVIEW_PUSH_BACK = 16
# Do you want to reverse the direction and field during an ambush?
# (This is when enemies surprise the player and get the first turn)
REVERSE_FIELD_FOR_AMBUSH = true
# this is how far the actor will move forward when they are selection an
# action, as well as executing it.
SLIDE_AMOUNT = 30
# This is how far the actor will slide each frame until they reach their
# goal of SLIDE_FORWARD. Best used when this is a factor of SLIDE_FORWARD.
FRAME_SLIDE = 6
# During selecting an actor command, and during selecting an enemy target,
# would you like the selected character to flash?
DO_FLASH = true
# These are state-based sprite changes. If the actor has one of these states
# then the game will search for a sprite of the character's regular sprite
# name with the special state tag appended to it. So if Jimmy's sprite
# name was $Jimmy, and he had poison inflcted on him, and poison's id was
# listed here as ["_poison", 0], it would change Jimmy's in-battle sprite
# to $Jimmy_poison at the first sprite index.
STATE_SPRITES = {
1 => ["", 0],
2 => ["", 0]
}
# Do not touch this option.
DIR_ORIENT = {right: 6, left: 4, down: 2, up: 8}[ACTOR_ORIENTATION]
end
end
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
class Integer
def even?
self % 2 == 0
end
def odd?
!even?
end
end
class RPG::Enemy
def animation
(f = note.match(/<anim:[ ]*(\d+)>/i)) ? f[1].to_i : 1
end
def battle_sprite
(f = note.match(/<sprite:[ ]*(.+),[ ]*(\d+)>/i)) ? f[1..2] : false
end
end
module BattleManager
class << self
alias jet3845_on_encounter on_encounter
def on_encounter(*args, &block)
jet3845_on_encounter(*args, &block)
@true_surprise = @surprise
end
end
def self.true_surprise
@true_surprise ||= false
end
def self.player_dir
if @true_surprise && Jet::VBS::REVERSE_FIELD_FOR_AMBUSH
return 10 - Jet::VBS::DIR_ORIENT
else
return Jet::VBS::DIR_ORIENT
end
end
end
class Game_Actor
def use_sprite?
true
end
def screen_x
if [8, 2].include?(BattleManager.player_dir)
if Jet::VBS::CENTER_ACTORS
x = Graphics.width / 2
x -= 16
x += Jet::VBS::SPACE_DIFFERENCE / 2 if $game_party.members.size.even?
x -= ($game_party.members.size / 2 - index) * Jet::VBS::SPACE_DIFFERENCE
return x
else
return Jet::VBS::START_POINT[0] + Jet::VBS::SPACE_DIFFERENCE * index
end
end
return Jet::VBS::START_POINT[0]
end
alias jet3745_screen_x screen_x
def screen_x(*args, &block)
x = jet3745_screen_x(*args, &block)
case BattleManager.player_dir
when 4
x += Jet::VBS::SIDEVIEW_PUSH_BACK * index
when 6
x -= Jet::VBS::SIDEVIEW_PUSH_BACK * index
end
return x if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH
x = Graphics.width - x if BattleManager.true_surprise && [6, 4].include?(BattleManager.player_dir)
x
end
def screen_y
if [6, 4].include?(BattleManager.player_dir)
if Jet::VBS::CENTER_ACTORS
y = Graphics.height / 2
y -= 16
y += Jet::VBS::SPACE_DIFFERENCE / 2 if $game_party.members.size.even?
y -= ($game_party.members.size / 2 - index) * Jet::VBS::SPACE_DIFFERENCE
return y
else
return Jet::VBS::START_POINT[1] + Jet::VBS::SPACE_DIFFERENCE * index
end
end
return Jet::VBS::START_POINT[1]
end
alias jet3745_screen_y screen_y
def screen_y(*args, &block)
y = jet3745_screen_y(*args, &block)
return y if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH
y = Graphics.height - y if BattleManager.true_surprise && [8, 2].include?(BattleManager.player_dir)
y
end
def screen_z
101 + index
end
alias jet3745_character_name character_name
def character_name(*args, &block)
name = jet3745_character_name(*args, &block)
return name unless SceneManager.scene_is?(Scene_Battle)
states.sort {|a, b| b.priority <=> a.priority }.each {|a|
if (add = Jet::VBS::STATE_SPRITES[a.id])
return name + add[0]
end
}
return name
end
alias jet3745_character_index character_index
def character_index(*args, &block)
index = jet3745_character_index(*args, &block)
return index unless SceneManager.scene_is?(Scene_Battle)
states.sort {|a, b| b.priority <=> a.priority }.each {|a|
if (add = Jet::VBS::STATE_SPRITES[a.id])
return index + add[1]
end
}
return index
end
end
class Game_Enemy
alias jet3745_screen_x screen_x
def screen_x(*args, &block)
x = jet3745_screen_x(*args, &block)
return x if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH
x = Graphics.width - x if BattleManager.true_surprise && [6, 4].include?(BattleManager.player_dir)
x
end
alias jet3745_screen_y screen_y
def screen_y(*args, &block)
y = jet3745_screen_y(*args, &block)
return y if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH
y = Graphics.height - y if BattleManager.true_surprise && [8, 2].include?(BattleManager.player_dir)
y
end
def atk_animation_id1
enemy.animation
end
def atk_animation_id2
0
end
def bat_sprite?
!!enemy.battle_sprite
end
def character_name
enemy.battle_sprite[0]
end
def character_index
enemy.battle_sprite[1].to_i
end
alias jet3745_character_name character_name
def character_name(*args, &block)
name = jet3745_character_name(*args, &block)
return name unless SceneManager.scene_is?(Scene_Battle)
states.sort {|a, b| b.priority <=> a.priority }.each {|a|
if (add = Jet::VBS::STATE_SPRITES[a.id])
return name + add[0]
end
}
return name
end
alias jet3745_character_index character_index
def character_index(*args, &block)
index = jet3745_character_index(*args, &block)
return index unless SceneManager.scene_is?(Scene_Battle)
states.sort {|a, b| b.priority <=> a.priority }.each {|a|
if (add = Jet::VBS::STATE_SPRITES[a.id])
return index + add[1]
end
}
return index
end
end
class Sprite_Battler
alias jet3835_update_bitmap update_bitmap
def update_bitmap(*args, &block)
if @battler.actor? || @battler.bat_sprite?
actor_update_bitmap
elsif @battler.enemy?
jet3835_update_bitmap(*args, &block)
end
end
def actor_update_bitmap
@timer ||= 0
@index ||= 1
@char_index ||= @battler.character_index
@back_time ||= false
index = @index
char_index = @char_index
@timer += 1
(@index += (@back_time ? -1 : 1); @timer = 0) if @timer == 19
if @index == 3
@back_time = true
@index = 1
elsif @index == -1
@back_time = false
@index = 1
end
@char_index = @battler.character_index
bitmap = Cache.character(@battler.character_name)
return if bitmap == @bitmap && index == @index && @char_index == char_index
self.bitmap = bitmap
sign = @battler.character_name[/^[\!\$]./]
if sign && sign.include?('$')
cw = bitmap.width / 3
ch = bitmap.height / 4
else
cw = bitmap.width / 12
ch = bitmap.height / 8
end
dir = BattleManager.player_dir
dir = 10 - dir if @battler.is_a?(Game_Enemy)
sx = (@battler.character_index % 4 * 3) * cw + (cw * @index)
sy = (@battler.character_index / 4 * 4 + (dir - 2) / 2) * ch
self.src_rect.set(sx, sy, cw, ch)
end
alias jet3745_update_origin update_origin
def update_origin(*args, &block)
if @battler.actor? || @battler.bat_sprite?
actor_update_origin
elsif @battler.enemy?
jet3745_update_origin(*args, &block)
end
end
def actor_update_origin
self.ox = (@actor_ox ||= 0)
self.oy = (@actor_oy ||= 0)
end
def revert_to_normal
self.blend_type = 0
self.color.set(0, 0, 0, 0)
self.opacity = 255
if bitmap && @battler && !@battler.actor? && !@battler.bat_sprite?
self.ox = bitmap.width / 2 if bitmap
self.src_rect.y = 0
end
end
def slide_forward(amount = Jet::VBS::SLIDE_AMOUNT, frame = Jet::VBS::FRAME_SLIDE)
dir = BattleManager.player_dir
dir = 10 - dir if @battler.is_a?(Game_Enemy)
case dir
when 2
affect = :@actor_oy
frame *= -1
when 4
affect = :@actor_ox
amount *= -1
when 6
affect = :@actor_ox
frame *= -1
when 8
affect = :@actor_oy
amount *= -1
end
orig_amount = amount
until (orig_amount < 0 ? amount >= 0 : amount <= 0)
instance_variable_set(affect, instance_variable_get(affect) + frame)
amount += frame
SceneManager.scene.spriteset.update
Graphics.update
end
end
def slide_backward(amount = Jet::VBS::SLIDE_AMOUNT, frame = Jet::VBS::FRAME_SLIDE)
dir = BattleManager.player_dir
dir = 10 - dir if @battler.is_a?(Game_Enemy)
case dir
when 2
affect = :@actor_oy
amount *= -1
when 4
affect = :@actor_ox
frame *= -1
when 6
affect = :@actor_ox
amount *= -1
when 8
affect = :@actor_oy
frame *= -1
end
orig_amount = amount
until (orig_amount < 0 ? amount >= 0 : amount <= 0)
instance_variable_set(affect, instance_variable_get(affect) + frame)
amount += frame
SceneManager.scene.spriteset.update
Graphics.update
end
end
end
class Scene_Battle
attr_reader :spriteset
def show_attack_animation(targets)
show_normal_animation(targets, @subject.atk_animation_id1, false)
show_normal_animation(targets, @subject.atk_animation_id2, true)
end
alias jet3746_use_item use_item
def use_item(*args, &block)
sprite = @spriteset.battler_to_sprite(@subject)
if (@subject.actor? || @subject.bat_sprite?) && !@subject.current_action.guard?
sprite.slide_forward
end
jet3746_use_item(*args, &block)
if (@subject.actor? || @subject.bat_sprite?) && !@subject.current_action.guard?
sprite.slide_backward
end
end
end
class Spriteset_Battle
def battler_to_sprite(actor)
battler_sprites.each {|a|
return a if a.battler == actor
}
return false
end
end
class Window_BattleEnemy
alias jet3745_update update
def update(*args, &block)
jet3745_update(*args, &block)
if self.active && Jet::VBS::DO_FLASH
if Object.const_defined?(:Mouse)
$game_troop.alive_members.each {|a|
img = SceneManager.scene.spriteset.battler_to_sprite(a)
x = img.x - img.ox
y = img.y - img.oy
if Mouse.area?(x, y, img.src_rect.width, img.src_rect.height)
self.index = a.index
end
}
end
active_troop = $game_troop.alive_members[@index]
sprite = SceneManager.scene.spriteset.battler_to_sprite(active_troop)
sprite.start_effect(:whiten) if !sprite.effect?
end
end
end
class Window_BattleActor
alias jet3745_update update
def update(*args, &block)
jet3745_update(*args, &block)
if self.active && Jet::VBS::DO_FLASH
if Object.const_defined?(:Mouse)
$game_party.alive_members.each {|a|
img = SceneManager.scene.spriteset.battler_to_sprite(a)
x = img.x - img.ox
y = img.y - img.oy
if Mouse.area?(x, y, img.src_rect.width, img.src_rect.height)
self.index = a.index
end
}
end
active_troop = $game_party.members[@index]
sprite = SceneManager.scene.spriteset.battler_to_sprite(active_troop)
sprite.start_effect(:whiten) if !sprite.effect?
end
end
end
class Window_ActorCommand
alias jet3745_update update
def update(*args, &block)
jet3745_update(*args, &block)
if self.active && Jet::VBS::DO_FLASH
active_troop = @actor
sprite = SceneManager.scene.spriteset.battler_to_sprite(active_troop)
sprite.start_effect(:whiten) if !sprite.effect?
end
end
end
class Game_Action
def guard?
item == $data_skills[subject.guard_skill_id]
end
end
Wàla. On passe maintenant au gros du sujet : Le système de TP.
III) Système de "Burst" et PB
Comme vous pouvez voir dans les screens ci-dessus, lors des combats il y aura un "camembert", qui se remplira. C'est le Burst. Il augmente à chaque fois qu'on subit des dégâts selon ce calcul : Burst gagné = % de PV perdu x 1.5. Quand le Burst est à 100%, on gagne un PT (Que j’appellerais PB dans mon jeu). Le nombre maximum de PT pourra être modifié au cours du jeu, mais au début il est à 1.
Ensuite, certaines attaques utiliseront des PT. Quand elles seront utilisées, l'écran s'assombrira, sauf le personnage qui lance l'action (Viewed Battle System powa) et la cible. L'écran reviendra à la normale après.
Allez, le dernier script :
IV) Formation améliorée, mais pas trop[/u
Dès qu'on choisira "Formation", le menu scrollera vers la gauche, pour ne laisser apparaître que les fenêtres des personnages dans l'équipe. A droite figureront les équipiers dans la réserve. On pourra switcher entre ceux dans la réserve et ceux actifs, mais le premier personnage sera bloqué : Impossible de le changer.
[u]Spécificités: Le camembert du Burst se remplira dans le sens des aiguilles d'une montre, et une fois complet il se remettra à zéro et donnera un PT.
Schéma très clair: Les schémas sont en haut. Je les repost :
Menu :
- Spoiler:
Combat :
- Spoiler:
Ressources supplémentaires: Faites en deux minutes et demi sur Paint.net :
Burst rempli :
Burst non-rempli :
Je suppose qu'en faisant "disparaître" le camembert noir au fur et à mesure qu'on gagne du Burst, on devrait avoir ce que je pense. Après, c'est juste des suppositions =P
Exemples dans un jeu video: J'en ai pas sous la main, mais je pense qu'il y en a. Je dirais Tales Of Graces, avec le système de PE (Jauge qui se remplit, et quand elle atteint un certain cap : 1 PE), mais je pense que ce système doit exister dans un jeu.
Scripts déjà possédés: Le center Map Name, le module de base du Victor Engine + Déplacements par pixel, Le Mist' Anime Title Screen et le Jet's Viewed Battle System.
Voîlà, c'est à peu prêt tout, je remercie chaleureusement ceux qui ont eu le temps de tout lire, et j’espère que ma demande vous interpellera ! Au revoir ! =P
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|