查看: 3270|回复: 7

[已经解决] 等級處理問題

[复制链接]
梦石
0
星屑
50
在线时间
331 小时
注册时间
2012-8-8
回帖
299
发表于 2013-10-11 21:01:55 | 显示全部楼层 |阅读模式
悬赏5星屑已解决
本帖最后由 みかげ 于 2013-10-14 06:03 编辑

http://sdrv.ms/GP77pK

很簡單的問題...

我想在窗口顯示等級...

Unnamed QQ Screenshot20131011211309.png

當升級時...那個字幕很煩...所以希望移除...
QQ Photo20131011215054.jpg
(移除字幕)

改成在左側中間偏下方(紅框處)提示...並在角色頭上加個"Level up"的信息
QQ Photo20131011215502.jpg
(紅框處:提示升級信息、角色頭上加個"Level up"的提示)

@冰鎮史萊姆 麻煩你了><

抱歉...紅色字不清楚。

最佳答案

查看完整内容

其实上一版本已经大概写好了,但是之所以不行的原因其实和这个战斗系统本身有很多关系。 也就是说我一次获得一对道具他只会显示最后获得的 所以说我只能改了一下顺序,先获得道具,再升级,这样玩家才能看到自己升级了=。= 这个战斗系统果然提示系统蛋疼,所以说我最后还是写好了,楼上的最好删掉=。= [pre lang="ruby" line="1"]class 0 gtext = 'Gold ' + @enemy.gold.to_s if @enemy.gold > 0 $game_player.pop_dam ...

点评

行走图好有趣=w=  发表于 2013-10-11 21:10
[工作室]工作室招人,有興趣擊點這裡!
[和弦代寫]代寫和弦店開幕了!如果有寫好的主旋律不會配和弦,請點這裡!
[音樂教室]橘光音樂教室招生中!有興趣的來點這裡報名。

唯一的信徒

梦石
0
星屑
1697
在线时间
1359 小时
注册时间
2013-1-29
回帖
1537
发表于 2013-10-11 21:01:56 | 显示全部楼层
其实上一版本已经大概写好了,但是之所以不行的原因其实和这个战斗系统本身有很多关系。
这个战斗系统左下角提示没法很好地处理多个信息的情况

也就是说我一次获得一对道具他只会显示最后获得的
所以说即使有了升级信息但是由于升级在获得掉落道具之前发生所以一般看不到升级

所以说我只能改了一下顺序,先获得道具,再升级,这样玩家才能看到自己升级了=。=

这个战斗系统果然提示系统蛋疼,所以说我最后还是写好了,楼上的最好删掉=。=
[pre lang="ruby" line="1"]class << PearlKernel
  def draw_lv(obj, x, y, actor)
    string = 'Lv. ' + (actor.level).to_i.to_s
    obj.draw_text(x, y, 80, 32, string,2)
  end
end



class Sprite_LifeBars < Sprite
  def refresh_contents
    self.bitmap.clear
    self.bitmap.font.size = 19
    @erasetimer = 180
    self.opacity = 255
    if battler.is_a?(Game_Actor)
      @old_exp = battler.exp
      @old_tp = battler.tp
      self.x = ScreenPos_X
      self.y = ScreenPos_Y
      h  = HP_BarDimentions ; m = MP_BarDimentions ; e = EX_BarDimentions
      if PearlBars::ActorsHp != ""
        @pimg = Cache.picture(PearlBars::ActorsHp)  if @pimg.nil?
        @bimg = Cache.picture(PearlBars::ActorsBack) if @bimg.nil?
        @pimp = Cache.picture(PearlBars::ActorsMp)  if @pimp.nil?
        PearlKernel.image_hp(self.bitmap, h[0] + 4, h[1],@bimg,
        @pimg, battler,true)
        PearlKernel.image_mp(self.bitmap, m[0] + 4, m[1], @bimg, @pimp, battler)
        if PearlBars::ActorsExp != ""
          @piexp = Cache.picture(PearlBars::ActorsExp)  if @piexp.nil?
          PearlKernel.image_exp(self.bitmap,e[0] + 4,e[1],@bimg,@piexp, battler)
        end
      else
        hc = HP_Color ; mc = MP_Color ; ec = EX_Color
        PearlKernel.draw_hp(self.bitmap,battler, h[0], h[1], h[2], h[3], hc)
        PearlKernel.draw_mp(self.bitmap,battler, m[0], m[1], m[2], m[3], mc)
        PearlKernel.draw_exp(self.bitmap,battler, e[0], e[1], e[2], e[3], ec)
        #PearlKernel.draw_lv(self.bitmap,battler, e[0], e[1], e[2], e[3], ec)
        PearlKernel.draw_lv(self.bitmap, TP_Info[0]+40, TP_Info[1], battler)
      end
      PearlKernel.draw_tp(self.bitmap, TP_Info[0], TP_Info[1], battler)
      
    else battler.is_a?(Game_Enemy)
      if boss?
        self.x = BeScreenPos_X
        self.y = BeScreenPos_Y
        h  = BHP_BarDimentions ; hc = BHP_Color
        if PearlBars::BossEne != ""
          @n_img = Cache.picture(PearlBars::BossEne) if @n_img.nil?
          @n_back = Cache.picture(PearlBars::BossBack) if @n_back.nil?
          PearlKernel.image_hp(self.bitmap, h[0] + 4, h[1],@n_back,
          @n_img, battler,true)
        else
          PearlKernel.draw_hp(self.bitmap,battler, h[0],h[1],h[2], h[3],hc,true)
        end
      else
        self.x = NeScreenPos_X
        self.y = NeScreenPos_Y
        h  = EHP_BarDimentions ; hc = EHP_Color
        if PearlBars::NormalEne != ""
          @n_img = Cache.picture(PearlBars::NormalEne) if @n_img.nil?
          @n_back = Cache.picture(PearlBars::NormalBack) if @n_back.nil?
          PearlKernel.image_hp(self.bitmap, h[0] + 4, h[1],@n_back,
          @n_img, battler,true)
        else
          PearlKernel.draw_hp(self.bitmap,battler,h[0],h[1],h[2], h[3], hc,true)
        end
      end
    end
  end
end

class Sprite_DamagePop < Sprite
  attr_reader   :target
  def initialize(viewport, target,text=nil)
    super(viewport)
    @target = target
    self.bitmap = Bitmap.new(200, 50)
    self.bitmap.font.size = 20
    case rand(4)
    when 0 then @resto_plus = 0.5
    when 1 then @resto_plus = 0.6
    when 2 then @resto_plus = 0.7
    when 3 then @resto_plus = 0.8
    end
    create_text_for_display
    @text = text if text
    set_text
    update
  end
end


class Spriteset_Map
  def add_new_popup(target,text)
    text = Sprite_DamagePop.new(@viewport1, DamagePop_Obj.new(target),text)
    @damagepop_sprites.push(text)
  end
  
end


class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 顯示等級上升的信息
  #     new_skills : 學會的新技能的數組
  #--------------------------------------------------------------------------
  def display_level_up(new_skills)
    new_popup(self,'Level Up!')
    $game_system.item_object = [:string, "Level Up!"]
    return unless SceneManager.scene.is_a? Scene_Map
   
  end
end


class Scene_Map
  attr_accessor :spriteset
end

class Spriteset_Map
  attr_accessor :item_sprite
end

class Sprite_PopItem < Sprite
  
  def set_bitmap
    #puts "Item: #{@item}, Num: #{@num}"
    operand = ''
    @item.nil? ? operand = Vocab::currency_unit : operand = @item.name unless @item == :string
    string = operand + ' X' + @num.to_s
    if @item == :string
      string = @num.to_s
    end
    self.bitmap = Bitmap.new(26 + string.length * 9, 28)
    self.bitmap.fill_rect(0, 0, self.bitmap.width, 28, Color.new(0, 0, 0, 100))
    self.bitmap.font.size = 20
    bitmap = Cache.system("Iconset")
    unless @item == :string
      icon = @item.nil? ? PearlItemPop::GoldIcon : @item.icon_index
      rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
      self.bitmap.blt(4, 0, bitmap, rect)
    end
    x = 28
    x = 5 if @item == :string
    self.bitmap.draw_text(x, 0, 250, 32, string)
  end
end

module Kernel
  def new_popup(target,text)
    new_target = target
    if target == $game_party.leader
      new_target = $game_player
    elsif target.is_a? Game_Actor
      new_target = $game_player.followers[$game_party.members.index(target)]
    end
    SceneManager.scene.instance_eval{@spriteset.add_new_popup(new_target,text)}  
  end
end


class Game_Event < Game_Character
  def kill_enemy
    @secollapse = nil
    @killed = true
    @priority_type = 0 if @deadposee
    gain_gold
    gain_exp
    etext = 'Exp '  + @enemy.exp.to_s if @enemy.exp > 0
    gtext = 'Gold ' + @enemy.gold.to_s if @enemy.gold > 0
    $game_player.pop_damage("#{etext} #{gtext}") if etext || gtext
    make_drop_items
    run_assigned_commands
  end
end
[/pre]
『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复

使用道具 举报

梦石
0
星屑
201
在线时间
835 小时
注册时间
2012-9-16
回帖
1598
发表于 2013-10-11 21:15:58 | 显示全部楼层
话说能等会儿么?明天我有时间,可以帮你~话说我VAVX都接触一年多了,虽然目前在使用VX但是VA脚本我还会。

点评

可以呀...等待你的好消息。  发表于 2013-10-11 21:17

——旧坑欢迎戳
回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2013-10-11 21:23:32 | 显示全部楼层
喵呜喵5他有地图显示变量的脚本,另外,升级提示可以在事件那里修改,有取消显示提示框的钩

点评

這個是ABS的、不是默認系統的...我想修改裡面的...那提示框應該是腳本裡的東西...  发表于 2013-10-11 21:31
回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

发表于 2013-10-11 21:31:56 | 显示全部楼层
这个血槽怎么这么像win7的进度条....

点评

围观VA区版主搞基。。。。  发表于 2013-10-12 09:45
Sion~吐槽(水)要用点评啊!下次再被我抓到,就把你抓进小黑屋去然后***……(和谐大雾~  发表于 2013-10-11 21:53

评分

参与人数 1星屑 -5 收起 理由
Mic_洛洛 -5 开门。查水表~

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2013-10-11 21:58:40 | 显示全部楼层
好吧,懒得下载范例了,你在脚本里全局搜索def display_level_up函数,把里面的内容清了,换句话说,就是
def display_level_up
end
完了,试试吧

点评

但是還是要有升級提示...不是清完就沒事了...還要讓左側和升級角色提示升級。  发表于 2013-10-11 22:09
回复

使用道具 举报

唯一的信徒

梦石
0
星屑
1697
在线时间
1359 小时
注册时间
2013-1-29
回帖
1537
发表于 2013-10-11 22:29:53 | 显示全部楼层
除了左下角的提示之外都写好了,都是这个作者君太不给其他开发者面子了(其实是你太渣了吧, 中午回家之后再写后半部分吧:
  1. class << PearlKernel
  2.   def draw_lv(obj, x, y, actor)
  3.     string = 'Lv. ' + (actor.level).to_i.to_s
  4.     obj.draw_text(x, y, obj.width, 32, string)
  5.   end
  6. end



  7. class Sprite_LifeBars < Sprite
  8.   def refresh_contents
  9.     self.bitmap.clear
  10.     self.bitmap.font.size = 19
  11.     @erasetimer = 180
  12.     self.opacity = 255
  13.     if battler.is_a?(Game_Actor)
  14.       @old_exp = battler.exp
  15.       @old_tp = battler.tp
  16.       self.x = ScreenPos_X
  17.       self.y = ScreenPos_Y
  18.       h  = HP_BarDimentions ; m = MP_BarDimentions ; e = EX_BarDimentions
  19.       if PearlBars::ActorsHp != ""
  20.         @pimg = Cache.picture(PearlBars::ActorsHp)  if @pimg.nil?
  21.         @bimg = Cache.picture(PearlBars::ActorsBack) if @bimg.nil?
  22.         @pimp = Cache.picture(PearlBars::ActorsMp)  if @pimp.nil?
  23.         PearlKernel.image_hp(self.bitmap, h[0] + 4, h[1],@bimg,
  24.         @pimg, battler,true)
  25.         PearlKernel.image_mp(self.bitmap, m[0] + 4, m[1], @bimg, @pimp, battler)
  26.         if PearlBars::ActorsExp != ""
  27.           @piexp = Cache.picture(PearlBars::ActorsExp)  if @piexp.nil?
  28.           PearlKernel.image_exp(self.bitmap,e[0] + 4,e[1],@bimg,@piexp, battler)
  29.         end
  30.       else
  31.         hc = HP_Color ; mc = MP_Color ; ec = EX_Color
  32.         PearlKernel.draw_hp(self.bitmap,battler, h[0], h[1], h[2], h[3], hc)
  33.         PearlKernel.draw_mp(self.bitmap,battler, m[0], m[1], m[2], m[3], mc)
  34.         PearlKernel.draw_exp(self.bitmap,battler, e[0], e[1], e[2], e[3], ec)
  35.         #PearlKernel.draw_lv(self.bitmap,battler, e[0], e[1], e[2], e[3], ec)
  36.         PearlKernel.draw_lv(self.bitmap, TP_Info[0]+70, TP_Info[1], battler)
  37.       end
  38.       PearlKernel.draw_tp(self.bitmap, TP_Info[0], TP_Info[1], battler)
  39.       
  40.     else battler.is_a?(Game_Enemy)
  41.       if boss?
  42.         self.x = BeScreenPos_X
  43.         self.y = BeScreenPos_Y
  44.         h  = BHP_BarDimentions ; hc = BHP_Color
  45.         if PearlBars::BossEne != ""
  46.           @n_img = Cache.picture(PearlBars::BossEne) if @n_img.nil?
  47.           @n_back = Cache.picture(PearlBars::BossBack) if @n_back.nil?
  48.           PearlKernel.image_hp(self.bitmap, h[0] + 4, h[1],@n_back,
  49.           @n_img, battler,true)
  50.         else
  51.           PearlKernel.draw_hp(self.bitmap,battler, h[0],h[1],h[2], h[3],hc,true)
  52.         end
  53.       else
  54.         self.x = NeScreenPos_X
  55.         self.y = NeScreenPos_Y
  56.         h  = EHP_BarDimentions ; hc = EHP_Color
  57.         if PearlBars::NormalEne != ""
  58.           @n_img = Cache.picture(PearlBars::NormalEne) if @n_img.nil?
  59.           @n_back = Cache.picture(PearlBars::NormalBack) if @n_back.nil?
  60.           PearlKernel.image_hp(self.bitmap, h[0] + 4, h[1],@n_back,
  61.           @n_img, battler,true)
  62.         else
  63.           PearlKernel.draw_hp(self.bitmap,battler,h[0],h[1],h[2], h[3], hc,true)
  64.         end
  65.       end
  66.     end
  67.   end
  68. end

  69. class Sprite_DamagePop < Sprite
  70.   attr_reader   :target
  71.   def initialize(viewport, target,text=nil)
  72.     super(viewport)
  73.     @target = target
  74.     self.bitmap = Bitmap.new(200, 50)
  75.     self.bitmap.font.size = 20
  76.     case rand(4)
  77.     when 0 then @resto_plus = 0.5
  78.     when 1 then @resto_plus = 0.6
  79.     when 2 then @resto_plus = 0.7
  80.     when 3 then @resto_plus = 0.8
  81.     end
  82.     create_text_for_display
  83.     @text = text if text
  84.     set_text
  85.     update
  86.   end
  87. end


  88. class Spriteset_Map
  89.   def add_new_popup
  90.     text = Sprite_DamagePop.new(@viewport1, DamagePop_Obj.new($game_player),"Level Up!")
  91.     @damagepop_sprites.push(text)
  92.   end
  93.   
  94. end


  95. class Game_Actor < Game_Battler
  96.   #--------------------------------------------------------------------------
  97.   # ● 顯示等級上升的信息
  98.   #     new_skills : 學會的新技能的數組
  99.   #--------------------------------------------------------------------------
  100.   def display_level_up(new_skills)
  101.     #$game_system.item_object = [:string, "#{self.name} is now #{self.level}"]
  102.     #@damagepop_sprites.push(Sprite_DamagePop.new(@viewport1, target))
  103.     #SceneManager.scene.instance_eval{@spriteset.instance_eval{@item_object = [:string, "#{self.name} is now #{self.level}"]}}
  104.     SceneManager.scene.instance_eval{@spriteset.add_new_popup()}
  105.   end
  106. end
  107. class Sprite_PopItem < Sprite
  108.   
  109.   def set_bitmap
  110.     @item.nil? ? operand = Vocab::currency_unit : operand = @item.name
  111.     string = operand + ' X' + @num.to_s
  112.     if @item == :string
  113.       puts 'hi'
  114.       string = @num.to_s
  115.     end
  116.     self.bitmap = Bitmap.new(26 + string.length * 9, 28)
  117.     self.bitmap.fill_rect(0, 0, self.bitmap.width, 28, Color.new(0, 0, 0, 100))
  118.     self.bitmap.font.size = 20
  119.     bitmap = Cache.system("Iconset")
  120.     icon = @item.nil? ? PearlItemPop::GoldIcon : @item.icon_index
  121.     rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
  122.     self.bitmap.blt(4, 0, bitmap, rect) unless @item == :string
  123.     self.bitmap.draw_text(28, 0, 250, 32, string)
  124.   end
  125. end

复制代码

点评

LBQ
↓于是我今天写吧。。毕竟左下角那货略坑。。  发表于 2013-10-13 22:56
我還在等左下角提示...等你寫好我再認可。  发表于 2013-10-13 18:23
謝謝...就剩下那左下角的提示了...  发表于 2013-10-12 01:10

评分

参与人数 1星屑 +20 收起 理由
yangjunyin2002 + 20 555...万恶的LBQ

查看全部评分

『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部