Canalblog
Suivre ce blog Administration + Créer mon blog

Tout sur RPG Maker

6 mars 2006

script pour faire un zelda

Bon je suis entrain de créé un scrpt pour faire un zelda, c'est pas très evident mé je m'en sort pas tros mal une fois terminé je vous en ferais biensurs profité je me suis basé sur le script :

Abs v3 programmé par Near fantastica vous pouvé le télecharger pour voir ce que sa donne : disk2

Bon revenons a mon projet, voici en quoi il consiste je garde le systeme de combat de abs v3, je supprime l'HUD pour y mettre le mien, je crée un nouveau menu et je programme toute les armes des zelda comme ca il vous restera plus qu' a faire les map et crée les events :)

Avancement du projet :

Systeme de combat            : Terminé

HUD                                 : 50 %

Utilisation des Armes equipé : 10 % (Epée et Arc programmé)

Menu du jeu                      : 75 %

Systeme de Sauvegarde      : 50 %

Je vous fait voir un petit screen pour voir ce que sa donne

zelda

Publicité
Publicité
2 mars 2006

Joué avec la souris sous RMXP

Permet de jouer le jeu avec la souris ( déplacement, menu ... )

souris_1

souris_2

souris_3

Testé et fonctionnel. En plus des scripts de la souris dans la démo, vous aurez un menu amélioré pour la souris ainsi que d'autres scripts ( ombre, temps réel ... )

Démo :  Télécharger ( 1,00 Mo ; Fichier Zip )

Code :

Trop de script. Télécharger la démo pour les scripts.

25 février 2006

Ajout de 3 scripts rmxp

Ajout de 3script rmxp pour crée une interface de jeu plus conviviale

un script pou ajouter des donné ds le menu sauvegarde

un second pour faire un menu tournant

et un troisieme pour crée des jauges ds votre systeme de combat(jauges PV PM et ATB)

25 février 2006

Supprimer les sauvegardes avec le script +de slots

nouv_menu2

Ce script sert à afficher le lieu où vous sauvegardez, les charas des leaders , d'avoir plus de slots que 4 et de supprimer les sauvegardes en appuyant sur Z ...

Créez un nouveau script au dessus de "main" et appelez-le "Save_Max" ...
Mettez dedans le script là :

#------------------------------------------------------------------------------
# ■ Save_Max modifié par boushy:!!!
#------------------------------------------------------------------------------

module ExtraConstants
NB_SAVE_SLOTS = 20 # ne pas changer le numero ici s'il vous plait => risque de bug
MODE_SLOTS = 0 # ne pas changer le numero ici s'il vous plait => risque de bug
end

# Window_SaveFile
#------------------------------------------------------------------------------
#  セーブ画面およびロード画面で表示する、セーブファイルのウィンドウです。
#==============================================================================

class Window_SaveFile < Window_Base
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :filename # ファイル名
attr_reader :selected # 選択状態
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# file_index : セーブファイルのインデックス (0~3)
# filename : ファイル名
#--------------------------------------------------------------------------
def initialize(file_index, filename)
super(0, 64 + file_index * 104, 640, 104)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
@file_index = file_index
@filename = "Save#{@file_index + 1}.rxdata"
@filename1 = "Supr#{1}.rxdata"
@filename2 = "Supr#{2}.rxdata"
@filename3 = "Supr#{3}.rxdata"
@filename4 = "Supr#{4}.rxdata"
@filename5 = "Supr#{5}.rxdata"
@filename6 = "Supr#{6}.rxdata"
@filename7 = "Supr#{7}.rxdata"
@filename8 = "Supr#{8}.rxdata"
@filename9 = "Supr#{9}.rxdata"
@filename10 = "Supr#{10}.rxdata"
@filename11 = "Supr#{11}.rxdata"
@filename12 = "Supr#{12}.rxdata"
@filename13 = "Supr#{13}.rxdata"
@filename14= "Supr#{14}.rxdata"
@filename15 = "Supr#{15}.rxdata"
@filename16 = "Supr#{16}.rxdata"
@filename17 = "Supr#{17}.rxdata"
@filename18 = "Supr#{18}.rxdata"
@filename19 = "Supr#{19}.rxdata"
@filename20 = "Supr#{20}.rxdata"

@game_party_leader = ""
#@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(@filename)

@file_exist1 = FileTest.exist?(@filename1)
@file_exist2 = FileTest.exist?(@filename2)
@file_exist3 = FileTest.exist?(@filename3)
@file_exist4 = FileTest.exist?(@filename4)
@file_exist5 = FileTest.exist?(@filename5)
@file_exist6 = FileTest.exist?(@filename6)
@file_exist7 = FileTest.exist?(@filename7)
@file_exist8 = FileTest.exist?(@filename8)
@file_exist9 = FileTest.exist?(@filename9)
@file_exist10 = FileTest.exist?(@filename10)
@file_exist11 = FileTest.exist?(@filename11)
@file_exist12 = FileTest.exist?(@filename12)
@file_exist13 = FileTest.exist?(@filename13)
@file_exist14 = FileTest.exist?(@filename14)
@file_exist15 = FileTest.exist?(@filename15)
@file_exist16 = FileTest.exist?(@filename16)
@file_exist17 = FileTest.exist?(@filename17)
@file_exist18 = FileTest.exist?(@filename18)
@file_exist19 = FileTest.exist?(@filename19)
@file_exist20 = FileTest.exist?(@filename20)

if @file_exist1
file = File.open(@filename1, "r")
$supr=Marshal.load(file)
file.close
$supr1=$supr
else
$supr1=150
end
if @file_exist2
file = File.open(@filename2, "r")
$supr=Marshal.load(file)
file.close
$supr2=$supr
else
$supr2=150
end
if @file_exist3
file = File.open(@filename3, "r")
$supr=Marshal.load(file)
file.close
$supr3=$supr
else
$supr3=150
end
if @file_exist4
file = File.open(@filename4, "r")
$supr=Marshal.load(file)
file.close
$supr4=$supr
else
$supr4=150
end
if @file_exist5
file = File.open(@filename5, "r")
$supr=Marshal.load(file)
file.close
$supr5=$supr
else
$supr5=150
end
if @file_exist6
file = File.open(@filename6, "r")
$supr=Marshal.load(file)
file.close
$supr6=$supr
else
$supr6=150
end
if @file_exist7
file = File.open(@filename7, "r")
$supr=Marshal.load(file)
file.close
$supr7=$supr
else
$supr7=150
end
if @file_exist8
file = File.open(@filename8, "r")
$supr=Marshal.load(file)
file.close
$supr8=$supr
else
$supr8=150
end
if @file_exist9
file = File.open(@filename9, "r")
$supr=Marshal.load(file)
file.close
$supr9=$supr
else
$supr9=150
end
if @file_exist10
file = File.open(@filename10, "r")
$supr=Marshal.load(file)
file.close
$supr10=$supr
else
$supr10=150
end
if @file_exist11
file = File.open(@filename11, "r")
$supr=Marshal.load(file)
file.close
$supr11=$supr
else
$supr11=150
end
if @file_exist12
file = File.open(@filename12, "r")
$supr=Marshal.load(file)
file.close
$supr12=$supr
else
$supr12=150
end
if @file_exist13
file = File.open(@filename13, "r")
$supr=Marshal.load(file)
file.close
$supr13=$supr
else
$supr13=150
end
if @file_exist14
file = File.open(@filename14, "r")
$supr=Marshal.load(file)
file.close
$supr14=$supr
else
$supr14=150
end
if @file_exist15
file = File.open(@filename15, "r")
$supr=Marshal.load(file)
file.close
$supr15=$supr
else
$supr15=150
end
if @file_exist16
file = File.open(@filename16, "r")
$supr=Marshal.load(file)
file.close
$supr16=$supr
else
$supr16=150
end
if @file_exist17
file = File.open(@filename17, "r")
$supr=Marshal.load(file)
file.close
$supr17=$supr
else
$supr17=150
end
if @file_exist18
file = File.open(@filename18, "r")
$supr=Marshal.load(file)
file.close
$supr18=$supr
else
$supr18=150
end
if @file_exist19
file = File.open(@filename19, "r")
$supr=Marshal.load(file)
file.close
$supr19=$supr
else
$supr19=150
end
if @file_exist20
file = File.open(@filename20, "r")
$supr=Marshal.load(file)
file.close
$supr20=$supr
else
$supr20=150
end

if file_index==$supr1 or file_index==$supr2 or file_index==$supr3 or file_index==$supr4 or file_index==$supr5 or file_index==$supr6 or file_index==$supr7 or file_index==$supr8 or file_index==$supr9 or file_index==$supr10 or file_index==$supr11 or file_index==$supr12 or file_index==$supr13 or file_index==$supr14 or file_index==$supr15 or file_index==$supr16 or file_index==$supr17 or file_index==$supr18 or file_index==$supr19 or file_index==$supr20
$non1=4
else
$non1=3
end


if @file_exist
file = File.open(@filename, "r")
# @time_stamp = file.mtime

@characters = Marshal.load(file)
@frame_count = Marshal.load(file)

@total_sec = @frame_count / Graphics.frame_rate

@game_party = Marshal.load(file)
@game_map_name = Marshal.load(file)

@game_party_leader = @game_party.actors[0].name

file.close
end

refresh
@selected = false

rescue
file.close
@selected = false
@file_exist = false
@game_party_leader = "Cette sauvegarde est corrompue - Choisissez une autre sauvegarde."
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# ファイル番号を描画
self.contents.font.color = normal_color

if @game_party_leader == ""
name = "File #{@file_index + 1}"
name2 = "File #{@file_index + 1}"
else
name = "File #{@file_index + 1} : " + @game_party_leader
name2 = "File #{@file_index + 1}"
end
if$non1==3
self.contents.draw_text(4, 0, 600, 32, name)
@name_width = contents.text_size(name).width
else
self.contents.draw_text(4, 0, 600, 32, name2)
@name_width = contents.text_size(name2).width
end

# セーブファイルが存在する場合
if$non1==3
if @file_exist
# キャラクターを描画
for i in 0...@characters.size
bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
cw = bitmap.rect.width / 4
ch = bitmap.rect.height / 4
src_rect = Rect.new(0, 0, cw, ch)
x = 300 - @characters.size * 32 + i * 64 - cw / 2
self.contents.blt(x, 68 - ch, bitmap, src_rect)
end
# プレイ時間を描画
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, 8, 600, 32, time_string, 2)
# タイムスタンプを描画
self.contents.font.color = normal_color

self.contents.draw_text(4, 40, 600, 32, @game_map_name, 2)
end
end
end
#--------------------------------------------------------------------------
# ● 選択状態の設定
# selected : 新しい選択状態 (true=選択 false=非選択)
#--------------------------------------------------------------------------
def selected=(selected)
@selected = selected
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
if @selected
self.cursor_rect.set(0, 0, @name_width + 8, 32)
else
self.cursor_rect.empty
end
end
end

#====================================================#==========================
# ■ Scene_Save
#------------------------------------------------------------------------------
#  セーブ画面の処理を行うクラスです。
#====================================================#==========================

class Scene_Save < Scene_File
# -----------------------------
def initialize
super("Voulez vous sauvegarder la partie ?")
@confirm_window = Window_Base.new(120, 188, 400, 64)
@confirm_window.contents = Bitmap.new(368, 32)
string = "Voulez vous remplacer cette sauvegarde ?"
@confirm_window.contents.font.name = "Arial"
@confirm_window.contents.font.size = $fontsize
@confirm_window.contents.draw_text(4, 0, 368, 32, string)
@yes_no_window = Window_Command.new(100, ["Oui", "Non"])
@confirm_window.visible = false
@confirm_window.z = 1500
@yes_no_window.visible = false
@yes_no_window.active = false
@yes_no_window.index = 1
@yes_no_window.x = 270
@yes_no_window.y = 252
@yes_no_window.z = 1500


@Sup_window = Window_Base.new(120, 188, 400, 64)
@Sup_window.contents = Bitmap.new(368, 32)
string = "Voulez vous supprimer cette sauvegarde ?"
@Sup_window.contents.font.name = "Arial"
@Sup_window.contents.font.size = $fontsize
@Sup_window.contents.draw_text(4, 0, 368, 32, string)
@yes_no_window2 = Window_Command.new(100, ["Oui", "Non"])
@Sup_window.visible = false
@Sup_window.z = 1500
@yes_no_window2.visible = false
@yes_no_window2.active = false
@yes_no_window2.index = 1
@yes_no_window2.x = 270
@yes_no_window2.y = 252
@yes_no_window2.z = 1500

@Rest_window = Window_Base.new(120, 188, 400, 64)
@Rest_window.contents = Bitmap.new(368, 32)
string = "Voulez vous restaurez l'ancienne sauvegarde ?"
@Rest_window.contents.font.name = "Arial"
@Rest_window.contents.font.size = $fontsize
@Rest_window.contents.draw_text(4, 0, 368, 32, string)
@yes_no_window3 = Window_Command.new(100, ["Oui", "Non"])
@Rest_window.visible = false
@Rest_window.z = 1500
@yes_no_window3.visible = false
@yes_no_window3.active = false
@yes_no_window3.index = 1
@yes_no_window3.x = 270
@yes_no_window3.y = 252
@yes_no_window3.z = 1500

@info_window = Window_Base.new(120, 188, 400, 64)
@info_window.contents = Bitmap.new(368, 32)
string = "Z permet de supprimer les sauvegardes ou de restaurer les sauvegardes"
@info_window.contents.font.name = "Arial"
@info_window.contents.font.size = $fontsize
@info_window.contents.draw_text(4, 0, 368, 32, string)
@yes_no_window4 = Window_Command.new(100, ["ok"])
@info_window.visible = false
@info_window.z = 1500
@yes_no_window4.visible = false
@yes_no_window4.active = false
@yes_no_window4.index = 0
@yes_no_window4.x = 270
@yes_no_window4.y = 252
@yes_no_window4.z = 1500


@mode = 0
end
# -----------------------------
def on_info
@info_window.visible = true
@yes_no_window4.visible = true
@yes_no_window4.active = true
@mode = 1
end


def on_decision(filename,suprname,file_index56)
@file_index3=file_index56
@suprname=suprname
if FileTest.exist?(filename)


if @file_index3==$supr1 or @file_index3==$supr2 or @file_index3==$supr3 or @file_index3==$supr4 or @file_index3==$supr5 or @file_index3==$supr6 or @file_index3==$supr7 or @file_index3==$supr8 or @file_index3==$supr9 or @file_index3==$supr10 or @file_index3==$supr11 or @file_index3==$supr12 or @file_index3==$supr13 or @file_index3==$supr14 or @file_index3==$supr15 or @file_index3==$supr16 or @file_index3==$supr17 or @file_index3==$supr18 or @file_index3==$supr19 or @file_index3==$supr20

$game_system.se_play($data_system.save_se)
file = File.open(filename, "wb")
write_save_data(file)
file.close

$supr=150
file2 = File.open(@suprname, "wb")
Marshal.dump($supr, file2)
file2.close

if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
else

@confirm_window.visible = true
@yes_no_window.visible = true
@yes_no_window.active = true
@mode = 1
end

else
$game_system.se_play($data_system.save_se)
file = File.open(filename, "wb")
write_save_data(file)
file.close

$supr=150
file2 = File.open(@suprname, "wb")
Marshal.dump($supr, file2)
file2.close

if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
end
end

def on_supr(filename,suprname)#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
filename = make_filename(@file_index)
if FileTest.exist?(filename)


@suprname=suprname
@Sup_window.visible = true
@yes_no_window2.visible = true
@yes_no_window2.active = true
@mode = 1
else
$game_system.se_play($data_system.buzzer_se)
end
end
def on_rest(filename,suprname)
@suprname=suprname
@Rest_window.visible = true
@yes_no_window3.visible = true
@yes_no_window3.active = true
@mode = 1
end
# -----------------------------
def update
if @mode == 0
super
else
@help_window.update
@yes_no_window.update
@yes_no_window2.update
@yes_no_window3.update
@yes_no_window4.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
if @yes_no_window.index == 0
filename = make_filename(@file_index)
$game_system.se_play($data_system.save_se)
file = File.open(filename, "wb")
write_save_data(file)
file.close

$supr=150
file2 = File.open(@suprname, "wb")
Marshal.dump($supr, file2)
file2.close

if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
else
@confirm_window.visible = false
@yes_no_window.visible = false
@yes_no_window.active = false
@yes_no_window.index = 1
@mode = 0
end

if @yes_no_window2.index == 0

$game_system.se_play($data_system.decision_se)
# アイテム画面に切り替え
$supr=@file_index

file2 = File.open(@suprname, "wb")
Marshal.dump($supr, file2)
file2.close



if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
else
@Sup_window.visible = false
@yes_no_window2.visible = false
@yes_no_window2.active = false
@yes_no_window2.index = 1
@mode = 0
end

if @yes_no_window3.index == 0


$game_system.se_play($data_system.decision_se)
# アイテム画面に切り替え
supr=150

file2 = File.open(@suprname, "wb")
Marshal.dump(supr, file2)
file2.close



if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
else
$scene = Scene_Menu.new(4)
end
else
@Rest_window.visible = false
@yes_no_window3.visible = false
@yes_no_window3.active = false
@yes_no_window3.index = 1
@mode = 0
end
if @yes_no_window4.index == 0

@infoname="info#{1}.rxdata"
info=150
file2 = File.open(@infoname, "wb")
Marshal.dump(info, file2)
file2.close
@info_window.visible = false
@yes_no_window4.visible = false
@yes_no_window4.active = false
else
@info_window.visible = false
@yes_no_window4.visible = false
@yes_no_window4.active = false
@yes_no_window4.index = 0
@mode = 0
end
end
if Input.trigger?(Input::B)
@confirm_window.visible = false
@yes_no_window.visible = false
@yes_no_window.active = false
@yes_no_window.index = 1
@mode = 0

@Sup_window.visible = false
@yes_no_window2.visible = false
@yes_no_window2.active = false
@yes_no_window2.index = 1
@mode = 0

@Rest_window.visible = false
@yes_no_window3.visible = false
@yes_no_window3.active = false
@yes_no_window3.index = 1
@mode = 0

@info_window.visible = false
@yes_no_window4.visible = false
@yes_no_window4.active = false
@yes_no_window4.index = 0
@mode = 0
return
end
end
end
# -----------------------------
def on_cancel
$game_system.se_play($data_system.cancel_se)
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(4)
end
# -----------------------------

def writ_supr_data(file2)
end


def write_save_data(file)
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number

Marshal.dump($game_party, file)
Marshal.dump($game_map.name, file)

Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)

Marshal.dump($game_map, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_player, file)
end
end

#==============================================================================
# ■ Scene_Load
#------------------------------------------------------------------------------
#  ロード画面の処理を行うクラスです。
#==============================================================================

class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
# テンポラリオブジェクトを再作成
$game_temp = Game_Temp.new
# タイムスタンプが最新のファイルを選択
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..NB_SAVE_SLOTS-1
filename = make_filename(i)
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
super("Charger quelle partie ?")
end
#--------------------------------------------------------------------------
# ● 決定時の処理
#--------------------------------------------------------------------------
def on_decision(filename,suprname,file_index)
@file_index2=file_index
# ファイルが存在しない場合
unless FileTest.exist?(filename)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
if @file_index2==$supr1 or @file_index2==$supr2 or @file_index2==$supr3 or @file_index2==$supr4 or @file_index2==$supr5 or @file_index2==$supr6 or @file_index2==$supr7 or @file_index2==$supr8 or @file_index2==$supr9 or @file_index2==$supr10 or @file_index2==$supr11 or @file_index2==$supr12 or @file_index2==$supr13 or @file_index2==$supr14 or @file_index2==$supr15 or @file_index2==$supr16 or @file_index2==$supr17 or @file_index2==$supr18 or @file_index2==$supr19 or @file_index2==$supr20

$game_system.se_play($data_system.buzzer_se)
else


# ロード SE を演奏
$game_system.se_play($data_system.load_se)
# セーブデータの書き込み
file = File.open(filename, "rb")
read_save_data(file)
file.close
# BGM、BGS を復帰
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
# マップを更新 (並列イベント実行)
$game_map.update
# マップ画面に切り替え
$scene = Scene_Map.new
end
end

def on_supr(filename,suprname)#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

$game_system.se_play($data_system.buzzer_se)

end
def on_rest(filename,suprname)#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

$game_system.se_play($data_system.buzzer_se)

end
#--------------------------------------------------------------------------
# ● キャンセル時の処理
#--------------------------------------------------------------------------
def on_info
end
def on_cancel
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# タイトル画面に切り替え
$scene = Scene_Title.new
end
#--------------------------------------------------------------------------
# ● セーブデータの読み込み
# file : 読み込み用ファイルオブジェクト (オープン済み)
#--------------------------------------------------------------------------
def read_save_data(file)

characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)

$game_party = Marshal.load(file)
@game_map_name = Marshal.load(file)

$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_map = Marshal.load(file)

$game_troop = Marshal.load(file)
$game_player = Marshal.load(file)

# マジックナンバーがセーブ時と異なる場合
# (エディタで編集が加えられている場合)
if $game_system.magic_number != $data_system.magic_number
# マップをリロード
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# パーティメンバーをリフレッシュ
$game_party.refresh
end
end

#==============================================================================
# ■ Scene_File
#------------------------------------------------------------------------------
#  セーブ画面およびロード画面のスーパークラスです。
#==============================================================================

class Scene_File

include ExtraConstants

def initialize(help_text)

@help_text = help_text
@first_window
@last_window
@top_window
@bottom_window
end

#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# ヘルプウィンドウを作成
@help_window = Window_Help.new
@help_window.set_text(@help_text)
@top_window = 0
@bottom_window = NB_SAVE_SLOTS-1

@savefile_windows = []
for i in 0..NB_SAVE_SLOTS-1
@savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))

if i == 0 then
@first_window = i
elsif i == 3 then
@last_window = i
end
end

# 最後に操作したファイルを選択
@file_index = $game_temp.last_file_index
if @file_index > NB_SAVE_SLOTS-1 then
@file_index = 0
end

@savefile_windows[@file_index].selected = true

if @file_index >3 then
@last_window = @file_index
@first_window = @file_index - 3

for i in 0...@savefile_windows.size
@savefile_windows[i].y = @savefile_windows[i].y - (104 * (@file_index- 3) )
if i < @first_window then
@savefile_windows[i].visible = false
end
end
end

# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@help_window.dispose
for i in @savefile_windows
i.dispose
end

if self.is_a?(Scene_Save)
@confirm_window.dispose
@yes_no_window.dispose
@Sup_window.dispose
@yes_no_window2.dispose
@Rest_window.dispose
@yes_no_window3.dispose
@info_window.dispose
@yes_no_window4.dispose
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを更新
@help_window.update

for i in @savefile_windows
i.update
end
@infoname="info#{1}.rxdata"
if FileTest.exist?(@infoname)

else
on_info
end
if Input.trigger?(Input::A)

suprname="Supr#{@file_index + 1}.rxdata"
if @file_index==$supr1 or @file_index==$supr2 or @file_index==$supr3 or @file_index==$supr4 or @file_index==$supr5 or @file_index==$supr6 or @file_index==$supr7 or @file_index==$supr8 or @file_index==$supr9 or @file_index==$supr10 or @file_index==$supr11 or @file_index==$supr12 or @file_index==$supr13 or @file_index==$supr14 or @file_index==$supr15 or @file_index==$supr16 or @file_index==$supr17 or @file_index==$supr18 or @file_index==$supr19 or @file_index==$supr20

on_rest(@file_index,suprname)

else

on_supr(@file_index,suprname)
$game_temp.last_file_index = @file_index

end
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# メソッド on_decision (継承先で定義) を呼ぶ
suprname="Supr#{@file_index + 1}.rxdata"
on_decision(make_filename(@file_index),suprname,@file_index)

$game_temp.last_file_index = @file_index
return
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# メソッド on_cancel (継承先で定義) を呼ぶ
on_cancel
return
end

if Input.repeat?(Input::DOWN) or Input.trigger?(Input::DOWN)
# 方向ボタンの下の押下状態がリピートでない場合か、
# またはカーソル位置が 3 より前の場合
###
if @file_index == @last_window and @file_index == @bottom_window
if MODE_SLOTS == 1 then
$game_system.se_play($data_system.buzzer_se)
return
elsif NB_SAVE_SLOTS < 5 then
@savefile_windows[@file_index].selected = false
@file_index = 0
@savefile_windows[@file_index].selected = true
$game_system.se_play($data_system.cursor_se)
return
end

@savefile_windows[@top_window].y = @savefile_windows[@bottom_window].y + 104
@top_window = @top_window + 1
@bottom_window = @bottom_window + 1
if @bottom_window == NB_SAVE_SLOTS then
@bottom_window = 0
end

if @top_window == NB_SAVE_SLOTS then
@top_window = 0
end
end

if @file_index == @last_window
for i in @savefile_windows
i.y = i.y - 104
end
$game_system.se_play($data_system.cursor_se)
@savefile_windows[@file_index].selected = false
@savefile_windows[@first_window].visible = false
@file_index = @file_index + 1
if @file_index == NB_SAVE_SLOTS then
@file_index = 0
end
@savefile_windows[@file_index].selected = true
@savefile_windows[@file_index].visible = true

@first_window = @first_window + 1
@last_window = @last_window + 1

if @last_window == NB_SAVE_SLOTS then
@last_window = 0
end

if @first_window == NB_SAVE_SLOTS then
@first_window = 0
end
else
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# カーソルを下に移動
@savefile_windows[@file_index].selected = false
@file_index = @file_index + 1
if @file_index == NB_SAVE_SLOTS then
@file_index = 0
end

@savefile_windows[@file_index].selected = true
@savefile_windows[@file_index].visible = true
return
end
end

if Input.repeat?(Input::UP) or Input.trigger?(Input::UP)
if @file_index == @first_window and @file_index == @top_window
if MODE_SLOTS == 1 then
$game_system.se_play($data_system.buzzer_se)
return
elsif NB_SAVE_SLOTS < 5 then
@savefile_windows[@file_index].selected = false
@file_index = NB_SAVE_SLOTS - 1
@savefile_windows[@file_index].selected = true
$game_system.se_play($data_system.cursor_se)
return
end

@savefile_windows[@bottom_window].y = @savefile_windows[@top_window].y - 104
@top_window = @top_window - 1
@bottom_window = @bottom_window - 1
if @bottom_window == -1 then
@bottom_window = NB_SAVE_SLOTS-1
end

if @top_window == -1 then
@top_window = NB_SAVE_SLOTS-1
end
end

if @file_index == @first_window
for i in @savefile_windows
i.y = i.y + 104
end
$game_system.se_play($data_system.cursor_se)
@savefile_windows[@file_index].selected = false

@file_index = @file_index - 1
if @file_index == -1 then
@file_index = NB_SAVE_SLOTS-1
end
@savefile_windows[@file_index].selected = true
@savefile_windows[@file_index].visible = true

@first_window = @first_window - 1
@last_window = @last_window - 1

if @last_window == -1 then
@last_window = NB_SAVE_SLOTS - 1
end

if @first_window == -1 then
@first_window = NB_SAVE_SLOTS-1
end
else
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# カーソルを下に移動
@savefile_windows[@file_index].selected = false
@file_index = @file_index - 1
if @file_index == -1 then
@file_index = NB_SAVE_SLOTS - 1
end

@savefile_windows[@file_index].selected = true
@savefile_windows[@file_index].visible = true

return
end
end
end

#--------------------------------------------------------------------------
# ● ファイル名の作成
# file_index : セーブファイルのインデックス (0~3)
#--------------------------------------------------------------------------
def make_filename(file_index)
return "Save#{file_index + 1}.rxdata"
end
end

#==============================================================================
# Game_Map
#==============================================================================

class Game_Map
#--------------------------------------------------------------------------
def name
$map_infos[@map_id]
end
end

#==============================================================================
# Scene_Title
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
include ExtraConstants
def main
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end

# 戦闘テストの場合
if $BTEST
battle_test
return
end
# データベースをロード
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# システムオブジェクトを作成
$game_system = Game_System.new
# タイトルグラフィックを作成
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# コマンドウィンドウを作成
s1 = "Nouvelle partie"
s2 = "Charger une partie"
s3 = "Quitter"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
# コンティニュー有効判定
# セーブファイルがひとつでも存在するかどうかを調べる
# 有効なら @continue_enabled を true、無効なら false にする
@continue_enabled = false
for i in 0..NB_SAVE_SLOTS
if FileTest.exist?("Save#{i+1}.rxdata")
@continue_enabled = true
end
end
# コンティニューが有効な場合、カーソルをコンティニューに合わせる
# 無効な場合、コンティニューの文字をグレー表示にする
if @continue_enabled
@command_window.index = 1
else
@command_window.disable_item(1)
end
# タイトル BGM を演奏
$game_system.bgm_play($data_system.title_bgm)
# ME、BGS の演奏を停止
Audio.me_stop
Audio.bgs_stop
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# コマンドウィンドウを解放
@command_window.dispose
# タイトルグラフィックを解放
@sprite.bitmap.dispose
@sprite.dispose
end
end

Appuyez sur Z pour supprimer une sauvegarde et même si vous voulez restaurer les sauvegardes vous pouvez appuyer sur Z !!!

25 février 2006

Ring menu

nouv_menu1

le ring menu est un menu spécial
en forme de cercle très agréable


Pour l'installer allez dans l'éditeur de scripts , et créez au dessus de "main" un script appelé "Ring_Menu"

mettez ....

#==============================================================================
# �¡ Window_RingMenu
#==============================================================================
#==============================================================================
# Edited by MakirouAru
#==============================================================================
class Window_RingMenu < Window_Base
#--------------------------------------------------------------------------
# �› ƒNƒ‰ƒX’è�”
#--------------------------------------------------------------------------
STARTUP_FRAMES = 20 # �‰ŠúƒAƒjƒ��[ƒVƒ‡ƒ“‚̃tƒŒ�[ƒ€�”
MOVING_FRAMES = 5 # ƒŠƒ“ƒO‚ð‰ñ‚µ‚½Žž‚̃tƒŒ�[ƒ€�”
RING_R = 64 # ƒŠƒ“ƒO‚Ì”¼Œa
ICON_ITEM = RPG::Cache.icon("034-Item03") # �uƒAƒCƒeƒ€�vƒ�ƒjƒ…�[‚̃AƒCƒRƒ“
ICON_SKILL = RPG::Cache.icon("044-Skill01") # �uƒXƒLƒ‹�vƒ�ƒjƒ…�[‚̃AƒCƒRƒ“
ICON_EQUIP = RPG::Cache.icon("001-Weapon01") # �u‘•”õ�vƒ�ƒjƒ…�[‚̃AƒCƒRƒ“
ICON_STATUS = RPG::Cache.icon("050-Skill07") # �uƒXƒe�[ƒ^ƒX�vƒ�ƒjƒ…�[‚̃AƒCƒRƒ“
ICON_SAVE = RPG::Cache.icon("038-Item07") # �uƒZ�[ƒu�vƒ�ƒjƒ…�[‚̃AƒCƒRƒ“
ICON_EXIT = RPG::Cache.icon("046-Skill03") # �u�I—¹�vƒ�ƒjƒ…�[‚̃AƒCƒRƒ“
ICON_DISABLE= RPG::Cache.icon("") # Žg—p‹ÖŽ~�€–Ú‚É•t‚­ƒAƒCƒRƒ“
SE_STARTUP = "056-Right02" # ƒ�ƒjƒ…�[‚ðŠJ‚¢‚½‚Æ‚«‚ɖ‚炷SE
MODE_START = 1 # ƒXƒ^�[ƒgƒAƒbƒvƒAƒjƒ��[ƒVƒ‡ƒ“
MODE_WAIT = 2 # ‘Ò‹@
MODE_MOVER = 3 # ŽžŒv‰ñ‚è‰ñ“]ƒAƒjƒ��[ƒVƒ‡ƒ“
MODE_MOVEL = 4 # ”½ŽžŒv‰ñ‚è‰ñ“]ƒAƒjƒ��[ƒVƒ‡ƒ“
#--------------------------------------------------------------------------
# �› ƒAƒNƒZƒT
#--------------------------------------------------------------------------
attr_accessor :index
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
def initialize( center_x, center_y )
super(0, 0, 640, 480)
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name = "Arial"
self.opacity = 0
self.back_opacity = 0
s1 = "Objet"
s2 = "Compétence"
s3 = "Equiper"
s4 = "Etat"
s5 = "Sauvegarder"
s6 = "Quitter"
@commands = [ s1, s2, s3, s4, s5, s6 ]
@item_max = 6
@index = 0
@items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_SAVE, ICON_EXIT ]
@disabled = [ false, false, false, false, false, false ]
@cx = center_x - 16
@cy = center_y - 16
setup_move_start
refresh
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V
#--------------------------------------------------------------------------
def update
super
refresh
end
#--------------------------------------------------------------------------
# �œ ‰æ–Ê�Ä•`‰æ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# ƒAƒCƒRƒ“‚ð•`‰æ
case @mode
when MODE_START
refresh_start
when MODE_WAIT
refresh_wait
when MODE_MOVER
refresh_move(1)
when MODE_MOVEL
refresh_move(0)
end
# ƒAƒNƒeƒBƒu‚ȃRƒ}ƒ“ƒh–¼•\Ž¦
rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
self.contents.draw_text(rect, @commands[@index],1)
end
#--------------------------------------------------------------------------
# �› ‰æ–Ê�Ä•`‰æ(�‰Šú‰»Žž)
#--------------------------------------------------------------------------
def refresh_start
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / STARTUP_FRAMES
r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES
for i in 0...@item_max
j = i - @index
d = d1 * j + d2 * @steps
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
draw_item(x, y, i)
end
@steps -= 1
if @steps < 1
@mode = MODE_WAIT
end
end
#--------------------------------------------------------------------------
# �› ‰æ–Ê�Ä•`‰æ(‘Ò‹@Žž)
#--------------------------------------------------------------------------
def refresh_wait
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @index
x = @cx + ( RING_R * Math.sin( d * j ) ).to_i
y = @cy - ( RING_R * Math.cos( d * j ) ).to_i
draw_item(x, y, i)
end
end
#--------------------------------------------------------------------------
# �› ‰æ–Ê�Ä•`‰æ(‰ñ“]Žž)
# mode : 0=”½ŽžŒv‰ñ‚è 1=ŽžŒv‰ñ‚è
#--------------------------------------------------------------------------
def refresh_move( mode )
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / MOVING_FRAMES
d2 *= -1 if mode != 0
for i in 0...@item_max
j = i - @index
d = d1 * j + d2 * @steps
x = @cx + ( RING_R * Math.sin( d ) ).to_i
y = @cy - ( RING_R * Math.cos( d ) ).to_i
draw_item(x, y, i)
end
@steps -= 1
if @steps < 1
@mode = MODE_WAIT
end
end
#--------------------------------------------------------------------------
# �œ �€–Ú‚Ì•`‰æ
# x :
# y :
# i : �€–Ú”Ô�†
#--------------------------------------------------------------------------
def draw_item(x, y, i)
#p "x=" + x.to_s + " y=" + y.to_s + " i=" + @items[i].to_s
rect = Rect.new(0, 0, @items[i].width, @items[i].height)
if @index == i
self.contents.blt( x, y, @items[i], rect )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect )
end
else
self.contents.blt( x, y, @items[i], rect, 128 )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect, 128 )
end
end
end
#--------------------------------------------------------------------------
# �œ �€–ڂ𖳌ø‚É‚·‚é
# index : �€–Ú”Ô�†
#--------------------------------------------------------------------------
def disable_item(index)
@disabled[index] = true
end
#--------------------------------------------------------------------------
# �› �‰Šú‰»ƒAƒjƒ��[ƒVƒ‡ƒ“‚Ì�€”õ
#--------------------------------------------------------------------------
def setup_move_start
@mode = MODE_START
@steps = STARTUP_FRAMES
if SE_STARTUP != nil and SE_STARTUP != ""
Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100)
end
end
#--------------------------------------------------------------------------
# �› ‰ñ“]ƒAƒjƒ��[ƒVƒ‡ƒ“‚Ì�€”õ
#--------------------------------------------------------------------------
def setup_move_move(mode)
if mode == MODE_MOVER
@index -= 1
@index = @items.size - 1 if @index < 0
elsif mode == MODE_MOVEL
@index += 1
@index = 0 if @index >= @items.size
else
return
end
@mode = mode
@steps = MOVING_FRAMES
end
#--------------------------------------------------------------------------
# �› ƒAƒjƒ��[ƒVƒ‡ƒ“’†‚©‚Ç‚¤‚©
#--------------------------------------------------------------------------
def animation?
return @mode != MODE_WAIT
end
end
#==============================================================================
# �¡ Window_MenuStatus
#------------------------------------------------------------------------------
# �@ƒ�ƒjƒ…�[‰æ–ʂŃp�[ƒeƒBƒ�ƒ“ƒo�[‚̃Xƒe�[ƒ^ƒX‚ð•\Ž¦‚·‚éƒEƒBƒ“ƒhƒE‚Å‚·�B
#==============================================================================

class Window_RingMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
def initialize
super(204, 64, 232, 352)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# �œ ƒŠƒtƒŒƒbƒVƒ…
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.name = "Arial"
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 80
y = 80 * i
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_name(actor, x, y + 24)
end
end
#--------------------------------------------------------------------------
# �œ ƒJ�[ƒ\ƒ‹‚Ì‹éŒ`�X�V
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
end
end
end
#==============================================================================
# #�¡ Scene_RingMenu
# �¡ Scene_Menu
#------------------------------------------------------------------------------
# �@ƒ�ƒjƒ…�[‰æ–Ê‚Ì�ˆ—�‚ð�s‚¤ƒNƒ‰ƒX‚Å‚·�B
#==============================================================================

#class Scene_RingMenu
class Scene_Menu
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
# menu_index : ƒRƒ}ƒ“ƒh‚̃J�[ƒ\ƒ‹�‰ŠúˆÊ’u
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#--------------------------------------------------------------------------
# �œ ƒ�ƒCƒ“�ˆ—�
#--------------------------------------------------------------------------
def main
# ƒXƒvƒ‰ƒCƒgƒZƒbƒg‚ð�ì�¬
@spriteset = Spriteset_Map.new
# ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ð�ì�¬
px = $game_player.screen_x - 15
py = $game_player.screen_y - 24
@command_window = Window_RingMenu.new(px,py)
@command_window.index = @menu_index
# ƒp�[ƒeƒB�l�”‚ª 0 �l‚Ì�ê�‡
if $game_party.actors.size == 0
# ƒAƒCƒeƒ€�AƒXƒLƒ‹�A‘•”õ�AƒXƒe�[ƒ^ƒX‚𖳌ø‰»
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
@command_window.z = 100
# ƒZ�[ƒu‹ÖŽ~‚Ì�ê�‡
if $game_system.save_disabled
# ƒZ�[ƒu‚𖳌ø‚É‚·‚é
@command_window.disable_item(4)
end
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ð�ì�¬
@status_window = Window_RingMenuStatus.new
@status_window.x = 160
@status_window.y = 0
@status_window.z = 200
@status_window.visible = false
# ƒgƒ‰ƒ“ƒWƒVƒ‡ƒ“ŽÀ�s
Graphics.transition
# ƒ�ƒCƒ“ƒ‹�[ƒv
loop do
# ƒQ�[ƒ€‰æ–Ê‚ð�X�V
Graphics.update
# “ü—Í�î•ñ‚ð�X�V
Input.update
# ƒtƒŒ�[ƒ€�X�V
update
# ‰æ–Ê‚ª�Ø‚è‘Ö‚í‚Á‚½‚烋�[ƒv‚ð’†’f
if $scene != self
break
end
end
# ƒgƒ‰ƒ“ƒWƒVƒ‡ƒ“�€”õ
Graphics.freeze
# ƒXƒvƒ‰ƒCƒgƒZƒbƒg‚ð‰ð•ú
@spriteset.dispose
# ƒEƒBƒ“ƒhƒE‚ð‰ð•ú
@command_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V
#--------------------------------------------------------------------------
def update
# ƒEƒBƒ“ƒhƒE‚ð�X�V
@command_window.update
@status_window.update
# ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì�ê�‡: update_command ‚ðŒÄ‚Ô
if @command_window.active
update_command
return
end
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì�ê�‡: update_status ‚ðŒÄ‚Ô
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì�ê�‡)
#--------------------------------------------------------------------------
def update_command
# B ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::B)
# ƒLƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
$game_system.se_play($data_system.cancel_se)
# ƒ}ƒbƒv‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_Map.new
return
end
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::C)
# ƒp�[ƒeƒB�l�”‚ª 0 �l‚Å�AƒZ�[ƒu�AƒQ�[ƒ€�I—¹ˆÈŠO‚̃Rƒ}ƒ“ƒh‚Ì�ê�‡
if $game_party.actors.size == 0 and @command_window.index < 4
# ƒuƒU�[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J�[ƒ\ƒ‹ˆÊ’u‚Å•ªŠò
case @command_window.index
when 0 # ƒAƒCƒeƒ€
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒAƒCƒeƒ€‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_Item.new
when 1 # ƒXƒLƒ‹
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
@command_window.active = false
@status_window.active = true
@status_window.visible = true
@status_window.index = 0
when 2 # ‘•”õ
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
@command_window.active = false
@status_window.active = true
@status_window.visible = true
@status_window.index = 0
when 3 # ƒXƒe�[ƒ^ƒX
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
@command_window.active = false
@status_window.active = true
@status_window.visible = true
@status_window.index = 0
when 4 # ƒZ�[ƒu
# ƒZ�[ƒu‹ÖŽ~‚Ì�ê�‡
if $game_system.save_disabled
# ƒuƒU�[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒZ�[ƒu‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_Save.new
when 5 # ƒQ�[ƒ€�I—¹
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒQ�[ƒ€�I—¹‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_End.new
end
return
end
# ƒAƒjƒ��[ƒVƒ‡ƒ“’†‚È‚çƒJ�[ƒ\ƒ‹‚Ì�ˆ—�‚ð�s‚í‚È‚¢
return if @command_window.animation?
# �ªor�© ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.press?(Input::UP) or Input.press?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@command_window.setup_move_move(Window_RingMenu::MODE_MOVEL)
return
end
# �«or�¨ ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.press?(Input::DOWN) or Input.press?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@command_window.setup_move_move(Window_RingMenu::MODE_MOVER)
return
end
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚Ì�ê�‡)
#--------------------------------------------------------------------------
def update_status
# B ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::B)
# ƒLƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
$game_system.se_play($data_system.cancel_se)
# ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒAƒNƒeƒBƒu‚É‚·‚é
@command_window.active = true
@status_window.active = false
@status_window.visible = false
@status_window.index = -1
return
end
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::C)
# ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J�[ƒ\ƒ‹ˆÊ’u‚Å•ªŠò
case @command_window.index
when 1 # ƒXƒLƒ‹
# ‚±‚̃AƒNƒ^�[‚Ì�s“®�§ŒÀ‚ª 2 ˆÈ�ã‚Ì�ê�‡
if $game_party.actors[@status_window.index].restriction >= 2
# ƒuƒU�[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒXƒLƒ‹‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_Skill.new(@status_window.index)
when 2 # ‘•”õ
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ‘•”õ‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_Equip.new(@status_window.index)
when 3 # ƒXƒe�[ƒ^ƒX
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒXƒe�[ƒ^ƒX‰æ–Ê‚É�Ø‚è‘Ö‚¦
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end

Publicité
Publicité
25 février 2006

Nouveau système de Combat

nouv_menu

Créér un nouveau script au dessus de: "Main" que vous appelerez: "New_battle".
Ensuite Copier-Coller ce code dans "New_Battle":

#==============================================================================
# ¦ New_Battle
#------------------------------------------------------------------------------
# Compiled By : MakirouAru
#==============================================================================
# �¥�£�¥ XRXS_BP 3. �Ÿ—˜ŽžHP‰ñ•œ ver.1.01 �¥�£�¥
# by fukuyama, �÷‰ë �Ý“y

# Battle_End_Recovery
#
# �퓬Œã‚̉ñ•œ�ˆ—�ƒ‚ƒWƒ…�[ƒ‹
#
# Request: stay
# Script: fukuyama
# Test: ƒmƒRƒmŽq
#
# URL: http://www4.big.or.jp/~fukuyama/rgss/Battle_End_Recovery.txt
#

module Battle_End_Recovery

module Scene_Battle_Module

# ‰ñ•œ—¦•Ï�”‚ÌID
@@recovery_rate_variable_id = nil

# ‰ñ•œ—¦‚̎擾
def battle_end_recovery_rate
if @@recovery_rate_variable_id.nil?
@@recovery_rate_variable_id =
$data_system.variables.index '�퓬Œã‚̉ñ•œ—¦'
if @@recovery_rate_variable_id.nil?
@@recovery_rate_variable_id = false
end
end
return 0 unless @@recovery_rate_variable_id
return $game_variables[@@recovery_rate_variable_id]
end

# �퓬Œã‚̉ñ•œ�ˆ—�
def battle_end_recovery

# ‰ñ•œ—¦
recovery_rate = battle_end_recovery_rate

# ‰ñ•œ—¦•Ï�”‚ª‚OˆÈŠO‚©‚ƒAƒNƒ^�[‚ª�¶‘¶‚µ‚Ä‚¢‚é�ê�‡�A�퓬Œã‚̉ñ•œ�ˆ—�‚ð�s‚¤
if recovery_rate != 0 and not actor.dead?

# ƒp�[ƒeƒB‚̃AƒNƒ^�[–ˆ‚Ƀ‹�[ƒv
$game_party.actors.each do |actor|

# ‰ñ•œ—ÊŒvŽZ
recovery_hp = (actor.maxhp / 100.0 * recovery_rate).truncate
recovery_sp = (actor.maxsp / 100.0 * recovery_rate).truncate

# ŽÀ�ۂɉñ•œ
actor.hp += recovery_hp
actor.sp += recovery_sp

# ƒAƒjƒ��[ƒVƒ‡ƒ“�Ý’è
actor.damage = - recovery_hp
actor.damage_pop = true

end

# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ð�X�V
@status_window.refresh

end
end

end # module Scene_Battle_Module
end # module Battle_End_Recovery

#------------------------------
# �퓬ƒV�[ƒ“‚Ì�Ä’è‹`
#------------------------------
class Scene_Battle

# Scene_Battle—pƒ‚ƒWƒ…�[ƒ‹‚ðƒCƒ“ƒNƒ‹�[ƒh
include Battle_End_Recovery::Scene_Battle_Module

# Œ³‚̃tƒF�[ƒY‚TŠJŽn‚É•Ê–¼‚ð‚‚¯‚é
alias battle_end_recovery_original_start_phase5 start_phase5

# ƒtƒF�[ƒY‚TŠJŽn‚ð�Ä’è‹`
def start_phase5

# �퓬Œã‚̉ñ•œ�ˆ—�‚ðŒÄ‚Ñ�o‚·
battle_end_recovery

# Œ³‚̃tƒF�[ƒY‚TŠJŽn‚ðŒÄ‚Ñ�o‚·
battle_end_recovery_original_start_phase5

end
end

# Battle_End_Recovery
# �¥�£�¥ XRXS_BP10. LEVEL UP!ƒEƒBƒ“ƒhƒE �¥�£�¥
# by �÷‰ë �Ý“y

$data_system_level_up_se = "" # ƒŒƒxƒ‹ƒAƒbƒvSE�B""‚Å–³‚µ�B
$data_system_level_up_me = "Audio/ME/007-Fanfare01" # ƒŒƒxƒ‹ƒAƒbƒvME
#==============================================================================
# �¡ Window_LevelUpWindow
#------------------------------------------------------------------------------
# �@ƒoƒgƒ‹�I—¹Žž�AƒŒƒxƒ‹ƒAƒbƒv‚µ‚½�ê�‡‚ɃXƒe�[ƒ^ƒX‚ð•\Ž¦‚·‚éƒEƒBƒ“ƒhƒE‚Å‚·�B
#==============================================================================
class Window_LevelUpWindow < Window_Base
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
super(0, 128, 160, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
end
#--------------------------------------------------------------------------
# �œ ƒŠƒtƒŒƒbƒVƒ…
#--------------------------------------------------------------------------
def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
self.contents.clear
self.contents.font.color = system_color
self.contents.font.name = "Arial"
self.contents.font.size = 14
self.contents.draw_text( 0, 0, 160, 24, "LEVEL UP!!")
self.contents.font.size = 18
self.contents.draw_text( 0, 28, 160, 24, $data_system.words.hp)
self.contents.draw_text( 0, 50, 160, 24, $data_system.words.sp)
self.contents.font.size = 14
self.contents.draw_text( 0, 72, 80, 24, $data_system.words.str)
self.contents.draw_text( 0, 94, 80, 24, $data_system.words.dex)
self.contents.draw_text( 0, 116, 80, 24, $data_system.words.agi)
self.contents.draw_text( 0, 138, 80, 24, $data_system.words.int)
self.contents.draw_text(92, 0, 128, 24, "�¨")
self.contents.draw_text(76, 28, 128, 24, "=")
self.contents.draw_text(76, 50, 128, 24, "=")
self.contents.draw_text(76, 72, 128, 24, "=")
self.contents.draw_text(76, 94, 128, 24, "=")
self.contents.draw_text(76, 116, 128, 24, "=")
self.contents.draw_text(76, 138, 128, 24, "=")
self.contents.font.color = normal_color
self.contents.draw_text( 0, 0, 88, 24, last_lv.to_s, 2)
self.contents.draw_text( 0, 28, 72, 24, "+" + up_hp.to_s, 2)
self.contents.draw_text( 0, 50, 72, 24, "+" + up_sp.to_s, 2)
self.contents.draw_text( 0, 72, 72, 24, "+" + up_str.to_s, 2)
self.contents.draw_text( 0, 94, 72, 24, "+" + up_dex.to_s, 2)
self.contents.draw_text( 0, 116, 72, 24, "+" + up_agi.to_s, 2)
self.contents.draw_text( 0, 138, 72, 24, "+" + up_int.to_s, 2)
self.contents.font.size = 20
self.contents.draw_text( 0, 0, 128, 24, actor.level.to_s, 2)
self.contents.draw_text( 0, 26, 128, 24, actor.maxhp.to_s, 2)
self.contents.draw_text( 0, 48, 128, 24, actor.maxsp.to_s, 2)
self.contents.draw_text( 0, 70, 128, 24, actor.str.to_s, 2)
self.contents.draw_text( 0, 92, 128, 24, actor.dex.to_s, 2)
self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
end
end
#==============================================================================
# �¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# �œ ’ljÁ�EŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï�”
#--------------------------------------------------------------------------
attr_accessor :level_up_flags # LEVEL UP!•\Ž¦
end
#==============================================================================
# �¡ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# �œ ’ljÁ�EŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï�”
#--------------------------------------------------------------------------
attr_accessor :exp_gain_ban # EXPŽæ“¾ˆêŽž‹ÖŽ~
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp10_initialize initialize
def initialize
@exp_gain_ban = false
xrxs_bp10_initialize
end
#--------------------------------------------------------------------------
# �œ ƒXƒe�[ƒg [EXP ‚ðŠl“¾‚Å‚«‚È‚¢] ”»’è
#--------------------------------------------------------------------------
alias xrxs_bp10_cant_get_exp? cant_get_exp?
def cant_get_exp?
if @exp_gain_ban == true
return true
else
return xrxs_bp10_cant_get_exp?
end
end
end
#==============================================================================
# �¡ Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# �œ ƒAƒtƒ^�[ƒoƒgƒ‹ƒtƒF�[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp10_start_phase5 start_phase5
def start_phase5
# EXP Šl“¾‹ÖŽ~
for i in 0...$game_party.actors.size
$game_party.actors[i].exp_gain_ban = true
end
xrxs_bp10_start_phase5
# EXP Šl“¾‹ÖŽ~‚̉ð�œ
for i in 0...$game_party.actors.size
$game_party.actors[i].exp_gain_ban = false
end
# EXP‚ð�‰Šú‰»
@exp_gained = 0
for enemy in $game_troop.enemies
# Šl“¾ EXP‚ð’ljÁ # ƒGƒlƒ~�[‚ª‰B‚ê�ó‘Ô‚Å‚È‚¢�ê�‡
@exp_gained += enemy.exp if not enemy.hidden
end
# �Ý’è
@phase5_step = 0
@exp_gain_actor = -1
# ƒŠƒUƒ‹ƒgƒEƒBƒ“ƒhƒE‚ð•\Ž¦
@result_window.y -= 64
@result_window.visible = true
# ƒŒƒxƒ‹ƒAƒbƒv”»’è‚Ö
phase5_next_levelup
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒAƒtƒ^�[ƒoƒgƒ‹ƒtƒF�[ƒY)
#--------------------------------------------------------------------------
alias xrxs_bp10_update_phase5 update_phase5
def update_phase5
case @phase5_step
when 1
update_phase5_step1
else
xrxs_bp10_update_phase5
# ƒŒƒxƒ‹ƒAƒbƒv‚µ‚Ä‚¢‚é�ê�‡‚Í‹­�§ƒoƒgƒ‹�I—¹
battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0
end
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒAƒtƒ^�[ƒoƒgƒ‹ƒtƒF�[ƒY 1 : ƒŒƒxƒ‹ƒAƒbƒv)
#--------------------------------------------------------------------------
def update_phase5_step1
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::C)
# ƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚ÄŽŸ‚̃AƒNƒ^�[‚Ö
@levelup_window.visible = false if @levelup_window != nil
@status_window.level_up_flags[@exp_gain_actor] = false
phase5_next_levelup
end
end
#--------------------------------------------------------------------------
# �œ ŽŸ‚̃AƒNƒ^�[‚̃Œƒxƒ‹ƒAƒbƒv•\Ž¦‚Ö
#--------------------------------------------------------------------------
def phase5_next_levelup
begin
# ŽŸ‚̃AƒNƒ^�[‚Ö
@exp_gain_actor += 1
# �ÅŒã‚̃AƒNƒ^�[‚Ì�ê�‡
if @exp_gain_actor >= $game_party.actors.size
# ƒAƒtƒ^�[ƒoƒgƒ‹ƒtƒF�[ƒYŠJŽn
@phase5_step = 0
return
end
actor = $game_party.actors[@exp_gain_actor]
if actor.cant_get_exp? == false
# Œ»�Ý‚Ì”\—Í’l‚ð•ÛŽ�
last_level = actor.level
last_maxhp = actor.maxhp
last_maxsp = actor.maxsp
last_str = actor.str
last_dex = actor.dex
last_agi = actor.agi
last_int = actor.int
# ŒoŒ±’lŽæ“¾‚ÌŒˆ’è“I�uŠÔ(“ä
actor.exp += @exp_gained
# ”»’è
if actor.level > last_level
# ƒŒƒxƒ‹ƒAƒbƒv‚µ‚½�ê�‡
@status_window.level_up(@exp_gain_actor)
if $data_system_level_up_se != ""
Audio.se_stop
Audio.se_play($data_system_level_up_se)
end
if $data_system_level_up_me != ""
Audio.me_stop
Audio.me_play($data_system_level_up_me)
end
@levelup_window = Window_LevelUpWindow.new(actor, last_level,
actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
@levelup_window.x = 160 * @exp_gain_actor
@levelup_window.visible = true
@phase5_wait_count = 40
@phase5_step = 1
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒŠƒtƒŒƒbƒVƒ…
@status_window.refresh
return
end
end
end until false
end
end
# �¥�£�¥ XRXS_17. ƒXƒŠƒbƒvƒ_ƒ��[ƒW–hŒä�^Œø‰Ê—Ê�Ú�׉» ver.1.51 �¥�£�¥
# by �÷‰ë �Ý“y, fukuyama

#==============================================================================
# �¡ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# �œ ƒXƒŠƒbƒvƒ_ƒ��[ƒW‚ÌŒø‰Ê“K—p
#--------------------------------------------------------------------------
alias xrxs_bp7_slip_damage_effect slip_damage_effect
def slip_damage_effect
# �”’l‚Ì�‰Šú‰»
slip_damage_percent = 0
slip_damage_plus = 0
# Œ»�Ý•t‰Á‚³‚ê‚Ä‚¢‚éƒXƒe�[ƒg‚Ì’†‚©‚çƒXƒŠƒbƒvƒ_ƒ��[ƒW—L‚è‚̃‚ƒm‚ð’T‚·
for i in @states
if $data_states[i].slip_damage
# ‚»‚̃Xƒe�[ƒg‚ªŽ�‚Á‚Ä‚¢‚éƒXƒŠƒbƒvƒ_ƒ��[ƒW‚Ì
# Lvƒvƒ‰ƒXƒXƒe�[ƒg‚Ü‚½‚ÍLvƒ}ƒCƒiƒXƒXƒe�[ƒg‚ð”»’è�B
for j in $data_states[i].plus_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|�“)/
slip_damage_percent += $1.to_i
elsif $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
slip_damage_plus += $1.to_i
end
end
end
for j in $data_states[i].minus_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|�“)/
slip_damage_percent -= $1.to_i
elsif $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
slip_damage_plus -= $1.to_i
end
end
end
end
end
if slip_damage_percent == 0 and slip_damage_plus == 0
xrxs_bp7_slip_damage_effect
else
# –h‹ï‚ªƒXƒŠƒbƒv–hŒä‚ª‚ ‚é�ê�‡‚ð”»’è
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
armor = $data_armors[i]
next if armor == nil
for j in armor.guard_state_set
if $data_states[j] != nil
if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|�“)/
if slip_damage_percent > 0
slip_damage_percent = [slip_damage_percent - $1.to_i, 0].max
end
end
if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)$/
if slip_damage_percent > 0
slip_damage_plus = [slip_damage_plus - $1.to_i, 0].max
end
end
end
end
end
# ƒ_ƒ��[ƒW‚ð�Ý’è
self.damage = self.maxhp * slip_damage_percent / 100 + slip_damage_plus
# •ªŽU
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# HP ‚©‚çƒ_ƒ��[ƒW‚ðŒ¸ŽZ
self.hp -= self.damage
# ƒ�ƒ\ƒbƒh�I—¹
return true
end
end
end
# �¥�£�¥ XRXS_BP 1. CP�§“±“ü ver.15 �¥�£�¥
# by �÷‰ë �Ý“y, ˜aŠó, Jack-R

#==============================================================================
# �¡ Scene_Battle_CP
#==============================================================================
class Scene_Battle_CP
#--------------------------------------------------------------------------
# �œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï�”
#--------------------------------------------------------------------------
attr_accessor :stop # CP‰ÁŽZƒXƒgƒbƒv
#----------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg‚Ì�‰Šú‰»
#----------------------------------------------------------------------------
def initialize
@battlers = []
@cancel = false
@agi_total = 0
# ”z—ñ @count_battlers ‚ð�‰Šú‰»
@count_battlers = []
# ƒGƒlƒ~�[‚ð”z—ñ @count_battlers ‚ɒljÁ
for enemy in $game_troop.enemies
@count_battlers.push(enemy)
end
# ƒAƒNƒ^�[‚ð”z—ñ @count_battlers ‚ɒljÁ
for actor in $game_party.actors
@count_battlers.push(actor)
end
for battler in @count_battlers
@agi_total += battler.agi
end
for battler in @count_battlers
battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min
end
end
#----------------------------------------------------------------------------
# �œ CPƒJƒEƒ“ƒg‚ÌŠJŽn
#----------------------------------------------------------------------------
def start
if @cp_thread != nil then
return
end
@cancel = false
@stop = false
# ‚±‚±‚©‚çƒXƒŒƒbƒh
@cp_thread = Thread.new do
while @cancel != true
if @stop != true
self.update # �X�V
sleep(0.05)
end
end
end
# ‚±‚±‚܂ŃXƒŒƒbƒh
end
#----------------------------------------------------------------------------
# �œ CPƒJƒEƒ“ƒgƒAƒbƒv
#----------------------------------------------------------------------------
def update
if @count_battlers != nil then
for battler in @count_battlers
# �s“®�o—ˆ‚È‚¯‚ê‚Ζ³Ž‹
if battler.dead? == true #or battler.movable? == false then
battler.cp = 0
next
end
# ‚±‚±‚Ì 1.3‚ð•Ï‚¦‚邱‚Æ‚Å�«ƒXƒs�[ƒh‚ð•Ï�X‰Â”\�B‚½‚¾‚µ�¬�”“_‚ÍŽg—p‚·‚邱‚Æ�B
battler.cp = [[battler.cp + 1.3 * 4096 * battler.agi / @agi_total, 0].max, 65535].min
end
end
end
#----------------------------------------------------------------------------
# �œ CPƒJƒEƒ“ƒg‚ÌŠJŽn
#----------------------------------------------------------------------------
def stop
@cancel = true
if @cp_thread != nil then
@cp_thread.join
@cp_thread = nil
end
end
end
#==============================================================================
# �¡ Game_Battler
#==============================================================================
class Game_Battler
attr_accessor :now_guarding # Œ»�Ý–hŒä’†ƒtƒ‰ƒO
attr_accessor :cp # Œ»�ÝCP
attr_accessor :slip_state_update_ban # ƒXƒŠƒbƒv�EƒXƒe�[ƒgŽ©“®�ˆ—�‚Ì‹ÖŽ~
#--------------------------------------------------------------------------
# �œ ƒRƒ}ƒ“ƒh“ü—͉”\”»’è
#--------------------------------------------------------------------------
def inputable?
return (not @hidden and restriction <= 1 and @cp >=65535)
end
#--------------------------------------------------------------------------
# �œ ƒXƒe�[ƒg [ƒXƒŠƒbƒvƒ_ƒ��[ƒW] ”»’è
#--------------------------------------------------------------------------
alias xrxs_bp1_slip_damage? slip_damage?
def slip_damage?
return false if @slip_state_update_ban
return xrxs_bp1_slip_damage?
end
#--------------------------------------------------------------------------
# �œ ƒXƒe�[ƒgŽ©‘R‰ð�œ (ƒ^�[ƒ“‚²‚ƂɌĂÑ�o‚µ)
#--------------------------------------------------------------------------
alias xrxs_bp1_remove_states_auto remove_states_auto
def remove_states_auto
return if @slip_state_update_ban
xrxs_bp1_remove_states_auto
end
end
#==============================================================================
# �¡ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# �œ ƒZƒbƒgƒAƒbƒv
#--------------------------------------------------------------------------
alias xrxs_bp1_setup setup
def setup(actor_id)
xrxs_bp1_setup(actor_id)
@hate = 100 # init-value is 100
@cp = 0
@now_guarding = false
@slip_state_update_ban = false
end
end
#==============================================================================
# �¡ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize(troop_id, member_index)
xrxs_bp1_initialize(troop_id, member_index)
@hate = 100 # init-value is 100
@cp = 0
@now_guarding = false
@slip_state_update_ban = false
end
end
#==============================================================================
# �¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# �œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï�”
#--------------------------------------------------------------------------
attr_accessor :update_cp_only # CPƒ��[ƒ^�[‚Ì‚Ý‚Ì�X�V
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp1_initialize initialize
def initialize
@update_cp_only = false
xrxs_bp1_initialize
end
#--------------------------------------------------------------------------
# �œ ƒŠƒtƒŒƒbƒVƒ…
#--------------------------------------------------------------------------
alias xrxs_bp1_refresh refresh
def refresh
if @update_cp_only == false
xrxs_bp1_refresh
end
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_cp_meter(actor, actor_x, 96, 120, 0)
end
end
#--------------------------------------------------------------------------
# �œ CPƒ��[ƒ^�[ ‚Ì•`‰æ
#--------------------------------------------------------------------------
def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
if actor.cp == nil
actor.cp = 0
end
w = width * [actor.cp,65535].min / 65535
self.contents.fill_rect(x, y+28, w,1, Color.new(255, 255, 128, 255))
self.contents.fill_rect(x, y+29, w,1, Color.new(255, 255, 0, 255))
self.contents.fill_rect(x, y+30, w,1, Color.new(192, 192, 0, 255))
self.contents.fill_rect(x, y+31, w,1, Color.new(128, 128, 0, 255))
end
end
#==============================================================================
# �¡ Scene_Battle
#==============================================================================
class Scene_Battle
# ‚±‚±‚ÉŒø‰Ê‰¹‚ð�Ý’è‚·‚é‚Æ�AƒAƒNƒ^�[ƒRƒ}ƒ“ƒh‚ªƒ|ƒbƒv‚µ‚½‚Æ‚«‚ÉŒø‰Ê‰¹‚ð�Ä�¶
$data_system_command_up_se = ""
#--------------------------------------------------------------------------
# �œ ƒoƒgƒ‹�I—¹
# result : Œ‹‰Ê (0:�Ÿ—˜ 1:”s–k 2:“¦‘–)
#--------------------------------------------------------------------------
alias xrxs_bp1_battle_end battle_end
def battle_end(result)
# CPƒJƒEƒ“ƒg’âŽ~
@cp_thread.stop
xrxs_bp1_battle_end(result)
end
#--------------------------------------------------------------------------
# �œ ƒvƒŒƒoƒgƒ‹ƒtƒF�[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase1 start_phase1
def start_phase1
@agi_total = 0
@cp_thread = Scene_Battle_CP.new
# ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ð�Ä�ì�¬
s1 = $data_system.words.attack
s2 = $data_system.words.skill
s3 = $data_system.words.guard
s4 = $data_system.words.item
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, "Run"])
@actor_command_window.y = 128
@actor_command_window.back_opacity = 160
@actor_command_window.active = false
@actor_command_window.visible = false
@actor_command_window.draw_item(4, $game_temp.battle_can_escape ? @actor_command_window.normal_color : @actor_command_window.disabled_color)
xrxs_bp1_start_phase1
end
#--------------------------------------------------------------------------
# �œ ƒp�[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF�[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase2 start_phase2
def start_phase2
xrxs_bp1_start_phase2
@party_command_window.active = false
@party_command_window.visible = false
# ŽŸ‚Ö
start_phase3
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒp�[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF�[ƒY)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase2 update_phase2
def update_phase2
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::C)
# ƒp�[ƒeƒBƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J�[ƒ\ƒ‹ˆÊ’u‚Å•ªŠò
case @party_command_window.index
when 0 # �키
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
@cp_thread.start
# ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒtƒF�[ƒYŠJŽn
start_phase3
end
return
end
xrxs_bp1_update_phase2
end
#--------------------------------------------------------------------------
# �œ ŽŸ‚̃AƒNƒ^�[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö
#--------------------------------------------------------------------------
def phase3_next_actor
# ƒ‹�[ƒv
begin
# ƒAƒNƒ^�[‚Ì–¾–ŃGƒtƒFƒNƒg OFF
if @active_battler != nil
@active_battler.blink = false
end
# �ÅŒã‚̃AƒNƒ^�[‚Ì�ê�‡
if @actor_index == $game_party.actors.size-1
# ƒ�ƒCƒ“ƒtƒF�[ƒYŠJŽn
@cp_thread.start
start_phase4
return
end
# ƒAƒNƒ^�[‚̃Cƒ“ƒfƒbƒNƒX‚ð�i‚ß‚é
@actor_index += 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
if @active_battler.inputable? == false
@active_battler.current_action.kind = -1
end
# ƒAƒNƒ^�[‚ªƒRƒ}ƒ“ƒh“ü—Í‚ðŽó‚¯•t‚¯‚È‚¢�ó‘Ô‚È‚ç‚à‚¤ˆê“x
end until @active_battler.inputable?
@cp_thread.stop
# ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒZƒbƒgƒAƒbƒv
@active_battler.now_guarding = false
phase3_setup_command_window
end
#--------------------------------------------------------------------------
# �œ ‘O‚̃AƒNƒ^�[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö
#--------------------------------------------------------------------------
def phase3_prior_actor
# ƒ‹�[ƒv
begin
# ƒAƒNƒ^�[‚Ì–¾–ŃGƒtƒFƒNƒg OFF
if @active_battler != nil
@active_battler.blink = false
end
# �Å�‰‚̃AƒNƒ^�[‚Ì�ê�‡
if @actor_index == 0
# �Å�‰‚Ö–ß‚é
start_phase3
return
end
# ƒAƒNƒ^�[‚̃Cƒ“ƒfƒbƒNƒX‚ð–ß‚·
@actor_index -= 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
# ƒAƒNƒ^�[‚ªƒRƒ}ƒ“ƒh“ü—Í‚ðŽó‚¯•t‚¯‚È‚¢�ó‘Ô‚È‚ç‚à‚¤ˆê“x
end until @active_battler.inputable?
@cp_thread.stop
# ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒZƒbƒgƒAƒbƒv
@active_battler.now_guarding = false
phase3_setup_command_window
end
#--------------------------------------------------------------------------
# �œ ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃ZƒbƒgƒAƒbƒv
#--------------------------------------------------------------------------
alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window
def phase3_setup_command_window
# Œø‰Ê‰¹‚Ì�Ä�¶
Audio.se_play($data_system_command_up_se) if $data_system_command_up_se != ""
# –ß‚·
xrxs_bp1_phase3_setup_command_window
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒtƒF�[ƒY : Šî–{ƒRƒ}ƒ“ƒh)
#--------------------------------------------------------------------------
alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
# C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽ�ê�‡
if Input.trigger?(Input::C)
# ƒAƒNƒ^�[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J�[ƒ\ƒ‹ˆÊ’u‚Å•ªŠò
case @actor_command_window.index
when 4 # “¦‚°‚é
if $game_temp.battle_can_escape
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# ƒAƒNƒVƒ‡ƒ“‚ð�Ý’è
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 4
# ŽŸ‚̃AƒNƒ^�[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö
phase3_next_actor
else
# ƒuƒU�[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
xrxs_bsp1_update_phase3_basic_command
end
#--------------------------------------------------------------------------
# �œ ƒ�ƒCƒ“ƒtƒF�[ƒYŠJŽn
#--------------------------------------------------------------------------
alias xrxs_bp1_start_phase4 start_phase4
def start_phase4
xrxs_bp1_start_phase4
# ƒGƒlƒ~�[ƒAƒNƒVƒ‡ƒ“�ì�¬
for enemy in $game_troop.enemies
if enemy.cp < 65535
enemy.current_action.clear
enemy.current_action.kind = -1 # ƒ^�[ƒ“”ò‚΂µ�B
next
end
enemy.make_action
end
# �s“®�‡�˜�ì�¬
make_action_orders
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒ�ƒCƒ“ƒtƒF�[ƒY ƒXƒeƒbƒv 1 : ƒAƒNƒVƒ‡ƒ“�€”õ)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step1 update_phase4_step1
def update_phase4_step1
# �‰Šú‰»
@phase4_act_continuation = 0
# �Ÿ”s”»’è
if judge
@cp_thread.stop
# �Ÿ—˜‚Ü‚½‚Í”s–k‚Ì�ê�‡ : ƒ�ƒ\ƒbƒh�I—¹
return
end
# –¢�s“®ƒoƒgƒ‰�[”z—ñ‚Ì�擪‚©‚çŽæ“¾
@active_battler = @action_battlers[0]
# ƒXƒe�[ƒ^ƒX�X�V‚ðCP‚¾‚¯‚ÉŒÀ’è�B
@status_window.update_cp_only = true
# ƒXƒe�[ƒg�X�V‚ð‹ÖŽ~�B
@active_battler.slip_state_update_ban = true if @active_battler != nil
# –ß‚·
xrxs_bp1_update_phase4_step1
# ‹ÖŽ~‚ð‰ð�œ
@status_window.update_cp_only = false
@active_battler.slip_state_update_ban = false if @active_battler != nil
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒ�ƒCƒ“ƒtƒF�[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒ“ŠJŽn)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step2 update_phase4_step2
def update_phase4_step2
# ‹­�§ƒAƒNƒVƒ‡ƒ“‚Å‚È‚¯‚ê‚Î
unless @active_battler.current_action.forcing
# CP‚ª‘«‚è‚Ä‚¢‚È‚¢�ê�‡
if @phase4_act_continuation == 0 and @active_battler.cp < 65535
@phase4_step = 6
return
end
# �§–ñ‚ª [“G‚ð’Ê�í�UŒ‚‚·‚é] ‚© [–¡•û‚ð’Ê�í�UŒ‚‚·‚é] ‚Ì�ê�‡
if @active_battler.restriction == 2 or @active_battler.restriction == 3
# ƒAƒNƒVƒ‡ƒ“‚É�UŒ‚‚ð�Ý’è
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
end
# �§–ñ‚ª [�s“®‚Å‚«‚È‚¢] ‚Ì�ê�‡
if @active_battler.restriction == 4
# ƒAƒNƒVƒ‡ƒ“‹­�§‘Î�ۂ̃oƒgƒ‰�[‚ðƒNƒŠƒA
$game_temp.forcing_battler = nil
if @phase4_act_continuation == 0 and @active_battler.cp >= 65535
# ƒXƒe�[ƒgŽ©‘R‰ð�œ
@active_battler.remove_states_auto
# CP�Á”ï
@active_battler.cp = [(@active_battler.cp - 65535),0].max
# ƒXƒe�[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒŠƒtƒŒƒbƒVƒ…
@status_window.refresh
end
# ƒXƒeƒbƒv 1 ‚ɈÚ�s
@phase4_step = 1
return
end
end
# ƒAƒNƒVƒ‡ƒ“‚ÌŽí•Ê‚Å•ªŠò
case @active_battler.current_action.kind
when 0
# �UŒ‚¥–hŒä�E“¦‚°‚é�E‰½‚à‚µ‚È‚¢Žž‚Ì‹¤’Ê�Á”ïCP
@active_battler.cp -= 0 if @phase4_act_continuation == 0
when 1
# ƒXƒLƒ‹Žg—pŽž‚Ì�Á”ïCP
@active_battler.cp -= 65535 if @phase4_act_continuation == 0
when 2
# ƒAƒCƒeƒ€Žg—pŽž‚Ì�Á”ïCP
@active_battler.cp -= 65535 if @phase4_act_continuation == 0
when -1
# CP‚ª—­‚Ü‚Á‚Ä‚¢‚È‚¢
@phase4_step = 6
return
end
# CP‰ÁŽZ‚ðˆêŽž’âŽ~‚·‚é
@cp_thread.stop = true
# ƒXƒe�[ƒgŽ©‘R‰ð�œ
@active_battler.remove_states_auto
xrxs_bp1_update_phase4_step2
end
#--------------------------------------------------------------------------
# �œ Šî–{ƒAƒNƒVƒ‡ƒ“ Œ‹‰Ê�ì�¬
#--------------------------------------------------------------------------
alias xrxs_bp1_make_basic_action_result make_basic_action_result
def make_basic_action_result
# �UŒ‚‚Ì�ê�‡
if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0
@active_battler.cp -= 65535 # �UŒ‚Žž‚ÌCP�Á”ï
end
# –hŒä‚Ì�ê�‡
if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0
@active_battler.cp -= 32767 # –hŒäŽž‚ÌCP�Á”ï
end
# “G‚Ì“¦‚°‚é‚Ì�ê�‡
if @active_battler.is_a?(Game_Enemy) and
@active_battler.current_action.basic == 2 and @phase4_act_continuation == 0
@active_battler.cp -= 65535 # “¦‘–Žž‚ÌCP�Á”ï
end
# ‰½‚à‚µ‚È‚¢‚Ì�ê�‡
if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0
@active_battler.cp -= 32767 # ‰½‚à‚µ‚È‚¢Žž‚ÌCP�Á”ï
end
# “¦‚°‚é‚Ì�ê�‡
if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0
@active_battler.cp -= 65535 # “¦‘–Žž‚ÌCP�Á”ï
# “¦‘–‰Â”\‚Å‚Í‚È‚¢�ê�‡
if $game_temp.battle_can_escape == false
# ƒuƒU�[ SE ‚ð‰‰‘t
$game_system.se_play($data_system.buzzer_se)
return
end
# Œˆ’è SE ‚ð‰‰‘t
$game_system.se_play($data_system.decision_se)
# “¦‘–�ˆ—�
update_phase2_escape
return
end
xrxs_bp1_make_basic_action_result
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒ�ƒCƒ“ƒtƒF�[ƒY ƒXƒeƒbƒv 5 : ƒ_ƒ��[ƒW•\Ž¦)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step5 update_phase4_step5
def update_phase4_step5
# ƒXƒŠƒbƒvƒ_ƒ��[ƒW
if @active_battler.hp > 0 and @active_battler.slip_damage?
@active_battler.slip_damage_effect
@active_battler.damage_pop = true
end
xrxs_bp1_update_phase4_step5
end
#--------------------------------------------------------------------------
# �œ ƒtƒŒ�[ƒ€�X�V (ƒ�ƒCƒ“ƒtƒF�[ƒY ƒXƒeƒbƒv 6 : ƒŠƒtƒŒƒbƒVƒ…)
#--------------------------------------------------------------------------
alias xrxs_bp1_update_phase4_step6 update_phase4_step6
def update_phase4_step6
# CP‰ÁŽZ‚ð�ÄŠJ‚·‚é
@cp_thread.stop = false
# ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ð‰B‚·
@help_window.visible = false
xrxs_bp1_update_phase4_step6
end
end
# �¥�£�¥ XRXS_BP 7. ƒoƒgƒ‹ƒXƒe�[ƒ^ƒX�EƒNƒŠƒAƒfƒUƒCƒ“ ver.1.02 �¥�£�¥
# by �÷‰ë �Ý“y, TOMY

#==============================================================================
# �¡ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# �œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï�”
#--------------------------------------------------------------------------
attr_accessor :update_cp_only # CPƒ��[ƒ^�[‚Ì‚Ý‚Ì�X�V
#--------------------------------------------------------------------------
# �œ ƒIƒuƒWƒFƒNƒg�‰Šú‰»
#--------------------------------------------------------------------------
alias xrxs_bp7_initialize initialize
def initialize
xrxs_bp7_initialize
# �«Full-View‚Ì�ê�‡‚͉º“ñ�s‚Ì # ‚ð�Á‚µ‚Ä‚­‚¾‚³‚¢�B
#self.opacity = 0
#self.back_opacity = 0
end
#--------------------------------------------------------------------------
# �œ ƒŠƒtƒŒƒbƒVƒ…
#--------------------------------------------------------------------------
alias xrxs_bp7_refresh refresh
def refresh
if @update_cp_only
xrxs_bp7_refresh
return
end
# •`ŽÊ‚ð‹ÖŽ~‚µ‚È‚ª‚ç–ß‚·
@draw_ban = true
xrxs_bp7_refresh
# •`ŽÊ‚Ì‹ÖŽ~‚ð‰ð�œ
@draw_ban = false
# •`ŽÊ‚ðŠJŽn
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 21
# •à�sƒLƒƒƒ‰ƒOƒ‰ƒtƒBƒbƒN‚Ì•`ŽÊ
draw_actor_graphic(actor, actor_x - 9, 116)
# HP/SPƒ��[ƒ^�[‚Ì•`ŽÊ
draw_actor_hp_meter_line(actor, actor_x, 72, 96, 12)
draw_actor_sp_meter_line(actor, actor_x, 104, 96, 12)
# HP�”’l‚Ì•`ŽÊ
self.contents.font.size = 24 # HP/SP�”’l‚Ì•¶Žš‚Ì‘å‚«‚³
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
draw_shadow_text(actor_x-2, 58, 96, 24, actor.hp.to_s, 2)
# SP�”’l‚Ì•`ŽÊ
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
draw_shadow_text(actor_x-2, 90, 96, 24, actor.sp.to_s, 2)
# —pŒê�uHP�v‚Æ—pŒê�uSP�v‚Ì•`ŽÊ
self.contents.font.size = 12 # —pŒê�uHP/SP�v‚Ì•¶Žš‚Ì‘å‚«‚³
self.contents.font.color = system_color # —pŒê�uHP/SP�v‚Ì•¶Žš‚Ì�F
draw_shadow_text(actor_x, 60, 96, 12, $data_system.words.hp)
draw_shadow_text(actor_x, 92, 96, 12, $data_system.words.sp)

draw_actor_state(actor, actor_x, 100)
end
end
end
#==============================================================================
# �¡ Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# �œ HPƒ��[ƒ^�[ ‚Ì•`‰æ
#--------------------------------------------------------------------------
def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)
w = width * actor.hp / actor.maxhp
hp_color_1 = Color.new(255, 0, 0, 192)
hp_color_2 = Color.new(255, 255, 0, 192)
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
x -= 1
y += (height/4).floor
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
end
#--------------------------------------------------------------------------
# �œ SPƒ��[ƒ^�[ ‚Ì•`‰æ
#--------------------------------------------------------------------------
def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)
w = width * actor.sp / actor.maxsp
hp_color_1 = Color.new( 0, 0, 255, 192)
hp_color_2 = Color.new( 0, 255, 255, 192)
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
x -= 1
y += (height/4).floor
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
x -= 1
y += (height/4).ceil
self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
end
#--------------------------------------------------------------------------
# �œ –¼‘O‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_name draw_actor_name
def draw_actor_name(actor, x, y)
xrxs_bp7_draw_actor_name(actor, x, y) if @draw_ban != true
end
#--------------------------------------------------------------------------
# �œ ƒXƒe�[ƒg‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_state draw_actor_state
def draw_actor_state(actor, x, y, width = 120)
xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true
end
#--------------------------------------------------------------------------
# �œ HP ‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_hp draw_actor_hp
def draw_actor_hp(actor, x, y, width = 144)
xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true
end
#--------------------------------------------------------------------------
# �œ SP ‚Ì•`‰æ
#--------------------------------------------------------------------------
alias xrxs_bp7_draw_actor_sp draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true
end
end
#==============================================================================
# �ž ŠO•”ƒ‰ƒCƒuƒ‰ƒŠ
#==============================================================================
class Window_Base
#--------------------------------------------------------------------------
# �œ ƒ‰ƒCƒ“•`‰æ by �÷‰ë �Ý“y
#--------------------------------------------------------------------------
def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
# •`ŽÊ‹——£‚ÌŒvŽZ�B‘å‚«‚ß‚É’¼ŠpŽž‚Ì’·‚³�B
distance = (start_x - end_x).abs + (start_y - end_y).abs
# •`ŽÊŠJŽn
if end_color == start_color
for i in 1..distance
x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
self.contents.fill_rect(x, y, width, width, start_color)
end
else
for i in 1..distance
x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
r = start_color.red * (distance-i)/distance + end_color.red * i/distance
g = start_color.green * (distance-i)/distance + end_color.green * i/distance
b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
end
end
end

#--------------------------------------------------------------------------
# �œ ‰e•¶Žš•`‰æ by TOMY
#--------------------------------------------------------------------------
def draw_shadow_text(x, y, width, height, string, align = 0)
# Œ³‚Ì�F‚ð•Û‘¶‚µ‚Ä‚¨‚­
color = self.contents.font.color.dup
# �•Žš‚ʼne•`‰æ
self.contents.font.color = Color.new(0, 0, 0)
self.contents.draw_text(x + 2, y + 2, width, height, string, align)
# Œ³‚Ì�F‚É–ß‚µ‚Ä•`‰æ
self.contents.font.color = color
self.contents.draw_text(x, y, width, height, string, align)
end
end

23 février 2006

encore 2 tutoriaux en plus

Ajout, de 2 tutoriaux RM2K un pour affiché la carte du monde al'ecran et l'autre pour créé un limit break a la FFVII dans un combat

23 février 2006

Comment créer un objet carte ?

Voici comment créer un objet qui affiche une carte qui, quand vous appuyez sur Cancel, disparaît et vous ramenne au menu.

Créer l'objet

Créez un objet nommé Carte:
Classification: Switch
Price: 0
Use Number of times: Limitless
ON Switch: [0001:Carte affiche]
Available at: Field

L'Event

Maintenant créez un Common Event avec Parallel Process et comme condition le Switch: [0001:Carte affiche], puis entrez les commande suivante:

<>Show Picture: 20, Carte, (160, 120)    
(Mettez 20 pour le numéro de l'image, car si vous avez d'autre image utilisé sur l'écran et que vous mettez 1, et bien l'image 1 que vous utilisiez sera remplacée par celle-ci)

<>Variable: [0001:Carte password] Set, 0
<>Enter Password:[0001:Carte password]
<>Fork Optn: Varbl:[0001:Carte password]- 6
    <>Erase Picture:   20
    <>Change Switch:[0001:Carte affiche]- OFF Set
    <>Variable:[0001:Carte password] Set, 0
    <>
:END Casey
<>

Et voila, c'était simple non ? Vous pouvez aussi mettre l'image dans un coin, à la place de la mettre en pleine écran.

23 février 2006

Comment créer un Limit Break ?

Voici comment créer un Limit breake, c'est à dire une attaque puissante que vos perso ne peuvent réaliser que quand ils ont les HP bas, ou sous l'effet d'un sort spécial (par exemple). Ceci est l'idée de base, à vous de développer un système plus complexe.

Créer l'attaque

Commencez par ouvrir la DataBase (appuyer sur F8), allez sous Battle Animation. Créez une animation cool pour votre sort. Vous pouvez, par exemple, créer un set d'animation où l'on voit vos perso attaquer, ça peut être cool. Nommé l'animation Limit 1 (par exemple)
Après ceci de fait, allez sous Skills, créez un sort avec l'animation que vous venez de faire (vous n'êtes pas obligé de faire comme suit, c'est juste un exemple):

Name: Taillade
Explanation: Un coup puissant
Classification: Norm
MP Cost: 0
Effect Range: Single Enemy
Battle Animation: Limit 1
Basis Effect #: 100
Ability Down: HP
Basis Success rate: 100%

Allez sous Monster Party (tjrs dans la DataBase)
Créez un groupe d'ennemi (je vous conseil de ne pas mettre d'enemi et de copier/coller ce groupe, comme ça vous avez plus qu' a mettre les ennemis sans recopier l'event)
En bas, sous Battle Event, appuyez sur la case à côté de Trigger, choisissez: Hero: Perso 1 ,HP
1 % more 25 % less
Ce qui donne:
Hero[Perso 1] HP[1?25]%

Puis, dans la plus grande case en dessous, entrez les commandes suivantes:

<>Fork Optn: Switch [0001: Perso 1 limit]- OFF
   <>Messg: \N[1] Limit Break !!
   <>Change Skill: Perso 1- Taillade -> Memory
   <>Change Switch: [0001:Perso 1 limit] -ON Set
   <>
:End Case
<>

Maintenant, créez une deuxième page, puis à côté de Trigger, mettez:
Hero[Perso 1] HP[26?100]%

Puis dans la grande case.

<>Change Switch: [0001:Perso 1 limit]- OFF Set
<>Change Skill: Perso 1- Taillade -> Forget
<>

Voila, c'est fini ! Pour faire pour plusieur perso, faites une Fork condition par perso (avec des sorts différents) dans la première page, et une Fork par perso dans la deuxième (donc comme condition: si le perso à plus de 26 % de HP alors..)

L'event

20 février 2006

Bases de RPG Maker 2000 et 2003

RPG Maker 2000 et 2003:

Le tutorial pour RPG Maker 2003 est simple et pratique, si vous faites ceux pour RPG Maker XP vous remarquerai une technique différent que j'ai utilisé pour les tutoriaux. 

Tutorial à la suite:

Ce tutorial doit être fait du début à la fin, alors vous ne pouvez le commencer en plein milieu.

Ici vous aller y retrouver un tutorial comme vous n’en avez jamais vu. Ce tutorial vas vous servir a apprendre comment fonctionne les programmes : RPG Maker 2000 et 2003. En plus je vais vous dévoiler des réponses auquel vous chercher depuis longtemps.

Le tutorial est divisé en chapitre, donc chaque chapitre détient les sujets. Ce qui vous facilitera la tache durant votre apprentissage. Par contre, si vous décider de commencer votre apprentissage à partir d'un certain chapitre, car vous croyez que tu sais ce qui est expliquer avant, Détromper vous, car le principale est sur ment au début, car sans la base, vous arriverez a rien. Alors, il vaut mieux de tout lire de A à Z que de tout mélanger les chapitres et en finir sur le forum à poser des questions inutile. Attention certain dimension d’image ne son pas a leurs vrais alors ne comparer pas vos résulta aux images.

Chapitre I

Ce qui s'y trouve :
- L'installation
- Nouveau projet
- Menu (boutons)

L'installation : Pour commencer on vas comprendre une foi pour toutes comment être sur d’avoir bien installer RPG Maker 2000 et 2003.

RM 2000: -Installation ce fait en 2 étapes. Pour commencer cliquer 2 fois sur l’icône ''setup.exe''. Ensuite Cliquer suivent ''next'' tout en laissant les données par défaut jusqu’à en arriver à fin ‘’ finish’’.

-La deuxième étape est d’installer le RTP dans le bon répertoire. Cet à dire le répertoire par défaut. Si vous avez le RTP non en ''setup'' , mais tout simplement en dossier. Copier le et coller le dans le répertoire du RPG.

RM 2003: L’installation de RPG Maker 2003 est la même que pour RPG Maker 2000, sauf pour le spécial ''setup'' que vous pouvez télécharger dans section RM2k3. Ce ''setup'' est fait de façon à ce que vous vous forcer même pas le petit doigt pour comprendre comment l’installer, car tout se fait tout seul avec en plus le RTP qui s’installer automatiquement.

Nouveau projet : Maintenant que le programme est en bonne état, on vas ce faire un projet.

Le projet: Le projet, est la que votre jeu va avoir tout ses données, cet à dire : titre, maps histoire, ressources etc…Rappeler vous que vous ne devez sauvegarder votre projet que en cliquant sur le bouton test-play. Le bouton Create a Gamedisk ne sert pas à sauvegarder ton projet, mais sert à créer ton jeu en .exe de façon que tu puisse y jouer sans utiliser RPG Maker. Cette méthode doit être utilisé qu’a la fin du projet.

Création du projet: Pour faire un nouveau projet, commencer par ouvrir RPG Maker 2000 ou 2003. ( à partir de maintenant, les étapes seront fait à partir de RM2K3, car tout ce qui est sur RM2K se trouve sur RM2K3 et qu’en plus RM2K3 a plus de données ). Cliquer sur Project en haut à gauche, puis cliquer New Project. Une fenêtre va s’ouvrir, vous aller donc le remplir. Dyrectory Name est pour le nom de votre projet (la compagnie). Game Name est tout simplement le titre de ton jeu. Pour finir Project Path est le répertoire ou votre projet va s’enregistrer. Attention, le répertoire par défaut est pas bon, alors vous aller le changer en cliquant sur les 3 petit poin pour prendre : C:Program Files pg2003Project. Puis cliquer sur OK pour accepter ou Cancel pour annuler. Je vous conseiller OK.

Menu (boutons) : Voici une image représentant le menu avec les boutons :

Désormais, nous ne utiliseront plus les colonnes de choix en haut ( Project Map etc... ) Car tout ce qui s'y trouve, sont aussi dans les boutons ''icône''.

Bouton 1: Le premier bouton qui ressemble à une feuille te sert à créer ton projet.

Bouton 2: Le second qui ressemble à une feuille avec une flèche te sert à ouvrir un projet déjà créer.

Bouton 3: Le troisième qui ressemble au deuxième bouton, mais en envers, sert à fermer ton projet.

Bouton 4: Celui ci, va vous servir qu'à la fin de votre projet. Tout simplement pour créer ton jeu en .exe pour que par la suite tu puisses jouer à ton jeu sans l'éditer à partir de ce répertoire, mais que pour y jouer sans utiliser RPG Maker.

Bouton 5: Le quatrième bouton va te servir a sauvegarder ton projet. Tu peux aussi sauvegarder ton projet en cliquant sur Test your Game (F9).

Bouton 6: Il va te servir à un genre de ''Big-Undo'' mais à la place de revenir à une étapes près, sa revient à la dernière foi que tu a sauvegarder ton projet.

Bouton 7: Voici le Title Layer 1, il va te servir a mettre ta map de droite en fonction dessin, pour faire par exemple: maison, paysage etc... Remarquer que en même temps d'être sur le mode Layer 1, le menu dessin a gauche change.

Bouton 8: Voici le Title Layer 2, il va te servir a mettre ta map de droite en fonction dessin 2, pour faire par exemple: décors, village etc... Remarquer que en même temps d'être sur le mode Layer 2, le menu dessin a gauche change. Et aussi avec le ce mode, vous pouvez mettre vos objets, décor par dessus le mode 1.

Bouton 9: Et maintenant le mode Event Layer. Celui s'y est le plus important et le plus utiliser. C'est ici que vous aller mettre vos personnages, villageois, programmation, effet, la musique tout pour que votre jeu fonctionne. Remarquer que la map devient quadriller et que le menu dessin a gauche reste la même que en mode 2.

Bouton 10: La vue 1/1 la plus rapprocher.

Bouton 11: La vue ½ à moitié plus loin.

Bouton 12: La vue ¼ deux foi plus loin.

Bouton 13: La vue 1/8 la plus éloigner.

Bouton 14: La Data Base te sert à configurer ton jeu. Par exemple : création des Heros, Monstre, Game Over, Titre, etc…

Bouton 15: Importer ou Exporter des ressources RTP.

Bouton 16: Tester ou écouter les BGM ( musique ).

Bouton 17: Pour chercher (Search) les Events. Oublier pas que les Events se fon dans le mode Event Layer.

Bouton 18: Test your Game sert à tester ton jeu. En même temps il sauvegarde ton projet.

Bouton 19: Le gros X sert juste à mettre le Test your Game en grand écran.

Bouton 20: Le bouton Title te sert à mettre l'écran de fon, l'image title quand tu test ton jeu avec Test your Game.

Bouton 21: Le Help sert à rien, car en plus d'être non fonctionnelle, il est en japonais.

Bouton 22: La flèche sert à faire le Undo classique ( avant ).

Bouton 23: Un bouton pour sélectionner une partie sur ta map en mode 1 et 2 seulement.

Bouton 24: Changer les vue 1/1 ½ ¼ 1/8 avec le bouton Zoom.

Bouton 25: Dessiner 1 carrée par carré.

Bouton 26: Dessiner 2 par grosseur désirer en forme de carrée.

Bouton 27: Dessiner 3 par grosseur désirer en forme de cercle.

Bouton 28: Dessiner 4 partout ( paint )

Les couleurs:
- Jaune: manipulations
- vert: mots important ( bouton / dossier / répertoire / étapes )
- vert: à retenir absolument
- bleu: sous-titre
- bleu: sujet
-rouge: à ne pas confondre

Chapitre II

Ce qui s'y trouve :
- Title Layer 1
- Title Layer 2
- Event Layer

Title Layer 1: Le Title Layer 1 comme vous laver vue au chapitre I, est un bouton qui permet de faire l’environnement, mur, toi, plancher etc.… de votre jeu. Ici vous aller apprendre à vous en servir.

Exemple:

Propriétée: Voici un chipset inside, qui est donner avec votre RPG Maker. Pour choisir un chipset, cliquer à l’aide du bouton droit de la souris sur une map désirer, et cliquer map properties. Alors vous pourrai faire beaucoup de configuration sur vos maps, mais la on veut juste changer le chipset. Maintenant cliquer la colonne Title Set pour choisir votre chipset. Dans ce cas je vous demande de prendre inside, car on va l’utiliser très bientôt.

Out: La première ranger sert au environnement out qui est habituellement fait pour l’eau, ou autre liquide. Mais surtout, des environnementaux qui est en mode X qui empêche les personnage d’y passé.

Mode: Il a plusieurs types de mode pour les dessins. Il a le mode X qui empêche tout chose de passer par-dessus. Le mode O qui permet tout d’y passer. Le mode * qui est derrière les personnage, comme exemple : un arbre, le héro peut passer en arrière alors le haut de l’arbre doit être en mode *. Pour finir il y a le mode CARRÉ. Ce mode spécial, que peut savent bien l’utiliser, est utile que pour les hauts des murs. Vous comprendre plus tard.

Modifier les modes: Pour modifier les modes, il faut cliquer sur le bouton Data Base (14). Puis cliquer dans le haut la section Title Set. Cet section vas vous permet de rajouter ou enlever tout vos chipset. Pour modifier les modes, cliquer maintenant sur pasability. Vous pouvez aussi modifier les modes du Title Layer 2, mais je vous conseille de ne pas changer les modes des chipset originaux du programme.

Superficie: Pour changer la superficie de la map, retourner de la même façon que tout à l’heure dans propriété de la map et changer dimensions par 20 x 15, cet à dire au minimum.

Pratiquer: Pratiquer vous en assaillant de faire cet map.

Sauvegarder: N'oublier pas de toujours sauvegarder votre projet à l'aide du bouton Save (5)

Title Layer 2: Nous en somme rendu à décorer notre environnement.

Comment: Pour faire des décors, il faut cliquer sur le bouton Title Layer 2 (8). Si vous connaissez pas vos bouton, retourné voir le chapitre I.

Dessiner: Reprenez votre map et continuer la, mais dans Title Layer 2 pour rajouter les décor. Fait comme ce qui suit.

Remarque: Comme vous pouvez le remarquer, les couleurs deviennent foncées et ce que vous rajouter reste de couleurs vive. C’est tout simplement pour savoir qu’est ce qui sert a quoi.

Event Layer: Si vous cliquer sur le bouton Event Layer (9) vous remarquerais que les couleurs de Title Laey 1 et 2 reste tout les deux de couleurs vive et que la map vient quadriller.

Programmation : La programmation c’est les Event. Pour faire un Event, il faut cliquer à l’aide du bouton droit de la souris sur la map et cliquer New Event. N’oublier pas que vous devers absolument être dans le mode Event Layer 1 pour faire des événements.

Que pouvons nous faire ? : Avec les Event on peut faire des personnes, objet, pluies, neige, combats, musique, son mouvement, message, images, le textes, cinématique etc., dans le fon tout pour que un jeu fonctionne.

Sauvegarder: Noublier jamais de sauvegarder !!! Bouton (5) Save ou CTRL+S...render vous au chapitre 3

Les couleurs:
- Jaune: manipulations
- vert: mots important ( bouton / dossier / répertoire / étapes )
- vert: à retenir absolument
- bleu: sous-titre
- bleu: sujet
-rouge: à ne pas confondre

Chapitre III

Ce qui s'y trouve :
- Jouer
- Héros
- Titre

Jouer: Pour jouer, (tester) votre jeu, il faut premièrement savoir ou commencer.

Début: Rester dans le mode Event Layer et cliquer sur la map à l’aide du bouton droit et cliquer Place Party Starting Position. Ce qui défini l’endroit que votre héro commence ou votre histoire, car on peut faire une cinématique au début du jeu avant de voir le héro. On verra la cinématique plus tard.

Tester: Tester maintenat le jeu en cliquant sur le bouton Test your game (18) ou F9. S’il vous demande de sauvegarde dite oui. Les boutons principal du jeu son : ENTER, Flèches, Z, X, Esc.

Héros: Nous allons faire nos héros et un événement pour rencontrer un personnage et pour qu’il deviens dans notre équipe. Comme sa dans les combats tu sera 2 à la place de 1.

Création des héros: Pour faire la création des vos héros, il faut aller dans le Data (14), F8. Puis vous arriveriez directement dans la section Hero. Qui est fait pour configurer vos héros. Comme vous le remarquer, il a beaucoup de chose qu’on peut cliquer, alors allez s’y avec la logique des choses.

1- Cliquer Arry Size, en bas à gauche pour choisir le nombre de héros. Commencer par mettre 2.

2- Configurer à votre guise, par exemple, le nom, l'image de la face du héro, le héro lui même ses armes, ses forces, son level etc. Noter bien qu'il serait illogique de mettre votre héro au level 99, à son plus fort, car ici on parle de jeu RPG, ce qui défini que le héro doit commencer a niveau (level) bas et monter le long du jeu. Noter aussi que rendu a moitié du jeu, les nouveaux héro devrait commencer au moins plus haut que 1. Dépendant la ou vous êtes rendu.

Le grand OK: À la fin, il faut tout simplement cliquer OK.

Event du héro: Fait un Event à l’endroit que vous voulez qu’un Héro y soit pour qu’il devienne dans votre équipe. Si vous ne savez pas encor comment faire un Event, il serait temps de l’apprendre, alors va dans le chapitre II. À fur et à mesure que le tutorial avance, vous allez en apprendre de plus en plus sur les Events.

Change Party: Assurer vous que l’image soit l’image tout rose, qui défini transparent. Et que le Trigger Condition, qui est la condition pour que l’envent fonctionne, mettez le à Same Layer as Hero, qui veut dire, la même hauteur que le héro. Noter bien que Below Hero ses en dessous du héro, cet à dire la même hauteur que le plancher, et que Above Hero est au dessus le héro. Ensuite Double Clic Gauche sur le grand espace blanc (l’endroit de la programmation) pour aller dans la page 1 et cliquer Change Party. Prenez comme Operation, Add Member et le target, prenez votre deuxième héro. Puis cliquer OK jusqu’à ce que vous arriver Au début.

L'image du héro: Le héro étant fait, cliquer sur votre Event et changer l’image Rose par l’image du héro 2. Puis cliquer OK.

Titre: Avant de tester nous allons faire une dernière chose, changer les configurations du System.

1- Allez encore dans Data (14) F8, puis allez dans la section System.

2- Maintenant il a les Vehicles, pour changer vos moyens de transport du jeu. Title Screen, pour l’image quand vous entrer dans le jeu, changer le par un autre. Game Over Screen, changer l’image qui apparaît quand vous être mort. Starting Party, se sont les héro qui son la au tout début, alors mettez les tous à NONE et laisser juste le Fist Member qui est votre héro de départ.

3- System BGM, se sont les musiques qui joue pendant le jeu, au certain événement, comme le Victory, qui est mi a chaque foi que tu gagner, vous pouvez aussi les modifier à votre guise. Puis System Sound Effects, ses la même chose que BGM, mais pour les sons.

4- En bas il a 2 section, section graphique et section téléport. La section graphique (Graphic) est le style de graphique des fenêtres du jeu. La section téléport (transitions) est pour savoir comment les changements de map se fait, ou les combats etc. Pour être plus claire sur les Transitions, Quand vous aller par exemple entrer dans une maison, il doit y avoir un façon de le montrer, comme un Zoom, l’image vient noir, un mouvement par la droite etc.

5- Le System 2 est que pour si vous voulez modifier le menu qui apparaît lorsque vous peser ESC pendant le jeu, ou pour changer le graphique.

Test et Save: Sauvegarder votre projet puis tester le, vous remarquerais vos changement de BGM, Titre et de votre Héro, mais pas de différence vraiment, Dans le chapitre 4 vous allez plus entrer dans des petit perfection et modification, plus intéressante.

Les couleurs:
- Jaune: manipulations
- vert: mots important ( bouton / dossier / répertoire / étapes )
- vert: à retenir absolument
- bleu: sous-titre
- bleu: sujet
-rouge: à ne pas confondre

Chapitre IV

Ce qui s'y trouve :
-Musique BGM
-Son
-Message

Musique BGM: Pendant votre jeu, vous pouvez faire jouer des musique, qui son appeler dans ce programme BGM.

BGM Map: Une des façons, la plus simple et la plus utiliser, c’est de cliquer la propriété de la map ou tu veut que t’elle ou t’elle BGM y joue et en bas dans section BGM met specify et choisi le BGM de ton choix, alors pendant que vous aller jouer, dans cet pas il va avoir la musique que tu a choisi.

BGM Event: L’autre façon c’est de créer un Event et dans l’espace blanc, double clic, et choisi dans la 3ème page Play BGM, mais je vous conseille la 1ère façon qui est BGM Map.

Son: Pour les son, il à pas grand chose à savoir, mais il son très utile, pour quand votre héro trouve un Item, brise un objet, dans la cinématique, etc.

Sound Effect: Le son se fait de la 2ème façon du BGM s’y dessus. Cet à dire de créer un Event et dans l’espace blanc, double clic, et choisi dans la 3ème page Play Sound Effect.

Message: Maintenant vous allez apprendre un événement très important, qui est les message, cet à dire le texte.

Event MSG: Pour commencer éditer votre Event déjà fait du héro 2 et fait double clic à droite dans section blanche, n’oublier pas que tout les événement dans un Event son li en ordre, de haut en bas. Ensuite cliquer dans la 1ère page, Face graphics. Puis choisissez la face du héro 2. Ce qui fait que lorsque le message va apparaître, il va avoir l’image du héro afficher a droite ou a gauche etc., dépendant la façon que vous configurer le Face Graphics. Et puis maintenant fait encore double clic sur la section blanche et prenez dans la 1ère page Message. Écrivez ce que le héro va dire…. Comme par exemple… Salut !!! Attention, vous ne devez dépasser les pointillers a droite. Alors si votre texte est trop long, vous faite plus qu’un message.

Différence: Quand vous faite parler un autre personne, comme vous-même, vous devez faire un nouveaux Face Graphics pour que le message démontre bien qui le dit grâce à l’image du Visage.

Save + Test: Sauvegarder comme d'habitude puis tester le, vous remarquerais que le héro dit quelque chose maintenant. Mais remarquer aussi qu'il dit toujours la même chose et sa viens fatigant, alors dans le chapitre 5 on va en voir de toutes les couleurs.

Les couleurs:
- Jaune: manipulations
- vert: mots important ( bouton / dossier / répertoire / étapes )
- vert: à retenir absolument
- bleu: sous-titre
- bleu: sujet
-rouge: à ne pas confondre

Chapitre V

Ce qui s'y trouve :
-Switch Operation
-Le Coffre
-Map / Name / Téléports

Switch Operation:Les Switchs son un événement très importants… il vous serviront beaucoup, vous aller voir.

C'est quoi vraiment ?: Les Switchs, ses comme des déclencheurs à des nouvelle événement. Par exemple, vous faite parler une personne qui dit au feu. Mais vous voulez que après avoir dit sa, la personne dit autre chose comme Bonjours. Sans que la 1ère phrase revienne. Nous allons utiliser cet technique pour notre Event Héro 2. Qui est supposé d’être la seul Event que tu as.

Attention: N’oublier pas que si vous faite un Event avec Auto START comme déclencheur, vous êtes automatiquement obliger de utiliser les switchs pour que l’évent finis un jours, car si vous faite Auto START sur une personne qui dit bonjour, et bien il va le dire sans arrêter et votre jeu va complètement buger.

Héro 2: Éditer votre Event du Héro 2 et fait double clic sur la parti blanche. Ensuite Cliquer Switch Operation. Le Switch to Change, je vous conseille Single Switch puis cliquer sur les 3 petits poins a droite. Vous arriverais à une nouvelle fenêtre encore mais celle s’y il va falloir comprendre à 100% à quoi sa sert. Elle sert à inventer vos Switch, à gauche se situe les pages et a droite ce qui a dans la page. Cliquer le 0001 : et en bas changer le nom par un nom qui va vous dire quelque chose d’après ce que tu veut que la switch serve, dans notre cas je vous demande de l’appeler hero 2. Puis cliquer OK une fois. Nous sommes de retour à la 1ère fenêtre de Switch Operation. Juste en bas il a justement Operation, ce si vous dit si sa va activer ou désactiver la swicth ou même par choix, comme éteindre et allumer une lumière. Nous allons choisir Turn ON. Puis cliquer à nouveau OK.

Héro 2 suite: Vous avez compris comment faire une switch, mais il est pas encor au poins, cliquer en haut sur New Page. Une nouvelle page apparaît. Vous devez être dans la 2ème page automatiquement. À gauche en haut il a Preconditions. Qui veut dire les condition pour que cette page ( 2ème page ) part a fonctionner, nous allons cliquer sur le carré du premier switch. Et bien soyer sur que sa soit écrit hero 2, sinon cliquer sur les 3 petits poins et prenez hero 2. Si on li de gauche a droite sa fait :

-Switch 0001 :hero 2 is ON. Alors comme sa se dit, si la switch 0001 : hero 2 est mis à ON, Cette page #2 vas s’activer. Voila à quoi sert les switchs. Cliquer maintenant OK.

Save + Test: Sauvegarder maintenant, je vais arrêter de vous dirent comme car vous devez le savoir après plusieurs chapitres. Puis tester le. Vous allez remarquer que maintenant le héro ne parle pas plus qu’une foi, il vous dit ''salut !!!'' mais rien d’autre, ses grâce à la switch que il dit plus ce qui est avant. Alors vous comprenez vite que des qu’une page s’active, les autres avant son inutile et sont mi à OFF, sauf si vous créer une switch et vous mettez OFF à la place de ON.

Le coffre: C’est bien de faire des switchs, mais est-ce qu’il s des chose plus intéressante à faire ?

l'event du coffre: Créer un New Event à l’endroit que tu désir avoir un coffre, et que la face tu coffre est en bas.

Page 1: Dans la page 1, changer l’image par Object 1 le coffre rouge puis cliquer OK. Et mettez le Trigger Condition à Action key. Fait double clic sur la partie blanche et allez dans la 2ème page et prenez Wait. Mettez le nombre à 2 à la place de 10. puis fait OK. Ensuite faite un autre double clic sur la partie blanche et prenez dans la 1ère page Switch Operation, met le à ON et changer la switch en cliquant sur les 3 petit poins et prenez 0002 : et mettez comme nom : coffre1. Puis cliquer New Page.

Page 2: Dans Preconditions, meter la switch coffre1. Puis éditez l’image du coffre rouge pour mettre le Facing à right. Le coffre à l’aire à souvrir. Fait un Wait dans la partie blanche. Il devrait avoir encore le chiffre 2 écrit, puis cliquer OK. Fait une Switch à ON nommée coffre2. Puis faite New Page.

Page 3: Dans Preconditions, meter la switch coffre2. Puis éditez l’image du coffre rouge pour mettre le Facing à up. Le coffre à l’aire à souvrir encore plus. Fait un Wait dans la partie blanche. Il devrait avoir encore le chiffre 2 écrit, puis cliquer OK. Fait une Switch à ON nommée coffre3. Puis faite New Page.

Page 4: Dans Preconditions, mettez la switch coffre3. Puis éditez l’image du coffre rouge pour mettre le Facing à left. Le coffre à l’aire d’être complètement ouvert. Fait un Wait dans la partie blanche. Il devrait avoir encore le chiffre 2 écrit, puis cliquer OK. Maintenant on a fait ouvrir un coffre en utilisant des switchs. À partir de maintenant, à la place de dire double clic sur la partie blanche, je vais te dire de faire un évènement. Alors fait un évènement et prenez dans 3ème page Play Sound Effect. Une fenêtre de son apparaît, alors prenez le son Item 1. Puis cliquer OK. Apres fait un autre évènement, prenez dans 1ère page Message et écrivez 100$. Puis fait OK. Et puis fait encore un évènement et prenez Change Money, mettez 100 à la place de 1 et laisser le reste par défaut puis cliquer OK. Pour finir fait un évènement Switch Operation, ON, nommé le coffre4. Fait une nouvelle page (New Page).

Page 5: Dans Preconditions, mettez la switch coffre4.

Save + Test: Sauvegarder et Tester. Vous pouvez remarquer que le coffre s’ouvre et un son montre l’arriver d’une nouvelle chose avec un texte qui te dit que tu a ramasser 100$. Et si tu clic dessus sa fait absolument rien. Pour vérifier ou son ton argent, regarder dans le menu en cliquant ESC.

Map / Name / Téléports: Pour finir le chapitre 5, on vas tout simplement arranger un petit détaille important.

Properties: Faire propriété sur la map et changer en haut le nom de la map par Maison. Nommé tout vos map, comme sa risque de pas vous mélanger pour les téléports.

Nouvelle map: Fait une nouvelle map en cliquant à l’endroit des map avec le bouton droit de la souris puis New Map. La fenêtre de propriété apparaît. Mettez comme nom Grenier et comme Title Set, inside. Puis cliquer OK.

Fait en de ça:

Téléports: Un teleport te sert à faire passer ton héro d’une map à l’autre. Allez sur la map Maison. Fait un Évent en haut de l’escalier au milieu. Puis éditer le pour mettre comme image, le ROSE. Et le Trigger Condition, mettez le à Touched by Hero puis le Event Layer, fait qu’il soit Below Hero. Comme sa des que le héro le touche en marchant dessus il va s’activer. Fait un évènement et aller à la 2ème page, puis cliquer Teleport. Une fenêtre apparaît et vous demande ou le héro va se téléporter, dans notre cas aller dans la map Grenier et metter le juste en haut de l’escalier, au milieu, pas accoter sur le mur, mais à 2 case vert le haut.

Téléports suite: Refait un Event en dessus de l’endroit que le héro se téléport dans la map Grenier et fait en un téléport comme avant, mais celui s’y doit ce téléporter dans la map Maison en dessous de l’autre Event dans l’escalier.

Save + Test: Sauvegarder puis Tester votre merveille. Maintenat que tout sa est fait, vous pouvez voyager de la map Maison à la Map Grenier.

CHAPITRE 6: Le chapitre 6 n'est nullement commencé, alors utilisez les tutoriaux pour RPG Maker XP, ceux sur les switchs, les variable, et d'autre, revien à la même méthode.

Publicité
Publicité
1 2 > >>
Publicité