Project1

标题: 战斗敌人名字 [打印本页]

作者: 白萌奈奈    时间: 2010-6-29 21:03
标题: 战斗敌人名字
我用了这个代码在默认的战斗侧过,攻击的时候敌人名字是消失了。攻击完敌人名字恢复了。用在关重七那宠物脚本里头怎么不行了。攻击名字是会消失,消失后就不在显示出来.........帮我修改一下
  1. class Spriteset_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化变量
  4.   #--------------------------------------------------------------------------
  5.   def initialize
  6.     # 生成显示端口
  7.     @viewport1 = Viewport.new(0, 0, 640, 320)
  8.     @viewport2 = Viewport.new(0, 0, 640, 480)
  9.     @viewport3 = Viewport.new(0, 0, 640, 480)
  10.     @viewport4 = Viewport.new(0, 0, 640, 480)
  11.     @viewport2.z = 101
  12.     @viewport3.z = 200
  13.     @viewport4.z = 5000
  14.     # 生成战斗背景活动块
  15.     @battleback_sprite = Sprite.new(@viewport1)
  16.     # 生成敌人活动块
  17.     @enemy_sprites = []
  18.     for enemy in $game_troop.enemies.reverse
  19.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  20.     end
  21.     @enemy_names = []
  22.     for enemy in $game_troop.enemies
  23.       @enemy_names.push(Sprite.new(@viewport1))
  24.       @enemy_names[-1].bitmap = Bitmap.new(128,32)
  25.       @enemy_names[-1].bitmap.font.color = Color.new(125,0,125,255)
  26.       @enemy_names[-1].bitmap.draw_text(0,0,128,32,enemy.name)
  27.       @enemy_names[-1].x = enemy.screen_x - 20
  28.       @enemy_names[-1].y = enemy.screen_y - 30
  29.       @enemy_names[-1].z = 999
  30.     end
  31.     # 生成敌人活动块
  32.     @actor_sprites = []
  33.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  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.     # 生成天候
  38.     @weather = RPG::Weather.new(@viewport1)
  39.     # 生成图片活动块
  40.     @picture_sprites = []
  41.     for i in 51..100
  42.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  43.         $game_screen.pictures[i]))
  44.     end
  45.     # 生成计时器块
  46.     @timer_sprite = Sprite_Timer.new
  47.     # 刷新画面
  48.     update
  49.   end
  50.   def hide_name(i)
  51.     @enemy_names[i].opacity = 0 if i != nil
  52.   end
  53.   def appear_name(i)  #貌似翻了应该是name appear
  54.     @enemy_names[i].opacity = 255 if i != nil
  55.   end
  56. end
  57. class Game_Enemy
  58.   attr_reader  :member_index
  59. end
  60. class Scene_Battle
  61.   alias u update_phase4_step3
  62.   def update_phase4_step3
  63.     if @active_battler.is_a?(Game_Enemy)

  64.       @spriteset.hide_name(@active_battler.member_index)
  65.     end
  66.     u
  67.   end
  68.   alias u4 update_phase4_step4
  69.   def update_phase4_step4
  70.     for i in @target_battlers
  71.       if i.is_a?(Game_Enemy)
  72.         @spriteset.hide_name(i.member_index)
  73.       end
  74.     end
  75.     u4
  76.   end
  77.   alias up update
  78.   def update
  79.     if @wait_count == 1
  80.       @spriteset.appear_name(@active_battler.member_index) if @active_battler.is_a?(Game_Enemy)
  81.       for i in @target_battlers
  82.         @spriteset.appear_name(i.member_index) if i.is_a?(Game_Enemy)
  83.       end
  84.     end
  85.     up
  86.   end
  87. end
复制代码

作者: 紫苏    时间: 2010-7-4 01:03
能否上传工程,浪费你三分钟,省掉回答的人十分钟
作者: 逸豫    时间: 2010-7-4 01:06
本帖最后由 逸豫 于 2010-7-4 01:15 编辑

这个脚本好眼熟的样子……

貌似是我写的……给出一下此脚本的工作流程

在Spriteset_Battle生成显示名称的精灵的数组
然后定义方法hide_name appear_name
具体作用我相信方法的名称已经泄漏了……
然后在Game_Enemy添加方法member_index返回敌人的队伍中id
然后在显示动画的方法中添加,如果显示动画的是敌人,则隐藏名称
在update中判定如果动画还剩1帧放完的话(为什么是1帧不解释……),就显示对方象名称和活动战斗着名称,当然,是在敌人的情况下

从隐藏后不显示可以看出应该是update方法出了问题,请查看外挂脚本的Scene_Battler的update方法




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1