class Sprite_Character < RPG::Sprite #-------------------------------------------------------------------------- # ● 参数设置 正太君改 #-------------------------------------------------------------------------- # 设置图片文件名.不想要底图就让底图完全透明或设置为 "" # 图片放在 Graphics/Pictures/ 文件夹下 WFZDL = "蓝条战斗力" WFZDLBack = "战斗背景图" DFZDL = "红条战斗力" DFZDLBack = "战斗背景图" # 设置显示友军血条的开关号 #TeamHPBarSwitchID = 5 # 设置显示敌军血条的开关号 #EnemyHPBarSwitchID = 6 # 设置显示血条的开关号 HPBarSwitchID = 10 #禁止显示血条 开关 HPBarDOESNOTSwitchID = 6 # 被攻击后血条显示多久 HPbarTimeDisplay = 60 #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- #别名hzhj旧初始化使事件参数栏初始化 alias hzhj_old_init_make_event_param_bar initialize def initialize(*args)#定义初始化(*参数) @hp_sprite = Sprite.new(args[0])#@hp精灵=精灵.新(参数[0]) @hp_back_sprite = Sprite.new(args[0])#@hp后台精灵 = 精灵.新(参数[0]) @mp_sprite = Sprite.new(args[0]) @mp_back_sprite = Sprite.new(args[0]) @param_sprites = []#@参数精灵=[] @param_sprites << @hp_sprite# @参数精灵 << @hp精灵 @param_sprites << @hp_back_sprite# @参数精灵=@hp后台精灵 @param_sprites << @mp_sprite @param_sprites << @mp_back_sprite #@hp精灵。位图 = RPG::Cache.picture(HPBarFileName)绿色 @hp_sprite.bitmap = RPG::Cache.picture(HPBarFileName) #@hp后台精灵.位图= RPG::Cache.picture(HPBarBackFileName)#黑色 @hp_back_sprite.bitmap = RPG::Cache.picture(HPBarBackFileName)#黑色 @mp_sprite.bitmap = RPG::Cache.picture(MPBarFileName) @mp_back_sprite.bitmap = RPG::Cache.picture(MPBarBackFileName) #别名hzhj旧初始化使事件参数栏(*参数) hzhj_old_init_make_event_param_bar(*args) end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- #别名hzhj旧的布置使事件参数栏布置除非$@ alias hzhj_old_dispose_make_event_param_bar dispose unless $@ def dispose#定义可用 #@参数精灵。每个{|精灵|精灵.释放} @param_sprites.each{|sprite|sprite.dispose} #hzhj旧的布置生成事件参数栏 hzhj_old_dispose_make_event_param_bar end #-------------------------------------------------------------------------- # ● 获取事件 HP # 正太君改 #-------------------------------------------------------------------------- def event_hp#定义事件hp return 0 if @character.nil?#如果@角色,则返回0。无 return @character.hp#返回角色HP end #-------------------------------------------------------------------------- # ● 获取事件 MHP # 正太君改 #-------------------------------------------------------------------------- def event_mhp#定义事件MHP return 0 if @character.nil?#如果@角色,则返回0。无 return @character.hp_max#返回角色HP最大值 end #-------------------------------------------------------------------------- # ● 获取事件 MP # 正太君改 #-------------------------------------------------------------------------- def event_mp return 0 if @character.nil? return @character.sp if @character.is_a?(EFS_Hero) return @character.ammo #return @character.get_group.morale end #-------------------------------------------------------------------------- # ● 获取事件 MMP # 正太君改 #-------------------------------------------------------------------------- def event_mmp return 0 if @character.nil? return @character.sp_max if @character.is_a?(EFS_Hero) return @character.ammo_max #return 100 end #-------------------------------------------------------------------------- # ● 判断是否显示 HP 条 #-------------------------------------------------------------------------- def show_hp_bar?#是否显示hp栏? #return false if @character.is_a?(EFS_Hero) # 如果$场景,则返回假的。efs故事模式 return false if $scene.efs_story_mode #如果事件hp>0&&@角色已删除 &&表示与,意为同时都要满足。&&逻辑运算符,并且是双目运算符 if event_hp > 0 && !@character.removed #返回$游戏开关[HPBarSwitchID]||@角色.hp计数器>0 return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID] else #否则 return false#返回假的 end end #-------------------------------------------------------------------------- # ● 判断是否显示 MP 条 #-------------------------------------------------------------------------- def show_mp_bar? #return false if @character.is_a?(EFS_Hero) return false if $scene.efs_story_mode if event_mmp > 0 && !@character.removed return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID] else return false end end #-------------------------------------------------------------------------- # ● 更新画面 #-------------------------------------------------------------------------- #别名hzhj旧更新使事件参数栏更新 alias hzhj_old_update_make_event_param_bar update def update #定义更新 #hzhj旧更新生成事件参数栏 hzhj_old_update_make_event_param_bar #如果@角色.是_a?(EFS_战斗者) if !@character.is_a?(EFS_Battler) # @参数精灵。每个{|精灵|精灵.可见=假的} @param_sprites.each{|sprite|sprite.visible = false} else # 刷新 HP 可见状态 if show_hp_bar? #如果显示hp栏? #@hp精灵。可见=@hp后台精灵可见=真 @hp_sprite.visible = @hp_back_sprite.visible = true # @hp精灵。bitmap=角色扮演::缓存图片(“HPBar-E”)如果@角色。团队!=1. @hp_sprite.bitmap = RPG::Cache.picture("HPBar-E") if @character.team != 1 #wtf you doing #减少计数 # 除非$游戏切换[HPBarSwitchID] unless $game_switches[HPBarSwitchID] #如果@角色。hp计数器==hp条形时间显示 if @character.hp_counter == HPbarTimeDisplay @param_sprites.each do |sprite| #@参数精灵。每个做|精灵| sprite.opacity = 255 #精灵不透明度=255 end #els if@字符。hp计数器< HPbarTimeDisplay /3 elsif @character.hp_counter < HPbarTimeDisplay/3 @param_sprites.each do |sprite|#@参数精灵。每个做|精灵| ##精灵不透明度-=255/(HPbarTimeDisplay/3) sprite.opacity -= 255/(HPbarTimeDisplay/3) end end #@性格。hp计数器-=1 @character.hp_counter -= 1 else#否则 @param_sprites.each do |sprite|#@参数精灵。每个做|精灵| sprite.opacity = 255#精灵不透明度=255 end end # 刷新坐标 @param_sprites.each do |sprite|#@参数精灵。每个做|精灵| sprite.ox = sprite.bitmap.width / 2#精灵ox=精灵位图宽度/2 sprite.oy = sprite.bitmap.height#精灵.oy=精灵。位图高度 sprite.x = x #sprite.y = y - 52 #sprite.opacity = 255 shif = @character.is_cal#盖印图层=@角色。是计算函数 sprite.y = y - (shif ? 82 : 52)#精灵.y=y-(盖印图层?82:52) sprite.z = z#精灵.z = z end @hp_sprite.z += 1#hp_精灵.z = z @mp_sprite.z += 1 # 计算 HP 显示区域 #hp宽=(@hp 精灵.位图.宽*1.0*事件hp/事件mhp)。圆形的 hpw = (@hp_sprite.bitmap.width * 1.0 * event_hp / event_mhp).round # hp宽=[hp宽,@hp精灵位图宽度].最小值,0].最大值 hpw = [[hpw, @hp_sprite.bitmap.width].min, 0].max hph = @hp_sprite.bitmap.height#hp高=@hp精灵位图高度 #@hp精灵。src矩形。集合(0,0,hp宽,hp高) @hp_sprite.src_rect.set(0, 0, hpw, hph) # 刷新 MP 可见状态 @mp_sprite.visible = @mp_back_sprite.visible = (show_mp_bar? and event_mmp > 0) # 正太君改 if show_mp_bar? # 修正 HP 坐标 @hp_sprite.y -= (@mp_sprite.oy + 1) @hp_back_sprite.y = @hp_sprite.y # 计算 MP 显示区域 if event_mmp > 0 # 正太君改 mpw = (@mp_sprite.bitmap.width * 1.0 * event_mp / event_mmp).round mpw = [[mpw, @mp_sprite.bitmap.width].min, 0].max mph = @mp_sprite.bitmap.height @mp_sprite.src_rect.set(0, 0, mpw, mph) end end else @param_sprites.each{|sprite|sprite.visible = false} end end end end
我方战斗力.png (345.88 KB, 下载次数: 26)
敌方战斗力.png (345.39 KB, 下载次数: 27)
soulsaga 发表于 2024-1-18 23:51
74行~~~~~~~~~~~~~~
def get_battle_effective#定义获得实际战斗力 sum = 0#数字=0 @member.each do|group|#@每个do|组的成员| next if group.get_all_dead#如果下一个组。全部阵亡 num = group.calculate_effective#数字=组。计算有效 sum+= num #总和+=数字 end return sum.round*10 end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |