Project1
标题:
战斗敌人名字
[打印本页]
作者:
白萌奈奈
时间:
2010-6-29 21:03
标题:
战斗敌人名字
我用了这个代码在默认的战斗侧过,攻击的时候敌人名字是消失了。攻击完敌人名字恢复了。用在关重七那宠物脚本里头怎么不行了。攻击名字是会消失,消失后就不在显示出来.........帮我修改一下
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● 初始化变量
#--------------------------------------------------------------------------
def initialize
# 生成显示端口
@viewport1 = Viewport.new(0, 0, 640, 320)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# 生成战斗背景活动块
@battleback_sprite = Sprite.new(@viewport1)
# 生成敌人活动块
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
@enemy_names = []
for enemy in $game_troop.enemies
@enemy_names.push(Sprite.new(@viewport1))
@enemy_names[-1].bitmap = Bitmap.new(128,32)
@enemy_names[-1].bitmap.font.color = Color.new(125,0,125,255)
@enemy_names[-1].bitmap.draw_text(0,0,128,32,enemy.name)
@enemy_names[-1].x = enemy.screen_x - 20
@enemy_names[-1].y = enemy.screen_y - 30
@enemy_names[-1].z = 999
end
# 生成敌人活动块
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
# 生成天候
@weather = RPG::Weather.new(@viewport1)
# 生成图片活动块
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 刷新画面
update
end
def hide_name(i)
@enemy_names[i].opacity = 0 if i != nil
end
def appear_name(i) #貌似翻了应该是name appear
@enemy_names[i].opacity = 255 if i != nil
end
end
class Game_Enemy
attr_reader :member_index
end
class Scene_Battle
alias u update_phase4_step3
def update_phase4_step3
if @active_battler.is_a?(Game_Enemy)
@spriteset.hide_name(@active_battler.member_index)
end
u
end
alias u4 update_phase4_step4
def update_phase4_step4
for i in @target_battlers
if i.is_a?(Game_Enemy)
@spriteset.hide_name(i.member_index)
end
end
u4
end
alias up update
def update
if @wait_count == 1
@spriteset.appear_name(@active_battler.member_index) if @active_battler.is_a?(Game_Enemy)
for i in @target_battlers
@spriteset.appear_name(i.member_index) if i.is_a?(Game_Enemy)
end
end
up
end
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