메뉴

전투 결과 팝업 스크립트

by 카르와푸딩의아틀리에 posted Jun 30, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

전투 결과 화면을 출력해주는 스크립트.

제법 괜찮아 보입니다. ㅎㅎ

 

Untitled-1 copy.jpg

 

#===============================================================
# �—� [VX] �—� Battle Result
#--------------------------------------------------------------
# �—� By Blockade
# �—� http://rpg-maker-vx.bbactif.com/forum.htm
# �—� Released on 11/11/2008
# �—� Version 1.0
# �—� Thanks to Woratana, Moghunter
#--------------------------------------------------------------

class Window_Battle_Result < Window_Base
def initialize(result_data)
super(0, 0, 546, 290)
self.z = 1
contents.font.color = normal_color
textexp = "Exp received : " + $game_troop.exp_total.to_s
textarg = "Gils obtained : " + $game_troop.gold_total.to_s
drop_items = $game_troop.make_drop_items
yitem = 70
xitem = 30

contents.draw_text(200, 0, contents.width, WLH, "Battle Result")
contents.draw_text(0,22, contents.width, WLH, textexp)
contents.draw_text(0,50, contents.width, WLH, "Items obtained :")
contents.draw_text(0,235, contents.width, WLH, textarg )

#=========================================================
# Gestion du drop
#=========================================================
for item in drop_items
$game_party.gain_item(item, 1)
contents.draw_text(xitem,yitem, contents.width, WLH,item.name)
draw_icon(item.icon_index,xitem-30, yitem, true)
yitem += 23
if yitem == 231
yitem = 70
xitem =+ 180
end
end

#=========================================================
# Gestion de l'affichage de l'Xp
#=========================================================
ychara= 100
$game_party.members.each_index do |i|
actor = $game_party.members[i]
exp = $game_troop.exp_total
actor.gain_exp(exp, false)
draw_character(actor.character_name, actor.character_index, 350, ychara)
draw_actor_exp_meter(actor,370,ychara-30,100)
actor.gain_exp(-exp,false)
ychara +=50
end
end
#=========================================================
# Gestion de l'affichage de la barre d'XP
#=========================================================
def exp_gauge_color1
return text_color(30)
end

def exp_gauge_color2
return text_color(31)
end

def draw_actor_exp_meter(actor, x, y, width = 100)
if actor.next_exp != 0
exp = actor.now_exp
else
exp = 1
end
gw = width * exp / [actor.next_exp, 1].max
gc1 = exp_gauge_color1
gc2 = exp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, WLH, "Exp")
self.contents.font.color = normal_color
xr = x + width
self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp_s, 2)
end
end


#=========================================================
# Réecriture des méthodes
#=========================================================
class Scene_Battle < Scene_Base
alias block_redef_meth_battle_end battle_end
alias block_redef_meth_display_exp_and_gold display_exp_and_gold
alias block_redef_meth display_drop_items

def display_drop_items
end

def battle_end(result)
@result_window.dispose if result == 0
block_redef_meth_battle_end(result)
end

def display_exp_and_gold
result_data = [sprintf(Vocab::ObtainExp, $game_troop.exp_total),
sprintf(Vocab::ObtainGold, $game_troop.gold_total, Vocab::gold)]
@result_window = Window_Battle_Result.new(result_data)
block_redef_meth_display_exp_and_gold
end
end

class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end

def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end