Zenzokuken
Youtube Master Race
- 29/8/05
- 32
- 0
Em có cái script này, làm cho nó lên được rồi mà chưa biết cái dùng, ai biết giúp em với nha.
Trước hết là khuôn mặt :
#--------------------------------------------------------------------------
# Define Faces
#--------------------------------------------------------------------------
def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(3, -1, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
Còn đây là Window skill
#==============================================================================
# ■ Window_Skill
#------------------------------------------------------------------------------
# スキル画面、バトル画面で、使用できるスキルの一覧を衼br />¨示するウィンドウです。
#==============================================================================
class Window_Skills < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# actor : アクター
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 75, 290, 405)
@actor = actor
@column_max = 1
refresh
self.index = 0
# 戦闘中の場合はウィンドウを画面中央へ移動し、半透明にぼbr />る
if $game_temp.in_battle
self.x = 200
self.y = 225
self.height = 256
self.width = 440
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● スキルの取得
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills]
if skill != nil
@data.push(skill)
end
end
# 項目数が 0 でなければビットマップを作成し、全項目を描画
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
end
Làm 1 script mới dưới Scene skill rồi paste cái này vào
#---------------------------------------------------------------------
#Equipment for summon-------------------------------------------------
#by olamide bakre
#Scene_EquipSummon
#help window
class Window_Descri < Window_Base
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
end
def set_text(text, align = 1)
if text != @text or align != @align
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#end of text box
#text box
class Window_TextSummon < Window_Selectable
def initialize
super(0, 0, 290, 76)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_text(4, 0, 120,32, "Summons List")
testing = Time.now.strftime("%a %b %e %H:%M:%S %Y\n")
end
end
#Equipment list
class Window_ListSummon < Window_Skills
def initialize(actor, element_id)
@element_id = element_id
super(actor)
end
#define item max
#def summon
# return @data[self.index]
# end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
#loop
for i in [email protected]
skill = $data_skills[@actor.skills]
if skill != nil and skill.element_set.include?(@element_id)
@data.push(skill)
end
end
#item max is set to a value and called as a function
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
for i in 0...@item_max
draw_item(i)
end
end
end
#end of function
#beginning of object
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = normal_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
#self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# ● update help text
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
end
#end of draw object
#summon mixtured with weapon
class Window_WeaponSummon < Window_Selectable
def initialize(actor)
super(290, 0, 350, 210)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● return item index
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4)
draw_item_name(@data[0], 92, 32 * 0)
draw_item_name(@data[1], 92, 32 * 1)
draw_item_name(@data[2], 92, 32 * 2)
draw_item_name(@data[3], 92, 32 * 3)
draw_item_name(@data[4], 92, 32 * 4)
#self.contents.draw_text(260, 5, 160, 32, "Atk up".to_s)
end
#--------------------------------------------------------------------------
# ● update help
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#character equip with summon
class Window_CharSummon < Window_Selectable
def initialize
super(290, 210, 350, 270)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
actor = $game_party.actors[0]
draw_actor_face(actor, 189, 250 )
draw_actor_name(actor, 4, 120)
draw_actor_level(actor, 4, 140)
self.contents.draw_text(4, 170, 150, 32, "Class:")
draw_actor_class(actor, 65, 170)
self.contents.draw_text(4, 200, 150, 32, "Element:")
if $ELEMENT_VAR == 0
$ELEMENT_VAR = "none"
end
self.contents.draw_text(85, 200, 150, 32, $ELEMENT_VAR.to_s)
#define Empty
#$EQUIP_SLOT1 = 0
if $EQUIP_SLOT1 == 0
$EQUIP_SLOT1 = "-----------------------------Empty-------------------------"
$EQUIP_SLOT2 = "-----------------------------Empty-------------------------"
$EQUIP_SLOT3 = "-----------------------------Empty-------------------------"
$EQUIP_SLOT4 = "-----------------------------Empty-------------------------"
end
self.contents.font.color = system_color
self.contents.draw_text(4, 2, 600, 32, $EQUIP_SLOT1.to_s )
self.contents.draw_text(4, 35, 600, 32, $EQUIP_SLOT2.to_s)
self.contents.draw_text(4, 65, 600, 32, $EQUIP_SLOT3.to_s)
self.contents.draw_text(4, 95, 600, 32, $EQUIP_SLOT4.to_s)
#end
end
end
#end
class Scene_EquipSummon < Scene_Skill
$EQUIP_SLOT1 = 0
#initialize object
def initialize(menu_index = 0, char_index = 0)
@menu_index = menu_index
@char_index = char_index
end
def main
#selection window
s1 = "Equip"
s2 = "Class Change"
s3 = "Return"
@option = Window_Command.new(150, [s1, s2, s3])
@option.index = @menu_index
$icon
#class selection window
@select = Window_Command.new(150, ["Equip", "Remove"])
@select.index = @menu_index
@select.z = 0
@select.x = 150
@select.y = 190
@select.visible = false
@select.active = false
#class selection window ends
#confirm
@confirm_window = Window_Base.new(135, 188, 400, 64)
@confirm_window.contents = Bitmap.new(368, 32)
@confirm_window.contents.font.name = $fontface
@confirm_window.contents.font.size = $fontsize
@confirm_window.contents.draw_text(4, 0, 500, 32,"What do you want to do?")
#confirm
@item_max = $game_party.actors.size
@actor = $game_party.actors[0]
@info = Window_TextSummon.new
@list = Window_ListSummon.new(@actor, @element_id = 18)
@help_window = Window_Descri.new
@help_window.visible = false
@wepon = Window_WeaponSummon.new(@actor)
@wepon.active = false
@char = Window_CharSummon.new
@confirm_window.visible = false
@confirm_window.z = 1500
@option.visible = false
@option.active = false
@option.x = 270
@option.y = 252
@option.z = 1500
#end of window
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@option.dispose
@confirm_window.dispose
@info.dispose
@list.dispose
@wepon.dispose
@char.dispose
@select.dispose
@help_window.dispose
end
#begin
def update
@select.update
@option.update
@info.update
@list.update
@wepon.update
@char.update
@help_window.update
if @option.active
option_update
return
end
if @list.active
list_update
return
end
if @wepon.active
wepon_update
return
end
if @char.active
char_update
return
end
if @select.active
select_update
return
end
end
#end of update
def draw_icon(x, y)
skills = @data[@list.index]
$icon = Sprite.new
$icon.bitmap = RPG::Cache.icon(skills)
$icon.z = 255
$icon.y = y
$icon.x = x
end
#define end selection
def select_update
@select.active
if Input.trigger?(Input::B)
@select.z = 0
@select.x = 145
@select.y = 150
@select.visible = false
@select.active = false
@char.active = true
end
actor = $game_party.actors[0]
if Input.trigger?(Input::C)
case @select.index
when 0
$game_system.se_play($data_system.decision_se)
if @char.index == 0
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
@char.refresh
$EQUIP_SLOT1 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
elsif @char.index == 1
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
$EQUIP_SLOT2 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
elsif @char.index == 2
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
@element_id = @list.index
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
$EQUIP_SLOT3 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
elsif @char.index == 3
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
$EQUIP_SLOT4 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
end
@char.refresh
@select.z = 0
@select.x = 145
@select.y = 150
@select.visible = false
@select.active = false
@char.active = true
when 1
$game_system.se_play($data_system.buzzer_se)
if @char.index == 0
$ELEMENT_VAR = 0
if $EQUIP_SLOT1 == "-----------------------------Empty-------------------------"
$game_system.se_play($data_system.buzzer_se)
else
if $data_classes[2].name == "SwordMan"
testing = actor.class_id = 1
@char.refresh
end
$EQUIP_SLOT1 = "-----------------------------Empty-------------------------"
@actor.learn_skill(0)
@list.refresh
end
elsif @char.index == 1
$ELEMENT_VAR = 0
$EQUIP_SLOT2 = "-----------------------------Empty-------------------------"
@char.refresh
elsif @char.index == 2
$ELEMENT_VAR = 0
$EQUIP_SLOT3 = "-----------------------------Empty-------------------------"
@char.refresh
elsif @char.index == 3
$ELEMENT_VAR = 0
$EQUIP_SLOT4 = "-----------------------------Empty-------------------------"
@char.refresh
end
@char.refresh
@select.z = 200
@select.x = 145
@select.y = 150
@select.visible = true
@select.active = true
@char.active = false
return
end
end
end
#end of selection
#update class change
def char_update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
#Graphics.update
@select.z = 200
@select.x = 145
@select.y = 150
@select.visible = true
@select.active = true
@char.active = false
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@char.index = -1
@char.active = false
@list.active = true
end
end
#update weapon equip
def wepon_update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@wepon.active = false
@wepon.index = -1
@list.active = true
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
case @wepon.index
when 0
$data_weapons[$data_actors[1].weapon_id].atk += 20
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@wepon.refresh
@list.refresh
when 1
$data_armors[$data_actors[1].armor1_id].mdef += 20
@wepon.refresh
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
when 2
$data_armors[$data_actors[1].armor2_id].pdef += 20
@wepon.refresh
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
when 3
$data_armors[$data_actors[1].armor3_id].pdef += 20
@wepon.refresh
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
end
end
end
#update skill list
def list_update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
skill_id = @actor.skills.size
if Input.trigger?(Input::C)
if $skill_equip.include?(@data[@list.index])
$game_system.se_play($data_system.buzzer_se)
else
if @actor.skill_learn?(skill_id)
$game_system.se_play($data_system.decision_se)
@confirm_window.visible = true
@confirm_window.z = 1500
@option.visible = true
@option.active = true
@option.x = 270
@option.y = 252
@option.z = 1500
@list.active = false
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
end
def option_update
#input
if Input.trigger?(Input::B)
then
$game_system.se_play($data_system.cancel_se)
@confirm_window.visible = false
@confirm_window.z = 1500
@option.visible = false
@option.active = false
@option.x = 270
@option.y = 252
@option.z = 1500
@list.active = true
return
end
if Input.trigger?(Input::C)
#begin
$game_system.se_play($data_system.decision_se)
case @option.index
when 0#Equip
$game_system.se_play($data_system.decision_se)
@wepon.active = true
@wepon.index = 0
@confirm_window.visible = false
@confirm_window.z = 0
@option.visible = false
@option.active = false
@option.z = 0
@option.update
when 1#class change
@confirm_window.visible = false
@confirm_window.z = 0
@option.visible = false
@option.active = false
@option.z = 0
@option.update
@char.active = true
@char.index = @char_index
when 2#return
$game_system.se_play($data_system.decision_se)
@confirm_window.visible = false
@confirm_window.z = 0
@option.visible = false
@option.active = false
@option.z = 0
@option.update
@list.active = true
return
end
#end
end
end
end
#end of code
#update function, alias
class Scene_EquipSummon
def skill
return @data[@list.index]
end
#equipped skills
$skill_equip = []
#aliasing begin reference to class method ^-^
alias new_list_update list_update
#skill list
def list_update
new_list_update
@list.refresh
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills].name
if skill != nil
@data.push(skill)
end
end
end
alias new_wepon_update wepon_update
#weapon list
def wepon_update
new_wepon_update
@list.refresh
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills].name
if skill != nil
@data.push(skill)
end
end
end
alias new_select_update select_update
#select command
def select_update
new_select_update
@list.refresh
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills].name
if skill != nil
@data.push(skill)
end
end
end
end
#update function, alias
Để kích hoạt nó dùng lệnh sau
$scene = Scene_EquipSummon.new
Trước hết là khuôn mặt :
#--------------------------------------------------------------------------
# Define Faces
#--------------------------------------------------------------------------
def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(3, -1, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
Còn đây là Window skill
#==============================================================================
# ■ Window_Skill
#------------------------------------------------------------------------------
# スキル画面、バトル画面で、使用できるスキルの一覧を衼br />¨示するウィンドウです。
#==============================================================================
class Window_Skills < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# actor : アクター
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 75, 290, 405)
@actor = actor
@column_max = 1
refresh
self.index = 0
# 戦闘中の場合はウィンドウを画面中央へ移動し、半透明にぼbr />る
if $game_temp.in_battle
self.x = 200
self.y = 225
self.height = 256
self.width = 440
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● スキルの取得
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills]
if skill != nil
@data.push(skill)
end
end
# 項目数が 0 でなければビットマップを作成し、全項目を描画
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 項目の描画
# index : 項目番号
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
end
Làm 1 script mới dưới Scene skill rồi paste cái này vào
#---------------------------------------------------------------------
#Equipment for summon-------------------------------------------------
#by olamide bakre
#Scene_EquipSummon
#help window
class Window_Descri < Window_Base
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
end
def set_text(text, align = 1)
if text != @text or align != @align
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#end of text box
#text box
class Window_TextSummon < Window_Selectable
def initialize
super(0, 0, 290, 76)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_text(4, 0, 120,32, "Summons List")
testing = Time.now.strftime("%a %b %e %H:%M:%S %Y\n")
end
end
#Equipment list
class Window_ListSummon < Window_Skills
def initialize(actor, element_id)
@element_id = element_id
super(actor)
end
#define item max
#def summon
# return @data[self.index]
# end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
#loop
for i in [email protected]
skill = $data_skills[@actor.skills]
if skill != nil and skill.element_set.include?(@element_id)
@data.push(skill)
end
end
#item max is set to a value and called as a function
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
for i in 0...@item_max
draw_item(i)
end
end
end
#end of function
#beginning of object
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = normal_color
end
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
#self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# ● update help text
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
end
#end of draw object
#summon mixtured with weapon
class Window_WeaponSummon < Window_Selectable
def initialize(actor)
super(290, 0, 350, 210)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● return item index
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4)
draw_item_name(@data[0], 92, 32 * 0)
draw_item_name(@data[1], 92, 32 * 1)
draw_item_name(@data[2], 92, 32 * 2)
draw_item_name(@data[3], 92, 32 * 3)
draw_item_name(@data[4], 92, 32 * 4)
#self.contents.draw_text(260, 5, 160, 32, "Atk up".to_s)
end
#--------------------------------------------------------------------------
# ● update help
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#character equip with summon
class Window_CharSummon < Window_Selectable
def initialize
super(290, 210, 350, 270)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
end
#--------------------------------------------------------------------------
# ● refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
actor = $game_party.actors[0]
draw_actor_face(actor, 189, 250 )
draw_actor_name(actor, 4, 120)
draw_actor_level(actor, 4, 140)
self.contents.draw_text(4, 170, 150, 32, "Class:")
draw_actor_class(actor, 65, 170)
self.contents.draw_text(4, 200, 150, 32, "Element:")
if $ELEMENT_VAR == 0
$ELEMENT_VAR = "none"
end
self.contents.draw_text(85, 200, 150, 32, $ELEMENT_VAR.to_s)
#define Empty
#$EQUIP_SLOT1 = 0
if $EQUIP_SLOT1 == 0
$EQUIP_SLOT1 = "-----------------------------Empty-------------------------"
$EQUIP_SLOT2 = "-----------------------------Empty-------------------------"
$EQUIP_SLOT3 = "-----------------------------Empty-------------------------"
$EQUIP_SLOT4 = "-----------------------------Empty-------------------------"
end
self.contents.font.color = system_color
self.contents.draw_text(4, 2, 600, 32, $EQUIP_SLOT1.to_s )
self.contents.draw_text(4, 35, 600, 32, $EQUIP_SLOT2.to_s)
self.contents.draw_text(4, 65, 600, 32, $EQUIP_SLOT3.to_s)
self.contents.draw_text(4, 95, 600, 32, $EQUIP_SLOT4.to_s)
#end
end
end
#end
class Scene_EquipSummon < Scene_Skill
$EQUIP_SLOT1 = 0
#initialize object
def initialize(menu_index = 0, char_index = 0)
@menu_index = menu_index
@char_index = char_index
end
def main
#selection window
s1 = "Equip"
s2 = "Class Change"
s3 = "Return"
@option = Window_Command.new(150, [s1, s2, s3])
@option.index = @menu_index
$icon
#class selection window
@select = Window_Command.new(150, ["Equip", "Remove"])
@select.index = @menu_index
@select.z = 0
@select.x = 150
@select.y = 190
@select.visible = false
@select.active = false
#class selection window ends
#confirm
@confirm_window = Window_Base.new(135, 188, 400, 64)
@confirm_window.contents = Bitmap.new(368, 32)
@confirm_window.contents.font.name = $fontface
@confirm_window.contents.font.size = $fontsize
@confirm_window.contents.draw_text(4, 0, 500, 32,"What do you want to do?")
#confirm
@item_max = $game_party.actors.size
@actor = $game_party.actors[0]
@info = Window_TextSummon.new
@list = Window_ListSummon.new(@actor, @element_id = 18)
@help_window = Window_Descri.new
@help_window.visible = false
@wepon = Window_WeaponSummon.new(@actor)
@wepon.active = false
@char = Window_CharSummon.new
@confirm_window.visible = false
@confirm_window.z = 1500
@option.visible = false
@option.active = false
@option.x = 270
@option.y = 252
@option.z = 1500
#end of window
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@option.dispose
@confirm_window.dispose
@info.dispose
@list.dispose
@wepon.dispose
@char.dispose
@select.dispose
@help_window.dispose
end
#begin
def update
@select.update
@option.update
@info.update
@list.update
@wepon.update
@char.update
@help_window.update
if @option.active
option_update
return
end
if @list.active
list_update
return
end
if @wepon.active
wepon_update
return
end
if @char.active
char_update
return
end
if @select.active
select_update
return
end
end
#end of update
def draw_icon(x, y)
skills = @data[@list.index]
$icon = Sprite.new
$icon.bitmap = RPG::Cache.icon(skills)
$icon.z = 255
$icon.y = y
$icon.x = x
end
#define end selection
def select_update
@select.active
if Input.trigger?(Input::B)
@select.z = 0
@select.x = 145
@select.y = 150
@select.visible = false
@select.active = false
@char.active = true
end
actor = $game_party.actors[0]
if Input.trigger?(Input::C)
case @select.index
when 0
$game_system.se_play($data_system.decision_se)
if @char.index == 0
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
@char.refresh
$EQUIP_SLOT1 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
elsif @char.index == 1
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
$EQUIP_SLOT2 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
elsif @char.index == 2
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
@element_id = @list.index
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
$EQUIP_SLOT3 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
elsif @char.index == 3
if $data_classes[1].name == "Slayer"
testing = actor.class_id = 2
end
id = $data_skills[@list.index + 1].element_set[0]
$ELEMENT_VAR = $data_system.elements[id]
$EQUIP_SLOT4 = @data[@list.index] + " \t \t Equipped"
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@list.refresh
@list.active = true
@char.active = false
@char.index = -1
end
@char.refresh
@select.z = 0
@select.x = 145
@select.y = 150
@select.visible = false
@select.active = false
@char.active = true
when 1
$game_system.se_play($data_system.buzzer_se)
if @char.index == 0
$ELEMENT_VAR = 0
if $EQUIP_SLOT1 == "-----------------------------Empty-------------------------"
$game_system.se_play($data_system.buzzer_se)
else
if $data_classes[2].name == "SwordMan"
testing = actor.class_id = 1
@char.refresh
end
$EQUIP_SLOT1 = "-----------------------------Empty-------------------------"
@actor.learn_skill(0)
@list.refresh
end
elsif @char.index == 1
$ELEMENT_VAR = 0
$EQUIP_SLOT2 = "-----------------------------Empty-------------------------"
@char.refresh
elsif @char.index == 2
$ELEMENT_VAR = 0
$EQUIP_SLOT3 = "-----------------------------Empty-------------------------"
@char.refresh
elsif @char.index == 3
$ELEMENT_VAR = 0
$EQUIP_SLOT4 = "-----------------------------Empty-------------------------"
@char.refresh
end
@char.refresh
@select.z = 200
@select.x = 145
@select.y = 150
@select.visible = true
@select.active = true
@char.active = false
return
end
end
end
#end of selection
#update class change
def char_update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
#Graphics.update
@select.z = 200
@select.x = 145
@select.y = 150
@select.visible = true
@select.active = true
@char.active = false
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@char.index = -1
@char.active = false
@list.active = true
end
end
#update weapon equip
def wepon_update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@wepon.active = false
@wepon.index = -1
@list.active = true
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
case @wepon.index
when 0
$data_weapons[$data_actors[1].weapon_id].atk += 20
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
@wepon.refresh
@list.refresh
when 1
$data_armors[$data_actors[1].armor1_id].mdef += 20
@wepon.refresh
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
when 2
$data_armors[$data_actors[1].armor2_id].pdef += 20
@wepon.refresh
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
when 3
$data_armors[$data_actors[1].armor3_id].pdef += 20
@wepon.refresh
@wepon.active = false
@wepon.index = -1
@list.active = true
$skill_equip.push(@data[@list.index])
@data[@list.index].replace(" EQUIPPED ")
end
end
end
#update skill list
def list_update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
skill_id = @actor.skills.size
if Input.trigger?(Input::C)
if $skill_equip.include?(@data[@list.index])
$game_system.se_play($data_system.buzzer_se)
else
if @actor.skill_learn?(skill_id)
$game_system.se_play($data_system.decision_se)
@confirm_window.visible = true
@confirm_window.z = 1500
@option.visible = true
@option.active = true
@option.x = 270
@option.y = 252
@option.z = 1500
@list.active = false
else
$game_system.se_play($data_system.buzzer_se)
end
end
end
end
def option_update
#input
if Input.trigger?(Input::B)
then
$game_system.se_play($data_system.cancel_se)
@confirm_window.visible = false
@confirm_window.z = 1500
@option.visible = false
@option.active = false
@option.x = 270
@option.y = 252
@option.z = 1500
@list.active = true
return
end
if Input.trigger?(Input::C)
#begin
$game_system.se_play($data_system.decision_se)
case @option.index
when 0#Equip
$game_system.se_play($data_system.decision_se)
@wepon.active = true
@wepon.index = 0
@confirm_window.visible = false
@confirm_window.z = 0
@option.visible = false
@option.active = false
@option.z = 0
@option.update
when 1#class change
@confirm_window.visible = false
@confirm_window.z = 0
@option.visible = false
@option.active = false
@option.z = 0
@option.update
@char.active = true
@char.index = @char_index
when 2#return
$game_system.se_play($data_system.decision_se)
@confirm_window.visible = false
@confirm_window.z = 0
@option.visible = false
@option.active = false
@option.z = 0
@option.update
@list.active = true
return
end
#end
end
end
end
#end of code
#update function, alias
class Scene_EquipSummon
def skill
return @data[@list.index]
end
#equipped skills
$skill_equip = []
#aliasing begin reference to class method ^-^
alias new_list_update list_update
#skill list
def list_update
new_list_update
@list.refresh
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills].name
if skill != nil
@data.push(skill)
end
end
end
alias new_wepon_update wepon_update
#weapon list
def wepon_update
new_wepon_update
@list.refresh
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills].name
if skill != nil
@data.push(skill)
end
end
end
alias new_select_update select_update
#select command
def select_update
new_select_update
@list.refresh
@data = []
for i in [email protected]
skill = $data_skills[@actor.skills].name
if skill != nil
@data.push(skill)
end
end
end
end
#update function, alias
Để kích hoạt nó dùng lệnh sau
$scene = Scene_EquipSummon.new