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

Project1

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

[已经解决] 战斗显示名字

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
跳转到指定楼层
1
发表于 2022-4-24 20:52:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 黑米馒头 于 2022-4-24 20:55 编辑

下面这个脚本,可以显示角色名字,如何改成人物死亡名字不显示~
[fold][/fold]

  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, 1024, 768)
  19.     @viewport2 = Viewport.new(0, 0, 1024, 768)
  20.     @viewport3 = Viewport.new(0, 0, 1024, 768)
  21.     @viewport4 = Viewport.new(0, 0, 1024, 768)
  22.     @viewport2.z = 101
  23.     @viewport3.z = 200
  24.     @viewport4.z = 5000
  25.     # 生成战斗背景活动块
  26.     @battleback_sprite = Sprite.new(@viewport1)
  27.     # 生成敌人活动块
  28.     @enemy_sprites = []
  29.     @enemy_name = []
  30.     # 银~添加名字缓存数组(步骤1
  31.     @name2 = []
  32.     # ===================(步骤1 end
  33. for enemy in $game_troop.enemies.reverse
  34.     # 银~给名字缓存数组塞敌人队伍成员名字(步骤2
  35.     @name2.push(enemy.name)
  36.     # ===================================(步骤2 end
  37.     @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  38.     @enemy_name.push(Sprite.new(@viewport1))
  39.     @enemy_name[-1].bitmap = Bitmap.new(240,32)
  40.     @enemy_name[-1].bitmap.font.name = (["宋体","黑体"])
  41.     @enemy_name[-1].bitmap.font.size = 16
  42.     @enemy_name[-1].bitmap.font.color.set(255, 255, 128)
  43.     @enemy_name[-1].bitmap.draw_text(0,0,240,32,enemy.name,1)
  44.     @enemy_name[-1].x = enemy.screen_x - 488+13-112
  45.     @enemy_name[-1].y = enemy.screen_y - 133+15
  46.     @enemy_name[-1].z = enemy.screen_z# + 10
  47.   end
  48.     # 生成敌人活动块
  49.     @actor_sprites = []
  50.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  51.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  52.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  53.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  54.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  55.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  56.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  57.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  58.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  59.     @actor_sprites.push(Sprite_Battler.new(@viewport1))
  60.     @name = []
  61.     @name_sprites = []
  62.   for i in $game_party.actors
  63.     @name.push(i.name)
  64.     @name_sprites.push(Sprite.new(@viewport1))
  65.     @name_sprites[-1].bitmap = Bitmap.new(240,32)
  66.     @name_sprites[-1].bitmap.font.name = (["宋体","黑体"])
  67.     @name_sprites[-1].bitmap.font.size = 16
  68.     @name_sprites[-1].bitmap.font.color.set(60, 255, 120)
  69.     @name_sprites[-1].bitmap.draw_text(0,0,240,32,i.name,1)
  70.     @name_sprites[-1].x = i.screen_x - 488+13-112
  71.     @name_sprites[-1].y = i.screen_y - 133+15
  72.     @name_sprites[-1].z = i.s_z# + 10
  73.   end
  74.     # 生成天候
  75.     @weather = RPG::Weather.new(@viewport1)
  76.     # 生成图片活动块
  77.     @picture_sprites = []
  78.     for i in 51..100
  79.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  80.         $game_screen.pictures[i]))
  81.     end
  82.     # 生成计时器块
  83.     @timer_sprite = Sprite_Timer.new
  84.     # 刷新画面
  85.     update
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 释放
  89.   #--------------------------------------------------------------------------
  90.   def dispose
  91.     # 如果战斗背景位图存在的情况下就释放
  92.     if @battleback_sprite.bitmap != nil
  93.       @battleback_sprite.bitmap.dispose
  94.     end
  95.     # 释放战斗背景活动块
  96.     @battleback_sprite.dispose
  97.     # 释放敌人活动块、角色活动块
  98.     for sprite in @enemy_sprites + @actor_sprites
  99.       sprite.dispose
  100.     end
  101.     # 释放天候
  102.     @weather.dispose
  103.     # 释放图片活动块
  104.     for sprite in @picture_sprites
  105.       sprite.dispose
  106.     end
  107.     # 释放计时器活动块
  108.     @timer_sprite.dispose
  109.     # 释放显示端口
  110.     @viewport1.dispose
  111.     @viewport2.dispose
  112.     @viewport3.dispose
  113.     @viewport4.dispose
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 显示效果中判定
  117.   #--------------------------------------------------------------------------
  118.   def effect?
  119.     # 如果是在显示效果中的话就返回 true
  120.     for sprite in @enemy_sprites + @actor_sprites
  121.       return true if sprite.effect?
  122.     end
  123.     return false
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 刷新画面
  127.   #--------------------------------------------------------------------------
  128.   def update
  129.     # 刷新角色的活动块 (对应角色的替换)
  130.     @actor_sprites[0].battler = $game_party.actors[0]
  131.     @actor_sprites[1].battler = $game_party.actors[1]
  132.     @actor_sprites[2].battler = $game_party.actors[2]
  133.     @actor_sprites[3].battler = $game_party.actors[3]
  134.     @actor_sprites[4].battler = $game_party.actors[4]
  135.     @actor_sprites[5].battler = $game_party.actors[5]
  136.     @actor_sprites[6].battler = $game_party.actors[6]
  137.     @actor_sprites[7].battler = $game_party.actors[7]
  138.     @actor_sprites[8].battler = $game_party.actors[8]
  139.     @actor_sprites[9].battler = $game_party.actors[9]
  140.     temp = []
  141.     for i in $game_party.actors
  142.       temp.push(i.name)
  143.     end
  144.     if !(temp == @name)
  145.       @name_sprites.each{|fuck| fuck.dispose} #==========释放名字==============
  146.       @name_sprites = []
  147.       for i in $game_party.actors
  148.         @name_sprites.push(Sprite.new(@viewport1))
  149.         @name_sprites[-1].bitmap = Bitmap.new(240,32)
  150.         @name_sprites[-1].bitmap.font.name = (["宋体","黑体"])
  151.         @name_sprites[-1].bitmap.font.size = 16
  152.         @name_sprites[-1].bitmap.font.color.set(60, 255, 120)
  153.         @name_sprites[-1].bitmap.draw_text(0,0,240,32,i.name,1)
  154.         @name_sprites[-1].x = i.screen_x - 488+13-112
  155.         @name_sprites[-1].y = i.screen_y - 133+15
  156.         @name_sprites[-1].z =  i.s_z# + 10
  157.       end
  158.       @name = temp
  159.     end
  160.    
  161.     # 银~以下是有条件刷新(步骤3
  162.     # 建立临时对比数组
  163.     temp2 = []
  164.     # 给临时数组塞最新的敌人成员名字
  165.     for enemy in $game_troop.enemies.reverse
  166.       temp2.push(enemy.name)
  167.     end
  168.     # 如果不是临时数组跟开始的缓存数组相同
  169.     if !(temp2 == @name2)
  170.       # 消除原来的描画(不知道有什么意义~~囧
  171.       for enemy in $game_troop.enemies.reverse
  172.         @enemy_name[-1].bitmap.clear
  173.       end
  174.       # 初始化敌人名字精灵组
  175.       @enemy_name.each{|fuck| fuck.dispose} #==========释放名字================
  176.       @enemy_name = []
  177.       # 再描画敌人名字
  178.       for enemy in $game_troop.enemies.reverse
  179.         @enemy_name.push(Sprite.new(@viewport1))
  180.         @enemy_name[-1].bitmap = Bitmap.new(240,32)
  181.         @enemy_name[-1].bitmap.font.name = (["宋体","黑体"])
  182.         @enemy_name[-1].bitmap.font.size = 16
  183.         @enemy_name[-1].bitmap.font.color.set(255, 255, 128)
  184.         @enemy_name[-1].bitmap.draw_text(0,0,240,32,enemy.name,1)
  185.         @enemy_name[-1].x = enemy.screen_x - 488+13-112
  186.         @enemy_name[-1].y = enemy.screen_y - 133+15
  187.         @enemy_name[-1].z = enemy.screen_z# + 10
  188.       end
  189.       # 把临时组代入名字缓存组
  190.       @name2 = temp2
  191.     end
  192.     # ==================(步骤3 end

  193.   for i in 0...$game_troop.enemies.size
  194.     @enemy_name[i].x = @enemy_sprites[i].x - 110
  195.     @enemy_name[i].y = @enemy_sprites[i].y - 116
  196.     @enemy_name[i].z = @enemy_sprites[i].z# - 10
  197.   end
  198.    
  199. #==================战斗的时候影响到名字显示在战斗图上面==================     
  200.   for i in 0...$game_party.actors.size
  201.     @name_sprites[i].x = @actor_sprites[i].x - 110
  202.     @name_sprites[i].y = @actor_sprites[i].y - 116
  203.     @name_sprites[i].z = @actor_sprites[i].z# + 10
  204.   end   
  205. #==================战斗的时候影响到名字显示在战斗图上面==================   
  206.   for i in 0...$game_party.actors.size
  207.     @name_sprites[i].z = @actor_sprites[i].z# - 10
  208.   end
  209. #==================战斗的时候影响到名字显示在战斗图上面==================


  210.    # 战斗背景的文件名与现在情况有差异的情况下
  211.     if @battleback_name != $game_temp.battleback_name
  212.       @battleback_name = $game_temp.battleback_name
  213.       if @battleback_sprite.bitmap != nil
  214.         @battleback_sprite.bitmap.dispose
  215.       end
  216.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  217.       @battleback_sprite.src_rect.set(0, 0, 1024, 768)
  218.     end
  219.     # 刷新战斗者的活动块
  220.     for sprite in @enemy_sprites + @actor_sprites
  221.       sprite.update
  222.     end
  223.     # 刷新天气图形
  224.     @weather.type = $game_screen.weather_type
  225.     @weather.max = $game_screen.weather_max
  226.     @weather.update
  227.     # 刷新图片活动块
  228.     for sprite in @picture_sprites
  229.       sprite.update
  230.     end
  231.     # 刷新计时器活动块
  232.     @timer_sprite.update
  233.     # 设置画面的色调与震动位置
  234.     @viewport1.tone = $game_screen.tone
  235.     @viewport1.ox = $game_screen.shake
  236.     # 设置画面的闪烁色
  237.     @viewport4.color = $game_screen.flash_color
  238.     # 刷新显示端口
  239.     @viewport1.update
  240.     @viewport2.update
  241.     @viewport4.update
  242.   end
  243. end

复制代码



Lv5.捕梦者

梦石
0
星屑
37789
在线时间
5399 小时
注册时间
2006-11-10
帖子
6546
2
发表于 2022-4-24 20:59:44 | 只看该作者
148行下面加一句  next if i.dead?

点评

还是没效果...  发表于 2022-4-24 22:27
143 行改成 temp.push(i.name) if !i.dead?  发表于 2022-4-24 22:14
这句加了没效果~~~  发表于 2022-4-24 21:38
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
3
 楼主| 发表于 2022-4-24 22:43:12 | 只看该作者
灯笼菜刀王 发表于 2022-4-24 20:59
148行下面加一句  next if i.dead?

都不行
死亡显示名字.rar (907.85 KB, 下载次数: 3)
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37789
在线时间
5399 小时
注册时间
2006-11-10
帖子
6546
4
发表于 2022-4-24 23:42:41 | 只看该作者
本帖最后由 灯笼菜刀王 于 2022-4-26 10:26 编辑

真是麻烦, 我重写个新的给你好了

把它塞到main前即可

  1. class Sprite_Battler < RPG::Sprite
  2.   alias oxox_update update
  3.   def update
  4.     oxox_update
  5.     if @battler.nil?
  6.       name_dispose
  7.       @bname = nil
  8.       return
  9.     end
  10.     if @bname != @battler.name
  11.       @bname = @battler.name
  12.       name_dispose
  13.       @name_spr = Sprite.new(self.viewport)
  14.       @name_spr.bitmap = Bitmap.new(242,18)
  15.       @name_spr.bitmap.font.size = 16
  16.       @name_spr.bitmap.font.name = (["宋体","黑体"])
  17.       @name_spr.bitmap.font.color.set(0,0,0)
  18.       @name_spr.bitmap.draw_text(0,0,240,16,@bname,1)
  19.       @name_spr.bitmap.draw_text(1,0,240,16,@bname,1)
  20.       @name_spr.bitmap.draw_text(2,0,240,16,@bname,1)
  21.       @name_spr.bitmap.draw_text(0,1,240,16,@bname,1)
  22.       @name_spr.bitmap.draw_text(2,1,240,16,@bname,1)
  23.       @name_spr.bitmap.draw_text(0,2,240,16,@bname,1)
  24.       @name_spr.bitmap.draw_text(1,2,240,16,@bname,1)
  25.       @name_spr.bitmap.draw_text(2,2,240,16,@bname,1)
  26.       @name_spr.bitmap.font.color.set(255,255,255)
  27.       @name_spr.bitmap.draw_text(1,1,240,16,@bname,1)
  28.     end
  29.     name_xy
  30.   end
  31.   def name_dispose
  32.     return if @name_spr.nil?
  33.     @name_spr.dispose
  34.     @name_spr.bitmap.dispose
  35.     @name_spr = nil
  36.   end
  37.   def name_xy
  38.     return if @name_spr.nil?
  39.     @name_spr.x = self.x - 121
  40.     @name_spr.y = self.y - @height - 32
  41.     @name_spr.z = self.z + 1888
  42.     @name_spr.opacity = self.opacity if @battler.id <= (@battler.is_a?(Game_Actor) ? 50 : 30) or [email protected]?
  43.     @name_spr.visible = self.visible
  44.   end
  45.   alias oxox_dispose dispose
  46.   def dispose
  47.     oxox_dispose
  48.     name_dispose
  49.   end
  50. end
复制代码

点评

43行改成 @name_spr.visible = self.visible 兼容比较好  发表于 2022-4-25 15:41
43行注释掉  发表于 2022-4-25 15:29
用你的脚本有个BUG,现在是角色要死亡了名字直接消失,战斗图还在,如何改成名字和战斗图同时消失,  发表于 2022-4-25 07:23

评分

参与人数 1星屑 +100 +1 收起 理由
RyanBern + 100 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
5
 楼主| 发表于 2022-4-25 16:13:00 | 只看该作者
灯笼菜刀王 发表于 2022-4-24 23:42
真是麻烦, 我重写个新的给你好了

把它塞到main前即可

帮我加两个变量,角色ID大于50的死亡显示名字,其他的不显示名字,敌人的话是大于30的显示名字,其他不显示名字,谢谢了

点评

更新  发表于 2022-4-26 10:27
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3181
在线时间
1863 小时
注册时间
2010-6-19
帖子
1205
6
 楼主| 发表于 2022-4-26 20:32:51 | 只看该作者
灯笼菜刀王 发表于 2022-4-24 23:42
真是麻烦, 我重写个新的给你好了

把它塞到main前即可

完美解决
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 14:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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