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

Project1

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

关于横版战斗显示脸图

 关闭 [复制链接]

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
帖子
4299

贵宾

跳转到指定楼层
1
发表于 2008-9-5 08:10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x


┌──────┬─────────────────────────────┐
│作者 : 玄月│关联教程 : 幻森版横版战斗显示脸图&图片菜单教程           │
├──────┼─────────────────────────────┤
│范例工程:有│声明 : 若要用到本效果请注明出处……以上……              │
└──────┴─────────────────────────────┘
范例下载连接 :http://rpg.blue/upload_program/f ... 6r版_101083035.rar


以下为教程……图片仅供参考,实际情况请根据范例内实物。


首先在Window_Base最后加上
  1.   #--------------------------------------------------------------------------
  2.   # ● 战斗时图形的描绘
  3.   #     actor : 角色
  4.   #     x     : 描画目标 X 坐标
  5.   #     y     : 描画目标 Y 坐标
  6.   #--------------------------------------------------------------------------
  7.   def draw_battle_actor(actor, x, y)
  8.     testname = actor.name+"_f"
  9.     bitmap=Bitmap.new("Graphics/Pictures/战斗脸图/#{testname}.png")   
  10.     cw = bitmap.width
  11.     ch = bitmap.height
  12.     src_rect = Rect.new(0, -20, cw, ch)
  13.     self.contents.blt(x - cw/20 , y-ch - 52, bitmap, src_rect)
  14.   end
  15. end
复制代码

这段脚本,然后把Window_BattleStatus的最后那个刷新画面那里改成这样
  1. #--------------------------------------------------------------------------
  2.   # ● 刷新画面
  3.   #--------------------------------------------------------------------------
  4.   def update
  5.     super
  6.     # 主界面的不透明度下降
  7.     if $game_temp.battle_main_phase
  8.       self.contents_opacity = 255
  9.     end
  10.   end
  11. end
复制代码

把Window_BattleStatus的supper值改成这样
super(-15, 180, 700, 320)
然后把下面改成这样
  1. #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     self.contents.clear
  6.     @item_max = $game_party.actors.size
  7.     for i in 0...$game_party.actors.size
  8.       actor = $game_party.actors[i]
  9.       actor_x = i * 163 +4
  10.       self.contents.font.size = 16
  11.       draw_actor_name(actor, actor_x, 245)
  12.       draw_battle_actor(actor,actor_x,292)
  13.       self.contents.font.size = 20
  14.       draw_actor_hp(actor, actor_x, 185, 120)
  15.       draw_actor_sp(actor, actor_x, 210, 120)
  16.       if @level_up_flags[i]
  17.         self.contents.font.color = normal_color
  18.         self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
  19.       else
  20.         self.contents.font.size = 16
  21.         draw_actor_state(actor, actor_x + 80, 245)
  22.       end
  23.     end
  24.   end
复制代码

此时基本上对齐了,因为战斗状态窗口把敌人的战斗图遮住了,只好修改scene_battle的脚本,使窗口的透明度为0,可是这样不是很美观,只好自己做张图片作为状态栏。
把Scene_Battle 1的相关代码改成这样
  1. @status_window = Window_BattleStatus.new
  2.     @status_window.z=9999
  3.     @status_window.opacity = 0
  4.     @test = Sprite.new
  5.     @test.z = 200
  6.     @test.bitmap = RPG::Cache.picture("系统图片/战斗状态.png")
复制代码

最后在下面释放窗口那里加上
@test.bitmap.dispose
这句。
最终效果图如下

关于那个战斗状态要自己画的,灵感来自某人的图片菜单教学。
“@”这个符号后面通常是自己定义一个变量名,常出现在图片显示中
然后脸图的坐标定义可以在Window_BattleStatus的
actor = $game_party.actors
actor_x = i * 163 +4
这里修改,这就是正确的教程了。以前那个逻辑上有点问题

忘了说了……
这个脚本要把Spriteset_Battle改成以下这样或者用地图战斗背景,否则很不美观,然后要自己更改战斗背景图的大小
  1. #==============================================================================
  2. # ■ Spriteset_Battle
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  5. # 的内部使用。
  6. #==============================================================================

  7. class Spriteset_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :viewport1                # 敌人方的显示端口
  12.   attr_reader   :viewport2                # 角色方的显示端口
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化变量
  15.   #--------------------------------------------------------------------------
  16.   def initialize
  17.     # 生成显示端口
  18.     @viewport1 = Viewport.new(0, 0, 640, 480)
  19.     @viewport2 = Viewport.new(0, 0, 640, 480)
  20.     @viewport3 = Viewport.new(0, 0, 640, 480)
  21.     @viewport4 = Viewport.new(0, 0, 640, 480)
  22.     @viewport2.z = 101
  23.     @viewport3.z = 200
  24.     @viewport4.z = 5000
  25.     # 生成战斗背景活动块
  26.     @battleback_sprite = Sprite.new(@viewport1)
  27.     # 生成敌人活动块
  28.     @enemy_sprites = []
  29.     for enemy in $game_troop.enemies.reverse
  30.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  31.     end
  32.     # 生成敌人活动块
  33.     @actor_sprites = []
  34.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  35.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  36.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  37.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  38.     # 生成天候
  39.     @weather = RPG::Weather.new(@viewport1)
  40.     # 生成图片活动块
  41.     @picture_sprites = []
  42.     for i in 51..100
  43.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  44.         $game_screen.pictures[i]))
  45.     end
  46.     # 生成计时器块
  47.     @timer_sprite = Sprite_Timer.new
  48.     # 刷新画面
  49.     update
  50.   end
  51.   #..........................................................................
  52.   #--------------------------------------------------------------------------
  53.   # ● 胜利图
  54.   #--------------------------------------------------------------------------
  55.   def win
  56.     for sprite in @actor_sprites
  57.       sprite.win
  58.     end
  59.   end
  60.   #..........................................................................
  61.   #--------------------------------------------------------------------------
  62.   # ● 释放
  63.   #--------------------------------------------------------------------------
  64.   def dispose
  65.     # 如果战斗背景位图存在的情况下就释放
  66.     if @battleback_sprite.bitmap != nil
  67.       @battleback_sprite.bitmap.dispose
  68.     end
  69.     # 释放战斗背景活动块
  70.     @battleback_sprite.dispose
  71.     # 释放敌人活动块、角色活动块
  72.     for sprite in @enemy_sprites + @actor_sprites
  73.       sprite.dispose
  74.     end
  75.     # 释放天候
  76.     @weather.dispose
  77.     # 释放图片活动块
  78.     for sprite in @picture_sprites
  79.       sprite.dispose
  80.     end
  81.     # 释放计时器活动块
  82.     @timer_sprite.dispose
  83.     # 释放显示端口
  84.     @viewport1.dispose
  85.     @viewport2.dispose
  86.     @viewport3.dispose
  87.     @viewport4.dispose
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 显示效果中判定
  91.   #--------------------------------------------------------------------------
  92.   def effect?
  93.     # 如果是在显示效果中的话就返回 true
  94.     for sprite in @enemy_sprites + @actor_sprites
  95.       return true if sprite.effect?
  96.     end
  97.     return false
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 刷新画面
  101.   #--------------------------------------------------------------------------
  102.   def update
  103.     # 刷新角色的活动块 (对应角色的替换)
  104.     @actor_sprites[0].battler = $game_party.actors[0]
  105.     @actor_sprites[1].battler = $game_party.actors[1]
  106.     @actor_sprites[2].battler = $game_party.actors[2]
  107.     @actor_sprites[3].battler = $game_party.actors[3]
  108.     # 战斗背景的文件名与现在情况有差异的情况下
  109.     if @battleback_name != $game_temp.battleback_name
  110.       @battleback_name = $game_temp.battleback_name
  111.       if @battleback_sprite.bitmap != nil
  112.         @battleback_sprite.bitmap.dispose
  113.       end
  114.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  115.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  116.     end
  117.     # 刷新战斗者的活动块
  118.     for sprite in @enemy_sprites + @actor_sprites
  119.       sprite.update
  120.     end
  121.     # 刷新天气图形
  122.     @weather.type = $game_screen.weather_type
  123.     @weather.max = $game_screen.weather_max
  124.     @weather.update
  125.     # 刷新图片活动块
  126.     for sprite in @picture_sprites
  127.       sprite.update
  128.     end
  129.     # 刷新计时器活动块
  130.     @timer_sprite.update
  131.     # 设置画面的色调与震动位置
  132.     @viewport1.tone = $game_screen.tone
  133.     @viewport1.ox = $game_screen.shake
  134.     # 设置画面的闪烁色
  135.     @viewport4.color = $game_screen.flash_color
  136.     # 刷新显示端口
  137.     @viewport1.update
  138.     @viewport2.update
  139.     @viewport4.update
  140.   end
  141. end
复制代码


Lv1.梦旅人

梦石
0
星屑
55
在线时间
5 小时
注册时间
2008-8-24
帖子
77
2
发表于 2008-9-5 16:07:25 | 只看该作者
谢谢先

我想问一下,就是那个“战斗脸图”中的图片是如何命名的,有规则吗?
闻一闻茶的香气哼一段旧时旋律
回复 支持 反对

使用道具 举报

Lv1.梦旅人

青天

梦石
0
星屑
86
在线时间
232 小时
注册时间
2007-12-15
帖子
2091

开拓者

3
发表于 2008-9-5 16:26:32 | 只看该作者
这是提问区耶~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
帖子
4299

贵宾

4
 楼主| 发表于 2008-9-5 20:24:28 | 只看该作者
细微小事不必在意………………
2l的问题………………
就是 “角色的名字”_f 这样就可以了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
5 小时
注册时间
2008-8-24
帖子
77
5
发表于 2008-9-6 00:28:26 | 只看该作者
好的,谢谢了
晚上回去测试
{/qiang}
闻一闻茶的香气哼一段旧时旋律
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

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

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

6
发表于 2008-9-6 02:31:58 | 只看该作者
我要你的完整版……
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

7
发表于 2008-9-6 02:36:45 | 只看该作者
Love 地图
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
8
发表于 2008-9-6 02:52:14 | 只看该作者
曾经用这种方法制作vx行走图纵版战斗 =v=
回复 支持 反对

使用道具 举报

Lv1.梦旅人

魔王 ⑨

梦石
0
星屑
90
在线时间
379 小时
注册时间
2006-10-16
帖子
4299

贵宾

9
 楼主| 发表于 2008-9-6 03:51:00 | 只看该作者
以下引用越前リョーマ于2008-9-5 18:31:58的发言:

我要你的完整版……

什么意思?要发个工程么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
5 小时
注册时间
2008-8-24
帖子
77
10
发表于 2008-9-6 04:22:51 | 只看该作者
唉,我也试了,还是报错了呀

怎么会这样啊


楼主能发个工程吗?我也调试不了...
闻一闻茶的香气哼一段旧时旋律
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 10:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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