Script plate-forme v3
Auteur : Siegfried, sur une base de KGC.
Un script de plate-forme optimisé et aisément configurable.
Ce script nécessite :
-2 ressources
-1 ajout
Ressources
A placer dans Graphics/Characters et à nommer comme suit :
[Nom_du_héros]-Fall
[Nom_du_héros]-Jump
Ajout
Code:
#==============================================================================
# o Plate-forme v3
#--------------------------------------------------------------------------
# Sur une base créée par XRXS (XRXS50. Action-Maps XC)
# Amélioré par Siegfried ( http://saleth-empire.fr-bb.com )
# pour les communautés Saleth Empire, Spaceworld et RPGMXP Studio 2
# Si vous trouvez ce script ailleurs que sur ces communautés, prière de me contacter
# à l'adresse suivant : dany.sieg@hotmail.fr
#--------------------------------------------------------------------------
# o Améliorations ( Siegfried )
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# v3
#--------------------------------------------------------------------------
# -Le script se passe désormais de toute modification de Sprite_Character
# et fonctionne ainsi de façon autonome grâce au changement de charset
# appelé par l'EREC
# -Longueur/Hauteur maximum de saut
# -Optimisation des sauts et des collisions
# -Réécriture des calculs pour gèrer la distance de saut variable
# -Meilleure gestion des sauts directionnels
# -Supression de la constante ENABLE_SLIDE_DESCENT, inutile
#--------------------------------------------------------------------------
# v2.2.3
#--------------------------------------------------------------------------
# -Possibilité de mettre un nombre de sauts maximal pour double, triple
# saut, voire plus
# -Le héros tombe à la même vitesse dans toutes les directions
# -Modification de la vitesse à l'approche des bords
#--------------------------------------------------------------------------
# v2.2.2
#--------------------------------------------------------------------------
# -Supression d'un bug qui permettait le saut inifini
# -Correction pour charsets RTP ( ayant plusieurs pixels vides en bas )
# Attention : Cette correction ne marche qu'avec l'add-on de Sprite_Character
#--------------------------------------------------------------------------
# v2.2
#--------------------------------------------------------------------------
# -Changement de graphismes pour saut et retombée
# ( Nécessite l'add-on de Sprite_Character )
# Pour le graphisme de saut, créez un charset avec le nom du charset du héros
# suivi de -Jump
# Pour le graphisme de chute, créez un charset avec le nom du charset du héros
# suivi de -Fall
# -Gestion des collisions ( murs et plafond )
# -Le joueur ne peut plus sauter qu'une fois vraiment avoir aterri au sol
# ( résolution d'un ancien bug où on pouvait sauter s'il restait
# moins de 32 pixels entre le héros et le sol )
# -Le héros accède aux bords en fin de chute
# -Le héros peut décoller des bords
# -Gravité : La vitesse est accélèrée en chute
# -Insertion de 2 variables $h_jumping et $h_falling permetant aux scripteurs
# de gèrer d'autres scripts en fonction de la plate-forme
# -Insertion d'une direction de départ
#--------------------------------------------------------------------------
# v2.1
#--------------------------------------------------------------------------
# -En appuyant sur haut, le héros ne se déplace plus en mode plate-forme
# -Meilleur déplacement du saut
# -Lors de la chute, le héros change de direction en fonction de la touche appuyée
#--------------------------------------------------------------------------
# v2.0
#--------------------------------------------------------------------------
# -Saut dans plusieurs directions ( droite et gauche ) aussi bien à l'arrêt qu'en marche
# -Saut vertical aussi bien à l'arrêt qu'en marche
# -Limitation du saut ( ne se déclenche plus pendant des messages, etc... )
# -Touche de saut configurable aisément
#==============================================================================
# o PF_Config
#==============================================================================
class PF_Config
# Action-Maps Mettez les n° de vos maps Plate-forme entre les crochets
ENABLE_FULL_ACTY_MAPS = [1]
# Activer/Désactiver le saut ( true : activé / false : désactivé )
JUMP_AS_KEY = true
# Touche saut ( L par défaut )
KEY_JUMP = Input::L
# Direction de départ ( 2 = bas, 4 = gauche, 6 = droite, 8 = haut )
START_DIR = 6
# Correction pour charsets RTP ( ayant plusieurs pixels vides en bas )
RTP_CORRECTION = true
# Limite de sauts ( double, triple saut )
MAX_JUMPS = 5
# Mode Kirby ( sauts illimités )
INF_JUMPS = false
# Longueur/Hauteur maximum du saut
MAX_RANGE = 2
# Charset du héros par défaut
O_CHARSET = "001-Fighter01"
# Vitesse du héros par défaut
O_SPEED = 4
end
#==============================================================================
# o Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# o Attributs
#--------------------------------------------------------------------------
attr_accessor :move_speed
#--------------------------------------------------------------------------
# o Mise en place de la direction
#--------------------------------------------------------------------------
alias pf_initialize initialize
def initialize
pf_initialize
@direction = PF_Config::START_DIR
end
end
#==============================================================================
# o Game_Player
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# o Attributs
#--------------------------------------------------------------------------
attr_writer :direction_fix
attr_accessor :walk_anime
attr_accessor :now_jumps
attr_accessor :max_jumps
attr_writer :xrxs50_direction_sidefix
#--------------------------------------------------------------------------
# o Méthode de saut
#--------------------------------------------------------------------------
def jump_upper(d, r)
case d
when -1
self.turn_left
(r - 1).times do
move_upper_left
end
when 1
self.turn_right
(r - 1).times do
move_upper_right
end
end
self.jump(d, -1)
end
#--------------------------------------------------------------------------
# o Test de saut
#--------------------------------------------------------------------------
def jump_able?
if PF_Config::INF_JUMPS == true
return true
elsif $game_player.now_jumps > 0
return true
elsif $game_player.charset.include?("-Fall") or
$game_player.charset.include?("-Jump")
return false
end
end
#--------------------------------------------------------------------------
# o Sauts maximums
#--------------------------------------------------------------------------
def max_jumps
return PF_Config::MAX_JUMPS
end
#--------------------------------------------------------------------------
# o Directions fixes
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# o Gauche
#--------------------------------------------------------------------------
alias xrxs50_turn_left turn_left
def turn_left
if @xrxs50_direction_sidefix
@direction = 4
else
xrxs50_turn_left
end
end
#--------------------------------------------------------------------------
# o Droite
#--------------------------------------------------------------------------
alias xrxs50_turn_right turn_right
def turn_right
if @xrxs50_direction_sidefix
@direction = 6
else
xrxs50_turn_right
end
end
#--------------------------------------------------------------------------
# o Suppression du bug de la touche haut
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
if PF_Config::ENABLE_FULL_ACTY_MAPS.include?($game_map.map_id)
@y += 0
increase_steps
else
if turn_enabled
turn_up
end
if passable?(@x, @y, 8)
turn_up
@y -= 1
increase_steps
else
@y = @y.to_i
check_event_trigger_touch(@x, @y-1)
end
end
end
end
#==============================================================================
# o Sprite_Character
#==============================================================================
class Sprite_Character < RPG::Sprite
#--------------------------------------------------------------------------
# o Update
#--------------------------------------------------------------------------
alias ch_graph_update update
def update
ch_graph_update
if PF_Config::RTP_CORRECTION == true
self.y += 5
end
end
end
#==============================================================================
# o Scene_Map
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
# o Main
#--------------------------------------------------------------------------
alias xrxs50_main main
def main
@original_speed = PF_Config::O_SPEED
@lateral_speed = @original_speed + 0.5
@fall_speed = @original_speed + 1
@original_charset = PF_Config::O_CHARSET if @original_charset == nil
@jump_charset = @original_charset + "-Jump" if @original_charset != nil
@fall_charset = @original_charset + "-Fall" if @original_charset != nil
xrxs50_enable_check
xrxs50_main
end
#--------------------------------------------------------------------------
# o Update
#--------------------------------------------------------------------------
alias xrxs50_update update
def update
xrxs50_update
if @xrxs50_enable
update_coordinates
end
end
#--------------------------------------------------------------------------
# o Update des coordonnées
#--------------------------------------------------------------------------
def update_coordinates
@original_speed = $game_player.move_speed if @original_speed == nil
@lateral_speed = @original_speed + 0.5
@fall_speed = @original_speed + 1
@original_charset = $game_player.charset if @original_charset == nil
@jump_charset = @original_charset + "-Jump"
@fall_charset = @original_charset + "-Fall"
#--------------------------------------------------------------------------
# Chute : La 2e partie du saut
#--------------------------------------------------------------------------
if $game_player.passable?($game_player.x,$game_player.y,2)
# La ligne qui suit gère les empêchements au déclenchement du saut ( message, défilement de l'écran )
unless $game_player.moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
chara_change(2, 0, @fall_charset) unless $game_player.charset.include?("-Fall")
$game_player.move_speed = @fall_speed
if $game_player.now_jumps == $game_player.max_jumps
$game_player.now_jumps -= 1
end
# Variables non utilisées ici mais peuvent être utiles pour scripter des systèmes parallèles
$h_jumping = true
$h_falling = true
if Input.press?(Input::LEFT)
direction = -1
elsif Input.press?(Input::RIGHT)
direction = 1
end
if direction != nil
if $game_player.passable?($game_player.x, $game_player.y + 1, 5 + direction)
$game_player.move_speed = @lateral_speed
case direction
when -1
$game_player.turn_left
$game_player.move_lower_left
when 1
$game_player.turn_right
$game_player.move_lower_right
end
elsif $game_player.passable?($game_player.x, $game_player.y, 5 + direction)
$game_player.move_speed = @original_speed
case direction
when -1
$game_player.turn_left
$game_player.move_left
when 1
$game_player.turn_right
$game_player.move_right
end
else
$game_player.move_down
end
else
$game_player.move_down
end
end
$game_player.walk_anime = true unless $game_player.walk_anime
else
unless $game_player.moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
chara_change(2, 0, @original_charset)
$game_player.move_speed = @original_speed
$game_player.now_jumps = $game_player.max_jumps
$h_falling = false
end
end
Dim 5 Juil 2009 - 6:54 par TheCloud
» plate-forme v3
Mer 24 Déc 2008 - 3:08 par TheCloud
» Créations d'une rubrique Emulation
Mar 23 Déc 2008 - 5:37 par Allen Walker
» Un peu de jeux vidéo^^
Mar 23 Déc 2008 - 0:17 par Allen Walker
» "Lost Soul" Star Ocean Precipice of the dead
Dim 21 Déc 2008 - 23:28 par TheCloud
» Nouveau projet commun
Mer 17 Déc 2008 - 20:43 par TheCloud
» Problème: Comment mettre sa PS2 en ligne ?
Mar 16 Déc 2008 - 11:41 par TheCloud
» Le site officiel du MMORPG.
Ven 28 Nov 2008 - 20:46 par Elekami
» Idées ou truc fini du groupe du MMORPG.
Lun 10 Nov 2008 - 1:22 par Axel4
» Réactions du MMORPG.
Lun 10 Nov 2008 - 1:20 par Axel4