设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1618|回复: 7
打印 上一主题 下一主题

话说怎么没这个脚本

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

跳转到指定楼层
1
发表于 2008-6-7 00:22:36 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
很多系统都开发出来了,
但怎么怪物的血条却没有呢……{/gg}

打怪的时候看不见血条怪郁闷的……

恩……可以复刻这个脚本……

http://rpg.blue/web/htm/news913.htm

PS。其实我觉得这个血条不够美观…… [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
8
发表于 2008-6-8 00:36:05 | 只看该作者
以下引用越前リョーマ于2008-6-7 16:17:29的发言:

好诡异……

第一个脚本使用效果和昨天不一样了!

难道是变异冲突!
使得脚本效果增强80%?
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

7
 楼主| 发表于 2008-6-8 00:17:29 | 只看该作者
好诡异……

第一个脚本使用效果和昨天不一样了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
6
发表于 2008-6-7 03:12:27 | 只看该作者
以下引用越前リョーマ于2008-6-6 16:53:45的发言:

第一个血条太难看了……||

第二个和行走图战斗冲突……

只找到这两个....
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

5
 楼主| 发表于 2008-6-7 00:53:45 | 只看该作者
第一个血条太难看了……||

第二个和行走图战斗冲突……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
4
发表于 2008-6-7 00:50:07 | 只看该作者
以下引用越前リョーマ于2008-6-6 16:30:13的发言:

话说你这是XP的还是VX的……

XP的...测试了一下

VX血条
赵云的:
  1. class Spriteset_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 生成敌人活动块
  4.   #--------------------------------------------------------------------------
  5.   def create_enemies
  6.     @enemy_sprites = []
  7.     @enemy_hpbar_sprites = []
  8.     for enemy in $game_troop.members.reverse
  9.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  10.       @enemy_hpbar_sprites.push(Sprite_Hpbar.new(@viewport1, enemy))
  11.     end
  12.   end

  13.   #--------------------------------------------------------------------------
  14.   # ● 刷新敌人活动块
  15.   #--------------------------------------------------------------------------
  16.   def update_enemies
  17.     for sprite in @enemy_sprites + @enemy_hpbar_sprites
  18.       sprite.update
  19.     end
  20.   end
  21.   
  22.   #--------------------------------------------------------------------------
  23.   # ● 释放敌人活动块
  24.   #--------------------------------------------------------------------------
  25.   def dispose_enemies
  26.     for sprite in @enemy_sprites + @enemy_hpbar_sprites
  27.       sprite.dispose
  28.     end
  29.   end
  30.   
  31.   
  32. end
  33. #==============================================================================
  34. # ■ Sprite_Sprite_Hpbar
  35. #------------------------------------------------------------------------------
  36. #  血条显示
  37. #==============================================================================

  38. class Sprite_Hpbar < Sprite_Base
  39.   #--------------------------------------------------------------------------
  40.   # ● 定量
  41.   #--------------------------------------------------------------------------
  42.   #--------------------------------------------------------------------------
  43.   # ● 定义实例变量
  44.   #--------------------------------------------------------------------------
  45.   attr_accessor :battler
  46.   #--------------------------------------------------------------------------
  47.   # ● 初始化对像
  48.   #     viewport : 视口
  49.   #     battler  : 战斗者 (Game_Battler)
  50.   #--------------------------------------------------------------------------
  51.   def initialize(viewport, battler = nil)
  52.     super(viewport)
  53.     @battler = battler
  54.     @name = @battler.name
  55.     @hp = @battler.hp
  56.     self.bitmap = Bitmap.new(100,50)
  57.   #  self.bitmap.fill_rect(0,0,100,50,Color.new(255,0,0,255))
  58.     self.bitmap.draw_text(0,10,100,20,@battler.name ,1)
  59.     draw_actor_hp_gauge(@battler, 0, 15, 50)
  60.    
  61.     self.x = @battler.screen_x - 30
  62.     self.y = @battler.screen_y - self.bitmap.height / 2
  63.   #  self.ox = self.bitmap.width
  64.   #  self.oy = self.bitmap.height
  65.     self.z = @battler.screen_z + 5
  66.   end

  67.   #--------------------------------------------------------------------------
  68.   # ● 获取文字色
  69.   #     n : 文字色编号 (0~31)
  70.   #--------------------------------------------------------------------------  
  71.   def text_color(n)
  72.     windowskin = Cache.system("Window")
  73.     x = 64 + (n % 8) * 8
  74.     y = 96 + (n / 8) * 8
  75.     return windowskin.get_pixel(x, y)
  76.   end
  77.   
  78.   #--------------------------------------------------------------------------
  79.   # ● HP矩形的描画
  80.   #     actor : 角色
  81.   #     x     : 描画目标 X 坐标
  82.   #     y     : 描画目标 Y 坐标
  83.   #     width : 宽
  84.   #--------------------------------------------------------------------------  
  85.   def draw_actor_hp_gauge(actor, x, y, width = 120)
  86.     gw = width * @hp / actor.maxhp
  87.     gc1 = text_color(28)
  88.     gc2 = text_color(24)
  89.     self.bitmap.fill_rect(x, y + 24 - 8, width, 6, text_color(19))
  90.     self.bitmap.gradient_fill_rect(x, y + 24 - 8, gw, 6, gc1, gc2)
  91.   end
  92.   
  93.   
  94.   
  95.   #--------------------------------------------------------------------------
  96.   # ● 释放
  97.   #--------------------------------------------------------------------------
  98.   def dispose
  99.     if self.bitmap != nil
  100.       self.bitmap.dispose
  101.     end
  102.     super
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 刷新画面
  106.   #--------------------------------------------------------------------------
  107.   def update
  108.     super
  109.     if @battler == nil
  110.       self.bitmap = nil
  111.     else
  112.       update_battler_bitmap
  113.     end
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 刷新传送的位图数据
  117.   #--------------------------------------------------------------------------
  118.   def update_battler_bitmap
  119.     if @battler.dead? or @battler.hidden
  120.        self.opacity = 0
  121.      end
  122.     if [email protected]? and [email protected] and self.opacity == 0
  123.        self.opacity = 255
  124.     end  
  125.      
  126.     if @hp != @battler.hp or @name != @battler.name
  127.        @name = @battler.name
  128.        @hp = @battler.hp
  129.        self.bitmap.clear
  130.        self.bitmap.draw_text(0,10,100,20,@battler.name ,1)
  131.        draw_actor_hp_gauge(@battler, 0, 15, 50)
  132.     end
  133.   end
  134. end
复制代码


沉影不器:
  1. #==============================================================================
  2. # ■ Window_Base
  3. #------------------------------------------------------------------------------
  4. #  游戏中全部窗口的超级类。
  5. #==============================================================================

  6. class Window_Base < Window
  7.   #--------------------------------------------------------------------------
  8.   # ● 描绘 HP
  9.   #     enemy : 角色
  10.   #     x     : 描绘目标 X 坐标
  11.   #     y     : 描绘目标 Y 坐标
  12.   #     width : 宽
  13.   #--------------------------------------------------------------------------
  14.   def draw_enemy_hp(enemy, x, y, width = 65)
  15.     draw_actor_hp_gauge(enemy, x, y, width)
  16.     self.contents.font.color = system_color
  17.     self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
  18.     self.contents.font.color = hp_color(enemy)
  19.     xr = x + width
  20.     self.contents.draw_text(xr - 40, y, 40, WLH, enemy.hp, 2)
  21.   end
  22. end
  23. #==============================================================================
  24. # ■ Sprite_Battler
  25. #------------------------------------------------------------------------------
  26. #  战斗显示用活动块。Game_Battler 类的实例监视、
  27. # 活动块的状态的监视、活动块状态自动变化。
  28. #==============================================================================

  29. class Sprite_Battler < Sprite_Base
  30.   #--------------------------------------------------------------------------
  31.   # ● 常量
  32.   #--------------------------------------------------------------------------
  33.   WHITEN    = 1                      # 白色闪烁 (开始行动)
  34.   BLINK     = 2                      # 闪烁 (伤害)
  35.   APPEAR    = 3                      # 出现 (出现、复活)
  36.   DISAPPEAR = 4                      # 消失 (逃走)
  37.   COLLAPSE  = 5                      # 崩溃 (不能战斗)
  38.   #--------------------------------------------------------------------------
  39.   # ● 定义实例变量
  40.   #--------------------------------------------------------------------------
  41.   attr_accessor :battler
  42.   #--------------------------------------------------------------------------
  43.   # ● 初始化对象
  44.   #     viewport : 视区
  45.   #     battler  : 战斗者 (Game_Battler)
  46.   #--------------------------------------------------------------------------
  47.   def initialize(viewport, battler = nil)
  48.     super(viewport)
  49.     @battler = battler
  50.     @battler_visible = false
  51.     @effect_type = 0            # 效果种类
  52.     @effect_duration = 0        # 效果剩余时间
  53.     if @battler.is_a?(Game_Enemy)
  54.       width = 65 + 32
  55.       height = 24 + 32
  56.       x = @battler.screen_x - width/2
  57.       y = @battler.screen_y - height/2
  58.       @enemy_hp_window = Window_Base.new(x, y, width, height)
  59.       @enemy_hp_window.opacity = 0
  60.       @enemy_hp_window.contents = Bitmap.new(width - 32, height - 32)
  61.       @enemy_hp_window.draw_enemy_hp(@battler, 0, 0, 65)
  62.       @old_hp = -1
  63.     end
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● 释放
  67.   #--------------------------------------------------------------------------
  68.   def dispose
  69.     if self.bitmap != nil
  70.       self.bitmap.dispose
  71.       @enemy_hp_window.dispose
  72.     end
  73.     super
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 更新画面
  77.   #--------------------------------------------------------------------------
  78.   def update
  79.     super
  80.     if @battler == nil
  81.       self.bitmap = nil
  82.     else
  83.       @use_sprite = @battler.use_sprite?
  84.       if @use_sprite
  85.         self.x = @battler.screen_x
  86.         self.y = @battler.screen_y
  87.         self.z = @battler.screen_z
  88.         update_battler_bitmap
  89.       end
  90.       setup_new_effect
  91.       update_effect
  92.       if @enemy_hp_window != nil and @old_hp != @battler.hp
  93.         @enemy_hp_window.contents.clear
  94.         @enemy_hp_window.draw_enemy_hp(@battler, 0, 0, 65)
  95.         @old_hp = @battler.hp
  96.       end
  97.     end
  98.   end
  99. end
复制代码



系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

3
 楼主| 发表于 2008-6-7 00:30:13 | 只看该作者
话说你这是XP的还是VX的……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

贝鲁耶的依叶森林
持镰的苍色水野

梦石
2
星屑
659
在线时间
563 小时
注册时间
2007-4-8
帖子
1304

第4届短篇游戏比赛季军短篇八RM组亚军

2
发表于 2008-6-7 00:27:46 | 只看该作者
这个好看一些吧
我方:
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————

  4. # ▼▲▼ XRXS_BP 7. バトルステータス?クリアデザイン ver.1.03 ▼▲▼
  5. # by 桜雅 在土

  6. #==============================================================================
  7. # ■ Window_BattleStatus
  8. #==============================================================================
  9. class Window_BattleStatus < Window_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 公開インスタンス変数
  12.   #--------------------------------------------------------------------------
  13.   attr_accessor :update_cp_only # CPメーターのみの更新
  14.   #--------------------------------------------------------------------------
  15.   # ● オブジェクト初期化
  16.   #--------------------------------------------------------------------------
  17.   alias xrxs_bp7_initialize initialize
  18.   def initialize
  19.     # 初期化
  20.     @previous_hp = []
  21.     @previous_sp = []
  22.     # 呼び戻す
  23.     xrxs_bp7_initialize
  24.     # ↓Full-Viewの場合は下二行の # を消してください。
  25.     self.opacity = 160
  26.     self.back_opacity = 160  
  27.    
  28. =begin   
  29.    @hp = []
  30.    for j in 0...$game_party.actors.size
  31.      @hp[j] = $game_party.actors[j].hp
  32.    end
  33.    @refresh_flag = true
  34.    refresh
  35. =end   
  36.    
  37.    
  38.   end
  39. #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  40.   def draw_battler_graphic(actor, x, y)
  41.     battler=RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  42.     w = battler.width
  43.     h = battler.height
  44.     self.contents.blt(x-w/2, y-h, battler, Rect.new(0, 0, w,h),255)
  45.     self.z = 20
  46.   end
  47. #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

  48.   #--------------------------------------------------------------------------
  49.   # ● リフレッシュ
  50.   #--------------------------------------------------------------------------
  51.   alias xrxs_bp7_refresh refresh
  52.   def refresh
  53.     # CPメーターの更新のみ の場合
  54.     if @update_cp_only
  55.       xrxs_bp7_refresh
  56.       return
  57.     end
  58.     # 変更するものがない場合、飛ばす
  59.     @item_max = $game_party.actors.size
  60.     bool = false
  61.     for i in 0...@item_max
  62.       actor = $game_party.actors[i]
  63.       if (@previous_hp[i] != actor.hp) or (@previous_sp[i] != actor.sp)
  64.         bool = true
  65.       end
  66.     end
  67.     return if bool == false
  68.     # 描写を開始
  69.     self.contents.clear
  70.     for i in 0...@item_max
  71.       actor = $game_party.actors[i]
  72.       actor_x = i * 160 + 21
  73.       # 歩行キャラグラフィックの描写
  74.       draw_battler_graphic(actor, actor_x + 43, 80)
  75.       # HP/SPメーターの描写
  76.       
  77.       
  78.       draw_actor_hp_meter_line(actor, actor_x - 17, 82, 120, 10)
  79.       
  80.       
  81.       draw_actor_sp_meter_line(actor, actor_x - 17, 98, 120, 10)
  82.       # HP数値の描写
  83.       self.contents.font.size = 18 # HP/SP数値の文字の大きさ
  84.       self.contents.font.color = Color.new(0,0,0,192)
  85.       self.contents.draw_text(actor_x, 72, 96, 24, actor.hp.to_s, 2)
  86.       self.contents.font.color = actor.hp == 0 ? knockout_color :
  87.       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  88.       self.contents.draw_text(actor_x-2, 70, 96, 24, actor.hp.to_s, 2)
  89.       # SP数値の描写
  90.       self.contents.font.color = Color.new(0,0,0,192)
  91.       self.contents.draw_text(actor_x, 88, 96, 24, actor.sp.to_s, 2)
  92.       self.contents.font.color = actor.sp == 0 ? knockout_color :
  93.       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  94.       self.contents.draw_text(actor_x-2, 86, 96, 24, actor.sp.to_s, 2)
  95.       # 用語「HP」と用語「SP」の描写
  96.       self.contents.font.size = 18 # 用語「HP/SP」の文字の大きさ
  97.       self.contents.font.color = Color.new(0,0,0,192)
  98.       self.contents.draw_text(actor_x - 7, 74, 196, 24, $data_system.words.hp)
  99.       self.contents.draw_text(actor_x - 7, 90, 196, 24, $data_system.words.sp)
  100.       self.contents.font.color = system_color # 用語「HP/SP」の文字の色
  101.       self.contents.draw_text(actor_x - 7, 72, 196, 24, $data_system.words.hp)
  102.       self.contents.draw_text(actor_x - 7, 88, 196, 24, $data_system.words.sp)
  103.       # ステートの描写
  104.       draw_actor_state(actor, actor_x-20, 103) #X- 55
  105.       # 描画角色姓名
  106.       #draw_actor_name(actor, actor_x-17, 103)
  107.       # 値を更新
  108.       @previous_hp[i] = actor.hp
  109.       @previous_sp[i] = actor.sp
  110.     end
  111.   end
  112. end
  113. #==============================================================================
  114. # ■ Window_Base
  115. #==============================================================================
  116. class Window_Base < Window
  117.   #--------------------------------------------------------------------------
  118.   # ● HPメーター の描画
  119.   #--------------------------------------------------------------------------
  120.   def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)
  121.     w = width * actor.hp / actor.maxhp
  122.     hp_color_1 = Color.new(255, 0, 0, 192)
  123.     hp_color_2 = Color.new(255, 255, 0, 192)
  124.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  125.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  126.     x -= 1
  127.     y += (height/4).floor
  128.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  129.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  130.     x -= 1
  131.     y += (height/4).ceil
  132.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  133.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  134.     x -= 1
  135.     y += (height/4).ceil
  136.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  137.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● SPメーター の描画
  141.   #--------------------------------------------------------------------------
  142.   def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)
  143.     w = width * actor.sp / actor.maxsp
  144.     hp_color_1 = Color.new( 0, 0, 255, 192)
  145.     hp_color_2 = Color.new( 0, 255, 255, 192)
  146.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  147.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  148.     x -= 1
  149.     y += (height/4).floor
  150.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  151.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  152.     x -= 1
  153.     y += (height/4).ceil
  154.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  155.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  156.     x -= 1
  157.     y += (height/4).ceil
  158.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  159.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 名前の描画
  163.   #--------------------------------------------------------------------------
  164.   alias xrxs_bp7_draw_actor_name draw_actor_name
  165.   def draw_actor_name(actor, x, y)
  166.     xrxs_bp7_draw_actor_name(actor, x, y) #if @draw_ban != true
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● ステートの描画
  170.   #--------------------------------------------------------------------------
  171.   alias xrxs_bp7_draw_actor_state draw_actor_state
  172.   def draw_actor_state(actor, x, y, width = 120)
  173.     xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● HP の描画
  177.   #--------------------------------------------------------------------------
  178.   alias xrxs_bp7_draw_actor_hp draw_actor_hp
  179.   def draw_actor_hp(actor, x, y, width = 144)
  180.     xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● SP の描画
  184.   #--------------------------------------------------------------------------
  185.   alias xrxs_bp7_draw_actor_sp draw_actor_sp
  186.   def draw_actor_sp(actor, x, y, width = 144)
  187.     xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true
  188.   end
  189. end
  190. #==============================================================================
  191. # ■ Scene_Battle
  192. #==============================================================================
  193. class Scene_Battle
  194.   #--------------------------------------------------------------------------
  195.   # ● フレーム更新
  196.   #--------------------------------------------------------------------------
  197.   alias xrxs_bp7_update update
  198.   def update
  199.     xrxs_bp7_update
  200.     # メッセージウィンドウ表示中の場合
  201.     if $game_temp.message_window_showing
  202.       @status_window.update_cp_only = true      
  203.     else
  204.       @status_window.update_cp_only = false
  205.     end
  206.   end
  207. end
  208. #==============================================================================
  209. # ◇ 外部ライブラリ
  210. #==============================================================================
  211. class Window_Base
  212.   #--------------------------------------------------------------------------
  213.   # ● ライン描画 軽量版 by 桜雅 在土
  214.   #--------------------------------------------------------------------------
  215.   def draw_lineght(start_x, start_y, end_x, end_y, start_color)
  216.     # 描写距離の計算。大きめに直角時の長さ。
  217.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  218.     # 描写開始
  219.     for i in 1..distance
  220.       x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  221.       y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  222.       self.contents.set_pixel(x, y, start_color)
  223.     end
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● ライン描画 by 桜雅 在土
  227.   #--------------------------------------------------------------------------
  228.   def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  229.     # 描写距離の計算。大きめに直角時の長さ。
  230.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  231.     # 描写開始
  232.     if end_color == start_color
  233.       for i in 1..distance
  234.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  235.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  236.         if width == 1
  237.           self.contents.set_pixel(x, y, start_color)
  238.         else
  239.           self.contents.fill_rect(x, y, width, width, start_color)
  240.         end
  241.       end
  242.     else
  243.       for i in 1..distance
  244.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  245.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  246.         r = start_color.red * (distance-i)/distance + end_color.red * i/distance
  247.         g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  248.         b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  249.         a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  250.         if width == 1
  251.           self.contents.set_pixel(x, y, Color.new(r, g, b, a))
  252.         else
  253.           self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
  254.         end
  255.       end
  256.     end
  257.   end
  258. end

复制代码

敌人:
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. # ■ エネミーHP&SP(ver 0.98)

  5. # □ カスタマイズポイント
  6. #==============================================================================
  7. module PLAN_HPSP_DRAW
  8. FONT_NAME         = ["黑体", "楷体", "宋体"]    # フォント
  9. FONT_SIZE         =  14                               # フォントサイズ
  10. FONT_BOLD         = true                              # 太字
  11. FONT_ITALIC       = true                              # 斜体

  12. DRAW_NAME         = false                             # 名前の描画
  13. DRAW_HP           = true                              # HP の描画
  14. DRAW_SP           = true                              # SP の描画

  15. DRAW_WIDTH        =  50                               # 描画幅
  16. DRAW_HEIGHT       = 3 * 32                            # 描画高さ
  17. DRAW_SPACE        =   0                               # 行間
  18. DRAW_Y            =  70                               # Y 座標修正値
  19. end


  20. #==============================================================================
  21. # ■ Sprite_Battler
  22. #==============================================================================

  23. class Sprite_Battler < RPG::Sprite
  24. #--------------------------------------------------------------------------
  25. # ● オブジェクト初期化
  26. #--------------------------------------------------------------------------
  27. alias plan_enemy_hpsp_draw_initialize initialize
  28. def initialize(viewport, battler = nil)
  29.    # 元のメソッドに戻す
  30.    plan_enemy_hpsp_draw_initialize(viewport, battler)
  31.    # エネミーの場合
  32.    if @battler.is_a?(Game_Enemy)
  33.      width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32
  34.      height = PLAN_HPSP_DRAW::DRAW_HEIGHT + 32
  35.      x = @battler.screen_x - width / 2
  36.      y = @battler.screen_y - height + 32 + PLAN_HPSP_DRAW::DRAW_Y
  37.      @enemy_hpsp_window = Window_Base.new(x, y, width, height)
  38.      @enemy_hpsp_window.contents = Bitmap.new(width - 32, height - 32)
  39.      @enemy_hpsp_window.contents.font.name = PLAN_HPSP_DRAW::FONT_NAME
  40.      @enemy_hpsp_window.contents.font.bold = PLAN_HPSP_DRAW::FONT_BOLD
  41.      @enemy_hpsp_window.contents.font.size = PLAN_HPSP_DRAW::FONT_SIZE
  42.      @enemy_hpsp_window.contents.font.italic = PLAN_HPSP_DRAW::FONT_ITALIC
  43.      y = 0
  44.      @old_enemy_hpsp = []
  45.      one_line = ((PLAN_HPSP_DRAW::FONT_SIZE * 100 / 28) * 32) / 100
  46.      if PLAN_HPSP_DRAW::DRAW_NAME
  47.        @enemy_hpsp_window.draw_actor_name(@battler, 0, y-10, width - 32)
  48.        y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
  49.        @old_enemy_hpsp.push(@battler.name)
  50.      end
  51.      if PLAN_HPSP_DRAW::DRAW_HP
  52.        @enemy_hpsp_window.draw_actor_hp2222(@battler, 0, y, width - 32)
  53.        y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
  54.        @old_enemy_hpsp.push(@battler.hp)
  55.      end
  56.      if PLAN_HPSP_DRAW::DRAW_SP
  57.        @enemy_hpsp_window.draw_actor_sp2222(@battler, 0, y, width - 32)
  58.        @old_enemy_hpsp.push(@battler.sp)
  59.      end
  60.      @enemy_hpsp_window.opacity = 0
  61.      @enemy_hpsp_window.contents_opacity = 0
  62.      @enemy_hpsp_window.z = -2
  63.    end
  64. end
  65. #--------------------------------------------------------------------------
  66. # ● 解放
  67. #--------------------------------------------------------------------------
  68. alias plan_enemy_hpsp_draw_dispose dispose
  69. def dispose
  70.    # エネミーの場合
  71.    if @battler.is_a?(Game_Enemy)
  72.      @enemy_hpsp_window.dispose
  73.    end
  74.    # 元のメソッドに戻す
  75.    plan_enemy_hpsp_draw_dispose
  76. end
  77. #--------------------------------------------------------------------------
  78. # ● フレーム更新
  79. #--------------------------------------------------------------------------
  80. alias plan_enemy_hpsp_draw_update update
  81. def update
  82.    # 元のメソッドに戻す
  83.    plan_enemy_hpsp_draw_update
  84.    # エネミーの場合
  85.    if @battler.is_a?(Game_Enemy)
  86.      @enemy_hpsp_window.visible = @battler_visible
  87.    # スプライトの座標を設定
  88.      width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32
  89.      @enemy_hpsp_window.x = self.x - width / 2
  90.      @now_enemy_hpsp = []
  91.      if PLAN_HPSP_DRAW::DRAW_NAME
  92.        @now_enemy_hpsp.push(@battler.name)
  93.      end
  94.      if PLAN_HPSP_DRAW::DRAW_HP
  95.        @now_enemy_hpsp.push(@battler.hp)
  96.      end
  97.      if PLAN_HPSP_DRAW::DRAW_SP
  98.        @now_enemy_hpsp.push(@battler.sp)
  99.      end
  100.      if @old_enemy_hpsp != @now_enemy_hpsp and $game_temp.enemy_hpsp_refresh
  101.        @old_enemy_hpsp = @now_enemy_hpsp
  102.        @enemy_hpsp_window.contents.clear
  103.        y = 0
  104.        width = PLAN_HPSP_DRAW::DRAW_WIDTH + 32
  105.        one_line = ((PLAN_HPSP_DRAW::FONT_SIZE * 100 / 28) * 32) / 100
  106.        if PLAN_HPSP_DRAW::DRAW_NAME
  107.          @enemy_hpsp_window.draw_actor_name(@battler, 0, y-10, width - 32)
  108.          y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
  109.        end
  110.        if PLAN_HPSP_DRAW::DRAW_HP
  111.          @enemy_hpsp_window.draw_actor_hp2222(@battler, 0, y, width - 32)
  112.          y += one_line + PLAN_HPSP_DRAW::DRAW_SPACE
  113.        end
  114.        if PLAN_HPSP_DRAW::DRAW_SP
  115.          @enemy_hpsp_window.draw_actor_sp2222(@battler, 0, y, width - 32)
  116.        end
  117.        Graphics.frame_reset
  118.      end
  119.    end
  120. end
  121. #--------------------------------------------------------------------------
  122. # ● visible の設定
  123. #--------------------------------------------------------------------------
  124. if !method_defined?("plan_enemy_hpsp_draw_visible=")
  125.    alias plan_enemy_hpsp_draw_visible= visible=
  126. end
  127. def visible=(bool)
  128.    # エネミーの場合
  129.    if @battler.is_a?(Game_Enemy)
  130.      @enemy_hpsp_window.visible = bool
  131.    end
  132.    # 元のメソッドに戻す
  133.    self.plan_enemy_hpsp_draw_visible=(bool)
  134. end
  135. #--------------------------------------------------------------------------
  136. # ● 不透明度の設定
  137. #--------------------------------------------------------------------------
  138. if !method_defined?("plan_enemy_hpsp_draw_opacity=")
  139.    alias plan_enemy_hpsp_draw_opacity= opacity=
  140. end
  141. def opacity=(n)
  142.    # 元のメソッドに戻す
  143.    self.plan_enemy_hpsp_draw_opacity=(n)
  144.    # エネミーの場合
  145.    if @battler.is_a?(Game_Enemy)
  146.      @enemy_hpsp_window.contents_opacity = n
  147.    end
  148. end
  149. #--------------------------------------------------------------------------
  150. # ● ダメージ
  151. #--------------------------------------------------------------------------
  152. def damage(value, critical)
  153.    super(value, critical)
  154.    bitmap = @_damage_sprite.bitmap
  155.    @_damage_sprite.dispose
  156.    @_damage_sprite = ::Sprite.new(Viewport.new(0, 0, 640, 480))
  157.    @_damage_sprite.bitmap = bitmap
  158.    @_damage_sprite.ox = 80
  159.    @_damage_sprite.oy = 20
  160.    @_damage_sprite.x = self.x
  161.    @_damage_sprite.y = self.y - self.oy / 2
  162.    @_damage_sprite.viewport.z = self.viewport.z + 1
  163.    @_damage_sprite.z = 3000
  164.    @_damage_duration = 40
  165. end
  166. #--------------------------------------------------------------------------
  167. # ● ダメージ解放
  168. #--------------------------------------------------------------------------
  169. def dispose_damage
  170.    if @_damage_sprite != nil
  171.      @_damage_sprite.viewport.dispose
  172.    end
  173.    super
  174. end
  175. end





  176. #==============================================================================
  177. # ■ Game_Temp
  178. #==============================================================================

  179. class Game_Temp
  180. #--------------------------------------------------------------------------
  181. # ● 公開インスタンス変数
  182. #--------------------------------------------------------------------------
  183. attr_accessor :enemy_hpsp_refresh
  184. #--------------------------------------------------------------------------
  185. # ● オブジェクト初期化
  186. #--------------------------------------------------------------------------
  187. alias plan_enemy_hpsp_draw_initialize initialize
  188. def initialize
  189.    # 元のメソッドに戻す
  190.    plan_enemy_hpsp_draw_initialize
  191.    @enemy_hpsp_refresh = false
  192. end
  193. end

  194. #==============================================================================
  195. # ■ Scene_Battle
  196. #==============================================================================

  197. class Scene_Battle
  198. #--------------------------------------------------------------------------
  199. # ● プレバトルフェーズ開始 (エネミー名+アルファベット用)
  200. #--------------------------------------------------------------------------
  201. alias plan_enemy_hpsp_draw_start_phase1 start_phase1
  202. def start_phase1
  203.    $game_temp.enemy_hpsp_refresh = true
  204.    # 元のメソッドに戻す
  205.    plan_enemy_hpsp_draw_start_phase1
  206. end
  207. #--------------------------------------------------------------------------
  208. # ● パーティコマンドフェーズ開始 (エネミー名+アルファベット用)
  209. #--------------------------------------------------------------------------
  210. alias plan_enemy_hpsp_draw_start_phase2 start_phase2
  211. def start_phase2
  212.    $game_temp.enemy_hpsp_refresh = false
  213.    # 元のメソッドに戻す
  214.    plan_enemy_hpsp_draw_start_phase2
  215. end
  216. #--------------------------------------------------------------------------
  217. # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  218. #--------------------------------------------------------------------------
  219. alias plan_enemy_hpsp_draw_update_phase4_step5 update_phase4_step5
  220. def update_phase4_step5
  221.    # 元のメソッドに戻す
  222.    plan_enemy_hpsp_draw_update_phase4_step5
  223.    $game_temp.enemy_hpsp_refresh = true
  224. end
  225. #--------------------------------------------------------------------------
  226. # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  227. #--------------------------------------------------------------------------
  228. alias plan_enemy_hpsp_draw_update_phase4_step6 update_phase4_step6
  229. def update_phase4_step6
  230.    # 元のメソッドに戻す
  231.    plan_enemy_hpsp_draw_update_phase4_step6
  232.    $game_temp.enemy_hpsp_refresh = false
  233.    
  234.    if @phase != 5
  235.     # 刷新状态窗口
  236.      @status_window.refresh
  237.    end
  238.    
  239. end
  240. end


  241. #==============================================================================
  242. # ■ Window_Base
  243. #==============================================================================

  244. class Window_Base < Window
  245. #--------------------------------------------------------------------------
  246. # ● 名前の描画
  247. #--------------------------------------------------------------------------
  248. def draw_actor_name(actor, x, y, width = 120, align = 0)
  249.    self.contents.font.color = normal_color
  250.    align = 1 if $scene.is_a?(Scene_Battle)
  251.    self.contents.draw_text(x, y, width, 32, actor.name, align)
  252. end
  253. #--------------------------------------------------------------------------
  254. # ● ステートの描画
  255. #--------------------------------------------------------------------------
  256. def draw_actor_state(actor, x, y, width = 120)
  257.    # 元のメソッドに戻す
  258.    text = make_battler_state_text(actor, width, true)
  259.    self.contents.draw_text(x, y, width, 32, text, 1)
  260. end
  261. end


  262. #==============================================================================
  263. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  264. #==============================================================================

  265. class Window_Base < Window
  266.   def draw_actor_hp2222(actor, x, y, width = 100, height=8)
  267.     y+=3
  268.     olx = x
  269.     oly = y
  270.     w = width * actor.hp / [actor.maxhp,1].max
  271.     hp_color_1 = Color.new(255, 0, 0, 192)
  272.     hp_color_2 = Color.new(255, 255, 0, 192)
  273.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  274.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  275.     x -= 1
  276.     y += (height/4).floor
  277.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  278.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  279.     x -= 1
  280.     y += (height/4).ceil
  281.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  282.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  283.     x -= 1
  284.     y += (height/4).ceil
  285.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  286.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  287.     x = olx
  288.     y = oly-14   
  289.     # 描绘字符串 "HP"
  290.     self.contents.font.color = system_color
  291.     self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
  292.     # 计算描绘 MaxHP 所需的空间
  293.     if width - 32 >= 108
  294.       hp_x = x + width - 108
  295.       flag = true
  296.     elsif width - 32 >= 48
  297.       hp_x = x + width - 48
  298.       flag = false
  299.     end
  300.     # 描绘 HP
  301.     #self.contents.font.color = actor.hp == 0 ? knockout_color :
  302.     #  actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  303.     #self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
  304.     # 描绘 MaxHP
  305.     if flag
  306.       self.contents.font.color = normal_color
  307.       self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
  308.       self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
  309.     end   
  310.   end
  311.   def draw_actor_sp2222(actor, x, y, width = 100, height = 8)
  312.     y+=3
  313.     olx = x
  314.     oly = y
  315.     w = width * actor.sp / [actor.maxsp,1].max
  316.     hp_color_1 = Color.new( 0, 0, 255, 192)
  317.     hp_color_2 = Color.new( 0, 255, 255, 192)
  318.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  319.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  320.     x -= 1
  321.     y += (height/4).floor
  322.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  323.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  324.     x -= 1
  325.     y += (height/4).ceil
  326.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  327.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  328.     x -= 1
  329.     y += (height/4).ceil
  330.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  331.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  332.     x = olx
  333.     y = oly-14
  334.     # 描绘字符串 "SP"
  335.     self.contents.font.color = system_color
  336.     self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
  337.     # 计算描绘 MaxSP 所需的空间
  338.     if width - 32 >= 108
  339.       sp_x = x + width - 108
  340.       flag = true
  341.     elsif width - 32 >= 48
  342.       sp_x = x + width - 48
  343.       flag = false
  344.     end
  345.     # 描绘 SP
  346.     #self.contents.font.color = actor.sp == 0 ? knockout_color :
  347.     #  actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  348.     #self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
  349.     # 描绘 MaxSP
  350.     if flag
  351.       self.contents.font.color = normal_color
  352.       self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
  353.       self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
  354.     end   
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● ライン描画 by 桜雅 在土
  358.   #--------------------------------------------------------------------------
  359.   def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  360.     # 描写距離の計算。大きめに直角時の長さ。
  361.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  362.     # 描写開始
  363.     if end_color == start_color
  364.       for i in 1..distance
  365.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  366.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  367.         if width == 1
  368.           self.contents.set_pixel(x, y, start_color)
  369.         else
  370.           self.contents.fill_rect(x, y, width, width, start_color)
  371.         end
  372.       end
  373.     else
  374.       for i in 1..distance
  375.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  376.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  377.         r = start_color.red * (distance-i)/distance + end_color.red * i/distance
  378.         g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  379.         b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  380.         a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  381.         if width == 1
  382.           self.contents.set_pixel(x, y, Color.new(r, g, b, a))
  383.         else
  384.           self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
  385.         end
  386.       end
  387.     end
  388.   end
  389. end
  390. #==============================================================================
  391. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  392. #==============================================================================
复制代码
水野的主页><
头像来自于游戏《龙背上的骑兵3》主角——Zero
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-25 20:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表