Witam.
Mam proĹbÄ do skrypterĂłw. PotrzebujÄ tzw victory screen (coĹ jak z final fantasy).
Co powinien zawieraÄ? W zasadzie podstawy:)
- avatar i nazwÄ bohatera (paski hp i mp niekoniecznie) UĹoĹźenie bohaterĂłw podobnie jak w screenie opcji, czyli w pionie.
- pasek exp - miĹo by byĹo gdyby byĹ image based, czyli Ĺźe wrzucam swojÄ grafikÄ, w ostatecznoĹci defaultowy gauge z vx
- informacjÄ o aktualnym poziomie
- dodatkowo jeĹli jest wykonalne to miĹoby byĹo gdyby pokazywaĹ otrzymane przedmioty wraz z ikonkÄ przedmiotu.
def wait_for_result
close = false
loop do
update_basic
if Input.trigger?(Input::C)
close = true
end
if close
@battle_result.opacity -= 10
@battle_result.contents_opacity -= 10
@item_result.opacity -= 10
@item_result.contents_opacity -= 10
end
break if @battle_result.opacity == 0
end
end
end
class Window_Battle_Result < Window_Base
include Ayene
def initialize(exp, level_up)
super(0, 0, 544, 224 + WLH)
@exp = exp
@level_up = level_up
refresh
end
def refresh
self.contents.clear
@item_max = $game_party.members.size
for actor in $game_party.members
draw_actor_face(actor, actor.index % 2 * 260, actor.index / 2 * 96 + WLH / 2, 92)
x = 114 + actor.index % 2 * 260
y = 10 + actor.index / 2 * 96 + WLH / 2
draw_actor_name(actor, x, y)
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_graphic_exp(actor, x, 10 + y + WLH * 2)
if @level_up.include?(actor)
draw_icon(LEVEL_UP_ICON, 100 + x, y + WLH)
end
end
end
Aye, pĂłki co nie chciaĹo mi zadziaĹaÄ. CoĹ mi siÄ staĹo z projektem Ĺźe nie potrafi importowanych grafik ani dĹźwiÄkĂłw znaleĹÄ. Zawsze coĹ zgubi. Nie wiem ock.
edit:
problem rozwiÄ zany, nie wiem co byĹo przyczynÄ , juĹź siÄ wszystko naprawiĹo. Jutro potestujÄ wĹasne grafiki, fajnie byĹoby jakbym te obrazki mĂłgĹ wrzucaÄ do foldeu graphics/system, bo wszystkie obrazkowe modyfikacje umieĹciĹem tam, takĹźe byĹoby mi po prostu wygodniej;)
Ale screen jak najbardziej mi siÄ podoba:)
Tak siÄ wĹaĹnie domyĹlaĹem, Ĺźe to ta linijka, ale wolaĹem niczego nie ruszaÄ na Ĺlepo;) A daĹoby radÄ, Ĺźeby ten pasek nie byĹ statyczny tylko dynamiczny, tzn Ĺźe nabija zdobyte doĹwiadczenie na tym screenie?? CoĹ jak w ff??
Ja posprawdzam z innych victory screenĂłw linijki i moĹźe sobie z tym jakoĹ poradzÄ, ale jeĹli byĹabyĹ w stanie mnie chociaĹź nakierowaÄ jak to zrobiÄ to bÄdÄ wdziÄczny;)
def wait_for_result
close = false
loop do
update_basic
@battle_result.update
break if @battle_result.stop
end
loop do
update_basic
if Input.trigger?(Input::C)
close = true
end
if close
@battle_result.opacity -= 10
@battle_result.contents_opacity -= 10
@item_result.opacity -= 10
@item_result.contents_opacity -= 10
end
break if @battle_result.opacity == 0
end
end
end
class Window_Battle_Result < Window_Base
attr_accessor :stop
include Ayene
def initialize(exp, level_up)
super(0, 0, 544, 224 + WLH)
@exp = exp
@level_up = level_up
@rate = {}
@max = []
for actor in $game_party.members
lv = actor.level - @level_up[actor]
s1 = actor.gained_exp(lv, actor.exp - @exp)
s2 = actor.needed_exp(lv)
gw = [s1 * WIDTH / s2, WIDTH].min
@rate[actor] = gw
end
@stop = false
refresh
end
def refresh
self.contents.clear
for actor in $game_party.members
draw_actor_face(actor, actor.index % 2 * 260, actor.index / 2 * 96 + WLH / 2, 92)
x = 114 + actor.index % 2 * 260
y = 10 + actor.index / 2 * 96 + WLH / 2
draw_actor_name(actor, x, y)
draw_actor_level(actor, x, y + WLH * 1)
draw_actor_graphic_exp(actor, x, 10 + y + WLH * 2)
end
end
def update_bars
for actor in $game_party.members
x = 114 + actor.index % 2 * 260
y = 10 + actor.index / 2 * 96 + WLH / 2
draw_actor_graphic_exp(actor, x, 10 + y + WLH * 2)
end
end
def draw_actor_graphic_exp(actor, x, y, width = WIDTH)
bitmap = Cache.system("hp_mp_bar")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, y, bitmap, src_rect)
s1 = actor.gained_exp(actor.level, actor.exp)
s2 = actor.needed_exp(actor.level)
gw = [s1 * WIDTH / s2, WIDTH].min
gc1 = Color.new(38,101,131)
gc2 = Color.new(45,121,157)
@max.push(gw)
if @level_up[actor] > 0
w = [@rate[actor], width].min
if @rate[actor] == width
@level_up[actor] -= 1
@rate[actor] = 0
draw_icon(LEVEL_UP_ICON, 100 + x, y - WLH * 2)
self.contents.clear_rect(x, y - WLH * 1 - 10, 64, WLH)
draw_actor_level(actor, x, y - WLH * 1 - 10)
end
else
w = [@rate[actor], gw].min
if @rate[actor] == @max.max
@stop = true
end
end
self.contents.gradient_fill_rect(x+8, y+3, w, 6, gc1, gc2)
bitmap.dispose
end
def draw_actor_level(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, WLH, Vocab::level_a)
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, WLH, actor.level - @level_up[actor], 2)
end
def update
for actor in $game_party.members
@rate[actor] += 1
end
update_bars
end
end
class Window_Result_Item < Window_Base
include Ayene
def initialize(gold, items, exp, skills)
super(0, 248, 544, 144 + WLH)
@items = items
@gold = gold
@exp = exp
@skills = skills
refresh
end
def refresh
self.contents.clear
@skills.each_with_index {|tab, i|
actor = tab[1]
skill = tab[0]
text = sprintf("%s poznaĹ - %s", actor.name, skill.name)
self.contents.draw_text(230, i * WLH, self.width, WLH, text)
break if i == 4
}
self.contents.draw_text(0, 0, self.width, WLH, DROP_TEXT)
draw_icon(EXP_ICON, 26, WLH)
self.contents.draw_text(50, WLH, self.width, WLH, @exp.to_s)
draw_icon(GOLD_ICON, 26, WLH * 2)
self.contents.draw_text(50, WLH * 2, self.width, WLH, @gold.to_s)
for i in 0...@items.size
draw_item_name(@items[i], 26, WLH * 3 + i * WLH)
end
end
end
class Game_Actor < Game_Battler
def gained_exp(current_level, current_exp)
return (current_exp - @exp_list[current_level])
end
def needed_exp(current_level)
return (@exp_list[current_level + 1] - @exp_list[current_level])
end
end
Zalecane dokĹadne testy, bo nie wiem, czy animacja dobrze 'nabija exp'
Animacja dziaĹÄ bardzo fajnie, zaimplementowaĹem sobie nawet teĹź te dodatki dĹşwiÄkowe;)
Ale...., za drugim razem, kiedy pojawia siÄ screen, to nie moĹźna nic zrobiÄ. Nie wychodzi z walki. TestujÄ dalej...
DomyĹlny, mam tylko paski hp i mp przeciwnika ozzmy, image based hp i burst gauge, czyli taki dodatkowy pasek ala overdrive. MoĹźe byÄ wina tego dĹşwiÄku level up. Dzieje siÄ tak kiedy wyskoczy mi level up.
edit:
PrzeprowadziĹÄm kilkadziesiÄ t walk testowych i zjawisko wystÄpuje losowo, tzn raz na kilka odpaleĹ gry takie coĹ ma miejsce a czasem dziaĹa bez zarzutu.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum