Skill por categoria
5 participantes
Brasil G4mes :: Scripts :: Scripts RGSS1
Página 1 de 1
Skill por categoria
KGC Skill Group
Criado por: KGC
Conteúdo retirado de: http://www.dungeonmakers.com.br/forum/index.php?topic=3132.0
Introdução
Este script separa as skills por catagorias. Skills Brancas, negras de dano físico e etc. Isto torna as habilidades muito mais organizadas.
Screenshot
Código
- Spoiler:
- Código:
##################################################################
#####################Script criado por KGC########################
##################################################################
#O script permite que a janela de habilidade separe cada habilidade
#pelo seu atributo, deixando assim mais organizado
#==============================================================================
$game_special_elements = {}
$imported = {}
$data_states = load_data("Data/States.rxdata")
$data_system = load_data("Data/System.rxdata")
module KGC
######JANELA DE HABILIDADE NO MAPA###########################
# Defina aqui os nomes dos atributos, eles devem ser iguais ao do
#do database.
SG_ELEMENTS = ["Branca", "Negra", "Blade Art", "Limit Break", 0]
# Defina aqui os nomes que irão aparecer na janela de habilidade,
#este nomes não precisam ser necessariamente iguais ao do atributo
SG_NAME = ["Branca", "Negra", "Blade Art", "Limit Break", "Todas"]
# A explicação que ira aparecer na janela de Ajuda.
SG_HELP = ["Magia de Suporte",
"Magia de Ataque",
"Arte da lamina",
"Só é acessível quando barra estiver completa",
"Todas as habilidades"]
#######JANELA DE HABILIDADE DA CENA DE BATALHA####################
# Defina aqui os nomes dos atributos, eles devem ser iguais ao do
#do database.
SG_ELEMENTS_BATTLE = ["Branca", "Negra", "Blade Art", "Limit Break", 0]
# Defina aqui os nomes que irão aparecer na janela de habilidade,
#este nomes não precisam ser necessariamente iguais ao do atributo
SG_NAME_BATTLE = ["Branca", "Negra", "Blade Art", "Limit Break", "Todas"]
# A explicação que ira aparecer na janela de Ajuda.
SG_HELP_BATTLE = ["Magia de Suporte",
"Magia de Ataque",
"Arte da lamina",
"Só é acessível quando barra estiver completa",
"Todas as habilidades"]
end
####################################################################
$imported["SkillGrouping"] = true
module KGC
# 分類配列作成
SKILL_GROUP = []; SG_BATTLE = []
# 非戦闘用属性取得
for i in 0...SG_ELEMENTS.size
# 0(全種)の場合
if SG_ELEMENTS[i] == 0
SKILL_GROUP[i] = 0
next
end
# ハッシュのキーを設定
key = "skill_group_#{i}}"
# 属性ID取得
$game_special_elements[key] = $data_system.elements.index(SG_ELEMENTS[i])
SKILL_GROUP[i] = $game_special_elements[key]
end
# 戦闘用属性取得
for i in 0...SG_ELEMENTS_BATTLE.size
if SG_ELEMENTS_BATTLE[i] == 0
SG_BATTLE[i] = 0
next
end
key = "skill_group_battle_#{i}}"
$game_special_elements[key] = $data_system.elements.index(SG_ELEMENTS_BATTLE[i])
SG_BATTLE[i] = $game_special_elements[key]
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# actor : アクター
#--------------------------------------------------------------------------
alias initialize_KGC_SkillGrouping initialize
def initialize(actor)
@group = $game_temp.in_battle ? KGC::SG_BATTLE : KGC::SKILL_GROUP
# 元の処理を実行
initialize_KGC_SkillGrouping(actor)
# 非戦闘中の場合
unless $game_temp.in_battle
self.y += 64
self.height -= 64
end
self.index = -1
# アクティブ化解除
self.active = false
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(skillkind = 0)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 「全種」ではない場合
if @group[skillkind] != 0
for i in 0...@actor.skills.size
# 対応属性を持っている場合
if $data_skills[@actor.skills[i]].element_set.include?(@group[skillkind])
@data.push($data_skills[@actor.skills[i]])
end
end
else
# 全スキルを追加
for i in 0...@actor.skills.size
@data.push($data_skills[@actor.skills[i]])
end
end
# 項目数が 0 でなければビットマップを作成し、全項目を描画
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_SkillGroup
#------------------------------------------------------------------------------
# スキル画面で、種類を選択するウィンドウです。
#==============================================================================
class Window_SkillGroup < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
# コマンド一覧を作成
@commands = []
for name in ($game_temp.in_battle ? KGC::SG_NAME_BATTLE : KGC::SG_NAME)
@commands.push(name)
end
@item_max = @commands.size
@column_max = @commands.size
@item_width = (width - 32) / @commands.size
self.index = 0
# 戦闘中
if $game_temp.in_battle
@help_text = KGC::SG_HELP_BATTLE
# ウィンドウ位置を調整
self.y = 0 unless $imported["HelpExtension"]
else
@help_text = KGC::SG_HELP
end
self.z = 2000
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
for i in 0...@commands.size
rect = Rect.new(@item_width * i, 0, @item_width, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.color = system_color
self.contents.draw_text(rect, @commands[i], 1)
end
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
if index != -1
self.cursor_rect.set(@item_width * index, 0, @item_width, 32)
end
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(@help_text[self.index])
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Skill
#==============================================================================
class Scene_Skill
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
alias main_KGC_SkillGrouping main
def main
# 分類ウィンドウ作成
@group_window = Window_SkillGroup.new
if $imported["MenuAlter"] && KGC::MA_MENU_TRANSPARENT
@group_window.back_opacity = 160
end
@group_window.y = 64
main_KGC_SkillGrouping
@group_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを初期化していない場合
unless @window_initialize
# 各種ウィンドウ調整
@status_window.y = 128
@target_window.z = 2100
# ヘルプウィンドウを関連付け
@group_window.help_window = @help_window
if $imported["MenuAlter"] && KGC::MA_MENU_TRANSPARENT
@help_window.back_opacity = 160
end
# 初期化フラグをオン
@window_initialize = true
end
# ウィンドウを更新
@help_window.update
@status_window.update
@skill_window.update
@target_window.update
@group_window.update
# スキルウィンドウがアクティブの場合: update_skill を呼ぶ
if @skill_window.active
update_skill
return
end
# ターゲットウィンドウがアクティブの場合: update_target を呼ぶ
if @target_window.active
update_target
return
end
# 分類ウィンドウがアクティブの場合: update_group を呼ぶ
if @group_window.active
update_group
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (スキルウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
alias update_skill_KGC_SkillGrouping update_skill
def update_skill
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 分類ウィンドウをアクティブ化
@group_window.active = true
@group_window.visible = true
@skill_window.active = false
@skill_window.index = -1
return
end
# 元の処理を実行
update_skill_KGC_SkillGrouping
end
#--------------------------------------------------------------------------
# ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_target
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# ターゲットウィンドウを消去
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# SP 切れなどで使用できなくなった場合
unless @actor.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# ターゲットが全体の場合
if @target_window.index == -1
# パーティ全体にスキルの使用効果を適用
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# ターゲットが使用者の場合
if @target_window.index <= -2
# ターゲットのアクターにスキルの使用効果を適用
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# ターゲットが単体の場合
if @target_window.index >= 0
# ターゲットのアクターにスキルの使用効果を適用
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
# スキルを使った場合
if used
# スキルの使用時 SE を演奏
$game_system.se_play(@skill.menu_se)
# SP 消費
if $imported["SPCostAlter"]
use_sp
else
@actor.sp -= @skill.sp_cost
end
# 各ウィンドウの内容を再作成
@status_window.refresh
@skill_window.refresh(@group_window.index)
@target_window.refresh
# 全滅の場合
if $game_party.all_dead?
# ゲームオーバー画面に切り替え
$scene = Scene_Gameover.new
return
end
# コモンイベント ID が有効の場合
if @skill.common_event_id > 0
# コモンイベント呼び出し予約
$game_temp.common_event_id = @skill.common_event_id
# マップ画面に切り替え
$scene = Scene_Map.new
return
end
# スキルを使わなかった場合
else
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (分類ウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_group
if @now_skillkind != @group_window.index
# カーソル位置によって表示するスキルの分類を分ける
@skill_window.refresh(@group_window.index)
@skill_window.top_row = 0
@now_skillkind = @group_window.index
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# メニュー画面に切り替え
if $imported["MenuAlter"]
index = KGC::MA_COMMANDS.index(1)
if index != nil
$scene = Scene_Menu.new(index)
else
$scene = Scene_Menu.new
end
else
$scene = Scene_Menu.new(1)
end
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# スキルウィンドウをアクティブ化
@skill_window.active = true
@skill_window.index = 0
@group_window.active = false
@group_window.visible = false if $imported["HelpExtension"]
return
end
# R ボタンが押された場合
if Input.trigger?(Input::R)
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# 次のアクターへ
@actor_index += 1
@actor_index %= $game_party.actors.size
# 別のスキル画面に切り替え
$scene = Scene_Skill.new(@actor_index)
return
end
# L ボタンが押された場合
if Input.trigger?(Input::L)
# カーソル SE を演奏
$game_system.se_play($data_system.cursor_se)
# 前のアクターへ
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 別のスキル画面に切り替え
$scene = Scene_Skill.new(@actor_index)
return
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle (分割定義 3)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● フレーム更新 (アクターコマンドフェーズ : スキル選択)
#--------------------------------------------------------------------------
def update_phase3_skill_select
# スキルウィンドウを可視状態にする
@skill_window.visible = true
# 種類選択中の場合、分類ウィンドウを表示
if @skill_group_select
@help_window.visible = false unless $imported["HelpExtension"]
@skill_window.active = false
@skill_group_window.visible = true
@skill_group_window.active = true
# スキル選択中の場合は逆
else
@help_window.visible = true unless $imported["HelpExtension"]
@skill_window.active = true
@skill_group_window.visible = false
@skill_group_window.active = false
end
# スキルウィンドウを更新
@skill_window.update
# スキル分類ウィンドウを更新
@skill_group_window.update
if @now_skillkind != @skill_group_window.index
# カーソル位置によって表示するスキルの分類を分ける
@skill_window.refresh(@skill_group_window.index)
@skill_window.top_row = 0
@now_skillkind = @skill_group_window.index
end
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
# 種類選択中の場合
if @skill_group_select
# スキルの選択を終了
end_skill_select
else
# 分類ウィンドウに切り替え
@skill_group_select = true
@skill_window.index = -1
end
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 種類選択中の場合
if @skill_group_select
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# 種類選択終了
@skill_group_select = false
@skill_window.index = 0
else
# スキルウィンドウで現在選択されているデータを取得
@skill = @skill_window.skill
# 使用できない場合
if @skill == nil || !@active_battler.skill_can_use?(@skill.id)
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# ヘルプウィンドウを隠す
if @help_window2 != nil
@help_window2.visible = false
else
@help_window.visible = false
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
# アクションを設定
@active_battler.current_action.skill_id = @skill.id
# スキルウィンドウを不可視状態にする
@skill_window.visible = false
# 効果範囲が敵単体の場合
if @skill.scope == 1
# エネミーの選択を開始
start_enemy_select
# 効果範囲が味方単体の場合
elsif @skill.scope == 3 or @skill.scope == 5
# アクターの選択を開始
start_actor_select
# 効果範囲が単体ではない場合
else
# スキルの選択を終了
end_skill_select
# 次のアクターのコマンド入力へ
phase3_next_actor
end
end
return
end
end
#--------------------------------------------------------------------------
# ● スキル選択開始
#--------------------------------------------------------------------------
alias start_skill_select_KGC_SkillGrouping start_skill_select
def start_skill_select
# 元の処理を実行
start_skill_select_KGC_SkillGrouping
# スキル分類ウィンドウを作成
@skill_group_window = Window_SkillGroup.new
@skill_group_window.back_opacity = 160
@skill_group_window.y = @help_window2 != nil ? 64 : 0
# 種類選択中フラグを立てる
@skill_group_select = true
# スキルの分類を初期化
@now_skillkind = nil
# ヘルプウィンドウを関連付け
if @help_window2 != nil
@skill_group_window.help_window = @help_window2
elsif $imported["HelpExtension"]
@skill_group_window.help_window = @help_window
end
end
#--------------------------------------------------------------------------
# ● スキル選択終了
#--------------------------------------------------------------------------
alias end_skill_select_KGC_SkillGrouping end_skill_select
def end_skill_select
# 元の処理を実行
end_skill_select_KGC_SkillGrouping
# スキル分類ウィンドウを解放
@skill_group_window.dispose
@skill_group_window = nil
end
end
Configuração
No ínicio do script tem todas as esplicações.
Re: Skill por categoria
Muito legal em mano!
vou testar o script agora msm!
FLW!
Vlw por postra no MM, +rep!
vou testar o script agora msm!
FLW!
Vlw por postra no MM, +rep!
Alisson bad- Membro
- Mensagens : 373
Fama : 12
Re: Skill por categoria
Nuss, igualzim a um final fantasy que joguei de Snes. Acho que é o dois ou três, nem lembro mais.
Deixa mesmo organizado e é facil com certeza. Sem falar que deixa o jogo mais profissional.
+rep
Deixa mesmo organizado e é facil com certeza. Sem falar que deixa o jogo mais profissional.
+rep
Brasil G4mes :: Scripts :: Scripts RGSS1
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos