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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 金芒芒
打印 上一主题 下一主题

[有事请教] [已解决]每个@hp_sprite.间隔87

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6296
在线时间
1104 小时
注册时间
2015-8-15
帖子
658
11
 楼主| 发表于 2023-11-11 15:15:57 | 只看该作者
soulsaga 发表于 2023-11-11 15:08
我搞不定了..放弃

sprite.x =115+ {1=>87,2=>174,3=>261, 4=>348, 5=>435,6=>609,7=>696,=>8=>783,9=>870,10=>957}
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33193
在线时间
10491 小时
注册时间
2009-3-15
帖子
4756
12
发表于 2023-11-11 15:51:13 | 只看该作者
本帖最后由 soulsaga 于 2023-11-12 21:38 编辑
金芒芒 发表于 2023-11-11 15:15
sprite.x =115+ {1=>87,2=>174,3=>261, 4=>348, 5=>435,6=>609,7=>696,=>8=>783,9=>870,10=>957}


我想到了

RUBY 代码复制
  1. a=[87,174,261,348,435,609,696,783,870,957]
  2.  
  3. if !a.empty?
  4. sprite.x = 115+a[0]
  5. a.delete_at(0)
  6. end
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6296
在线时间
1104 小时
注册时间
2015-8-15
帖子
658
13
 楼主| 发表于 2023-11-14 08:27:57 | 只看该作者
本帖最后由 金芒芒 于 2023-11-14 08:38 编辑


命名错误

未定义的局部变量或方法“”


如果a=$scene.group_lisenter.include?(@character.group)小组编号
b=87   
sprite.x = 115+b*a



def create_empty_army#定义创建空的军队
    @character_name =  ""#@人物名称=  ""
    @the_name        = ""#@名字       = ""
    group1 = []
    group2 = []
    group3 = []
    group4 = []
    group5 = []
    @group_one = EFS_Groups.new(group1)
    @group_two = EFS_Groups.new(group2)   
    @group_tree = EFS_Groups.new(group3)
    @group_four = EFS_Groups.new(group4)
    @group_five = EFS_Groups.new(group5)
    #@成员 =  [@组一,@组二,@组三,@组四,@组五]
    @Member = [@group_one,@group_two,@group_tree,@group_four,@group_five]
  end
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6296
在线时间
1104 小时
注册时间
2015-8-15
帖子
658
14
 楼主| 发表于 2023-11-16 13:15:59 | 只看该作者
本帖最后由 金芒芒 于 2023-11-16 13:24 编辑


这是菜刀王的脚本
  1. class Spr_map_head < RPG::Spriet#地图精灵头像类< RPG::精灵
  2.   def initialize(ary,x,y,宽=640,间隔=0)#定义初始(人名,x,y,宽=640,间隔=0)
  3.     super()
  4.     self.bitmap = Bitmap.new(640,480)
  5.     self.z = 180
  6.     refresh(ary,x,y,横,间隔)#刷新(人名,x,y,横,间隔)
  7.   end
  8.   def refresh(ary,x,y,宽=640,间隔=0)#定义(人名,x,y,宽=640,间隔=0)
  9.     self.bitmap.clear#自己位图明确的
  10.     a,b = x,y
  11.     for i in ary.flatten #用于我在进制。压平
  12.       bit = RPG::Cache.picture("头像#{i}") ;w,h = bit.width,bit.height
  13.       (b += h + 间隔 ; a = x) if a + w + 间隔 >= 宽
  14.       self.bitmap.blt(a,b,bit,Rect.new(0,0,w,h))
  15.       a += w + 间隔
  16.     end
  17.   end
  18. end

  19. class Interpreter #解释程序类
  20.   def 显示头像(ary,x,y,宽=640,间隔=0)
  21.     if @head_spr.nil?
  22.       @head_spr = Spr_map_head.new(ary,x,y,宽,间隔)
  23.     else
  24.       @head_spr.refresh(ary,x,y,宽,间隔)
  25.     end
  26.   end
  27.   def 关闭头像
  28.     return if @head_spr.nil?
  29.     @head_spr.dispose ;@head_spr.bitmap.dispose ; @head_spr = nil
  30.   end
  31.   end
复制代码


这是原来作者的脚本
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 事件头上显血条 RMXP
  3.   #--------------------------------------------------------------------------
  4.   #  作者:后知后觉
  5.   #  日期:2012-6-26
  6.   #  版本:1.0
  7.   #  申明:刺夜之枪定制
  8.   #        [url]http://bbs.66rpg.com/thread-237126-1-1.html[/url]
  9. #==============================================================================
  10. #==============================================================================
  11. # ■ Sprite_Character
  12. #==============================================================================
  13.  
  14. class Sprite_Character < RPG::Sprite
  15.  
  16.   if $creat_bar
  17.   #--------------------------------------------------------------------------
  18.   # ● 参数设置
  19.   #--------------------------------------------------------------------------
  20.   # 设置图片文件名.不想要底图就让底图完全透明或设置为 ""
  21.   # 图片放在 Graphics/Pictures/ 文件夹下
  22.   HPBarFileName = "HPBar"
  23.   HPBarBackFileName = "HPBarBack"
  24.   MPBarFileName = "MPBar"
  25.   MPBarBackFileName = "MPBarBack"
  26.  
  27.  
  28.   # 设置需要显示 HP 条的事件 id
  29.  
  30.   ShowHPBarEventID = []
  31.   for i in 1..$EFS_Number_Teammate-1
  32.     ShowHPBarEventID << $Team_Fighter[i].eventId
  33.   end  
  34.  
  35.   # 设置需要显示 MP 条的事件 id
  36.   ShowMPBarEventID = []
  37.  
  38.   # 设置当开关打开后.对应的条消失
  39.   # 这是一个哈希表, =>符号左边的为“键”,右边的为“值”
  40.   # 键=>值 与 键=>值 之间用半角的 , 号分开
  41.   # 键为事件id,值为开关id
  42.   ShowBarSwitchID = {1 => 1,  3 => 2,  5 => 3,  7 => 4,  9 => 5,
  43.                     11 => 6, 13 => 7, 15 => 8, 17 => 9, 19 => 10}
  44.   # 设置 hp 和 mhp 对应的变量id
  45.   # 键为事件id 值为一个数组.
  46.   # 数组中左边数字为 hp变量id,右边的数字为mhp变量id
  47.   HPVariableID = {1 => [26,141],  11 => [31,146],
  48.                   3 => [27,142],  13 => [32,147],
  49.                   5 => [28,143],  15 => [33,148],
  50.                   7 => [29,144],  17 => [34,149],
  51.                   9 => [30,145],  19 => [35,150]}
  52.   # 设置 mp 和 mmp 的变量id.方法同上
  53.   MPVariableID = {1 => [138,139]}
  54.  
  55.   #--------------------------------------------------------------------------
  56.   # ● 初始化对像
  57.   #--------------------------------------------------------------------------
  58.   alias hzhj_old_init_make_event_param_bar initialize
  59.   def initialize(*args)
  60.     @hp_sprite = Sprite.new(args[0])
  61.     @hp_back_sprite = Sprite.new(args[0])
  62.     @mp_sprite = Sprite.new(args[0])
  63.     @mp_back_sprite = Sprite.new(args[0])
  64.     @param_sprites = []
  65.     @param_sprites << @hp_sprite
  66.     @param_sprites << @hp_back_sprite
  67.     @param_sprites << @mp_sprite
  68.     @param_sprites << @mp_back_sprite
  69.     @hp_sprite.bitmap = RPG::Cache.picture(HPBarFileName)
  70.     @hp_back_sprite.bitmap = RPG::Cache.picture(HPBarBackFileName)
  71.     @mp_sprite.bitmap = RPG::Cache.picture(MPBarFileName)
  72.     @mp_back_sprite.bitmap = RPG::Cache.picture(MPBarBackFileName)
  73.     hzhj_old_init_make_event_param_bar(*args)
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 释放
  77.   #--------------------------------------------------------------------------
  78.   alias hzhj_old_dispose_make_event_param_bar dispose unless $@
  79.   def dispose
  80.     @param_sprites.each{|sprite|sprite.dispose}
  81.     hzhj_old_dispose_make_event_param_bar
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 获取事件 HP
  85.   #--------------------------------------------------------------------------
  86.   def event_hp
  87.      event_mhp - $game_variables[HPVariableID[@character.id][0]]
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取事件 MHP
  91.   #--------------------------------------------------------------------------
  92.   def event_mhp
  93.     $game_variables[HPVariableID[@character.id][1]]
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 获取事件 MP
  97.   #--------------------------------------------------------------------------
  98.   def event_mp
  99.     $game_variables[MPVariableID[@character.id][0]]
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 获取事件 MMP
  103.   #--------------------------------------------------------------------------
  104.   def event_mmp
  105.     [$game_variables[MPVariableID[@character.id][1]], 1].max
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 判断是否显示 HP 条
  109.   #--------------------------------------------------------------------------
  110.   def show_hp_bar?
  111.     ShowHPBarEventID.include?(@character.id) &&
  112.     !$game_switches[ShowBarSwitchID[@character.id]] &&
  113.     event_hp > 0
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 判断是否显示 MP 条
  117.   #--------------------------------------------------------------------------
  118.   def show_mp_bar?
  119.     ShowMPBarEventID.include?(@character.id)
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 更新画面
  123.   #--------------------------------------------------------------------------
  124.   alias hzhj_old_update_make_event_param_bar update
  125.   def update
  126.     hzhj_old_update_make_event_param_bar
  127.     unless @character.is_a?(Game_Event)
  128.       @param_sprites.each{|sprite|sprite.visible = false}
  129.     else
  130.       # 刷新 HP 可见状态
  131.       if show_hp_bar?
  132.         @hp_sprite.visible = @hp_back_sprite.visible = true
  133.         # 刷新坐标
  134.         @param_sprites.each do |sprite|
  135.           sprite.ox = sprite.bitmap.width / 2
  136.           sprite.oy = sprite.bitmap.height
  137.           sprite.x = x
  138.           sprite.y = y - 52
  139.           sprite.z = z
  140.         end
  141.         @hp_sprite.z += 1
  142.         @mp_sprite.z += 1
  143.         # 计算 HP 显示区域
  144.         hpw = (@hp_sprite.bitmap.width * 1.0 * event_hp / event_mhp).round
  145.         hpw = [[hpw, @hp_sprite.bitmap.width].min, 0].max
  146.         hph = @hp_sprite.bitmap.height
  147.         @hp_sprite.src_rect.set(0, 0, hpw, hph)
  148.         # 刷新 MP 可见状态
  149.         @mp_sprite.visible = @mp_back_sprite.visible = show_mp_bar?
  150.         # MP 可见的情况
  151.         if show_mp_bar?
  152.           # 修正 HP 坐标
  153.           @hp_sprite.y -= (@mp_sprite.oy + 1)
  154.           @hp_back_sprite.y = @hp_sprite.y
  155.           # 计算 MP 显示区域
  156.           mpw = (@mp_sprite.bitmap.width * 1.0 * event_mp / event_mmp).round
  157.           mpw = [[mpw, @mp_sprite.bitmap.width].min, 0].max
  158.           mph = @mp_sprite.bitmap.height
  159.           @mp_sprite.src_rect.set(0, 0, mpw, mph)
  160.         end
  161.       else
  162.         @param_sprites.each{|sprite|sprite.visible = false}
  163.       end
  164.     end
  165.   end
  166.   end # ============= create bar
  167. end

这是现在要改的脚本
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 事件头上显血条 RMXP
  3.   #--------------------------------------------------------------------------
  4.   #  作者:后知后觉
  5.   #  日期:2012-6-26
  6.   #  版本:1.0
  7.   #  申明:刺夜之枪定制 正太君改
  8.   #        [url]http://bbs.66rpg.com/thread-237126-1-1.html[/url]  
  9. #==============================================================================
  10. #==============================================================================
  11. # ■ Sprite_Character
  12. #==============================================================================
  13.  
  14. class Sprite_Character < RPG::Sprite
  15.   #--------------------------------------------------------------------------
  16.   # ● 参数设置 正太君改
  17.   #--------------------------------------------------------------------------
  18.   # 设置图片文件名.不想要底图就让底图完全透明或设置为 ""
  19.   # 图片放在 Graphics/Pictures/ 文件夹下
  20.   HPBarFileName = "HPBar"
  21.   HPBarBackFileName = "HPBarBack"
  22.   MPBarFileName = "MPBar"
  23.   MPBarBackFileName = "MPBarBack"
  24.   # 设置显示友军血条的开关号
  25.   #TeamHPBarSwitchID = 5
  26.   # 设置显示敌军血条的开关号
  27.   #EnemyHPBarSwitchID = 6
  28.  
  29.   # 设置显示血条的开关号
  30.   HPBarSwitchID = 5
  31.  
  32.   #禁止显示血条 开关
  33.   HPBarDOESNOTSwitchID = 6
  34.  
  35.  
  36.   # 被攻击后血条显示多久
  37.   HPbarTimeDisplay = 60
  38.  
  39.  
  40.   #--------------------------------------------------------------------------
  41.   # ● 初始化对像
  42.   #--------------------------------------------------------------------------
  43. #别名hzhj旧初始化使事件参数栏初始化
  44.   alias hzhj_old_init_make_event_param_bar initialize
  45.   def initialize(*args)#定义初始化(*参数)
  46.     @hp_sprite = Sprite.new(args[0])#@hp精灵=精灵.新(参数[0])
  47.     @hp_back_sprite = Sprite.new(args[0])#@hp后台精灵 = 精灵.新(参数[0])
  48.     @mp_sprite = Sprite.new(args[0])
  49.     @mp_back_sprite = Sprite.new(args[0])
  50.     @param_sprites = []#@参数精灵=[]
  51.     @param_sprites << @hp_sprite# @参数精灵 << @hp精灵
  52.     @param_sprites << @hp_back_sprite# @参数精灵=@hp后台精灵
  53.     @param_sprites << @mp_sprite
  54.     @param_sprites << @mp_back_sprite
  55.     #@hp精灵。位图 = RPG::Cache.picture(HPBarFileName)绿色
  56.     @hp_sprite.bitmap = RPG::Cache.picture(HPBarFileName)
  57.     #@hp后台精灵.位图= RPG::Cache.picture(HPBarBackFileName)#黑色
  58.     @hp_back_sprite.bitmap = RPG::Cache.picture(HPBarBackFileName)#黑色
  59.     @mp_sprite.bitmap = RPG::Cache.picture(MPBarFileName)
  60.     @mp_back_sprite.bitmap = RPG::Cache.picture(MPBarBackFileName)
  61.     #别名hzhj旧初始化使事件参数栏(*参数)
  62.     hzhj_old_init_make_event_param_bar(*args)
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 释放
  66.   #--------------------------------------------------------------------------
  67.   #别名hzhj旧的布置使事件参数栏布置除非$@
  68.   alias hzhj_old_dispose_make_event_param_bar dispose unless $@
  69.   def dispose#定义可用
  70.     #@参数精灵。每个{|精灵|精灵.释放}
  71.     @param_sprites.each{|sprite|sprite.dispose}
  72.     #hzhj旧的布置生成事件参数栏
  73.     hzhj_old_dispose_make_event_param_bar
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 获取事件 HP # 正太君改
  77.   #--------------------------------------------------------------------------
  78.   def event_hp#定义事件hp
  79.      return 0 if @character.nil?#如果@角色,则返回0。无
  80.      return @character.hp#返回角色HP
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 获取事件 MHP # 正太君改
  84.   #--------------------------------------------------------------------------
  85.   def event_mhp#定义事件MHP
  86.     return 0 if @character.nil?#如果@角色,则返回0。无
  87.     return @character.hp_max#返回角色HP最大值
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取事件 MP # 正太君改
  91.   #--------------------------------------------------------------------------
  92.   def event_mp
  93.     return 0 if @character.nil?
  94.     return @character.sp if @character.is_a?(EFS_Hero)
  95.     return @character.ammo
  96.     #return @character.get_group.morale
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 获取事件 MMP # 正太君改
  100.   #--------------------------------------------------------------------------
  101.   def event_mmp
  102.     return 0 if @character.nil?
  103.     return @character.sp_max if @character.is_a?(EFS_Hero)
  104.     return @character.ammo_max
  105.     #return 100
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 判断是否显示 HP 条
  109.   #--------------------------------------------------------------------------
  110.   def show_hp_bar?#是否显示hp栏?
  111.     #return false if @character.is_a?(EFS_Hero)
  112.    # 如果$场景,则返回假的。efs故事模式
  113.     return false if $scene.efs_story_mode
  114.     #如果事件hp>0&&@角色已删除  &&表示与,意为同时都要满足。&&逻辑运算符,并且是双目运算符
  115.     if event_hp > 0 && !@character.removed
  116.       #返回$游戏开关[HPBarSwitchID]||@角色.hp计数器>0
  117.       return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID]
  118.     else #否则
  119.       return false#返回假的
  120.     end  
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 判断是否显示 MP 条
  124.   #--------------------------------------------------------------------------
  125.   def show_mp_bar?
  126.     #return false if @character.is_a?(EFS_Hero)
  127.      return false if $scene.efs_story_mode
  128.     if event_mmp > 0 && !@character.removed
  129.       return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID]
  130.     else
  131.       return false
  132.     end  
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 更新画面
  136.   #--------------------------------------------------------------------------
  137.   #别名hzhj旧更新使事件参数栏更新
  138.   alias hzhj_old_update_make_event_param_bar update
  139.   def update #定义更新
  140.     #hzhj旧更新生成事件参数栏
  141.     hzhj_old_update_make_event_param_bar
  142.     #如果@角色.是_a?(EFS_战斗者)
  143.     if !@character.is_a?(EFS_Battler) #and [email protected]_a?(Game_Player)
  144.      # @参数精灵。每个{|精灵|精灵.可见=假的}
  145.       @param_sprites.each{|sprite|sprite.visible = false}
  146.     else
  147.  
  148.       # 刷新 HP 可见状态
  149.       if show_hp_bar? #如果显示hp栏?
  150.         #@hp精灵。可见=@hp后台精灵可见=真
  151.         @hp_sprite.visible = @hp_back_sprite.visible = true
  152.        # @hp精灵。bitmap=角色扮演::缓存图片(“HPBar-E”)如果@角色。团队!=1.
  153.         @hp_sprite.bitmap = RPG::Cache.picture("HPBar-E") if @character.team != 1 #wtf you doing
  154.  
  155.  
  156.         #减少计数
  157.        # 除非$游戏切换[HPBarSwitchID]
  158.         unless $game_switches[HPBarSwitchID]
  159.           #如果@角色。hp计数器==hp条形时间显示
  160.           if @character.hp_counter == HPbarTimeDisplay
  161.             @param_sprites.each do |sprite| #@参数精灵。每个做|精灵|
  162.               sprite.opacity = 255 #精灵不透明度=255
  163.             end
  164.             #els if@字符。hp计数器< HPbarTimeDisplay /3
  165.           elsif  @character.hp_counter < HPbarTimeDisplay/3
  166.             @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  167.               ##精灵不透明度-=255/(HPbarTimeDisplay/3)
  168.               sprite.opacity -= 255/(HPbarTimeDisplay/3)
  169.             end
  170.           end
  171.           #@性格。hp计数器-=1
  172.           @character.hp_counter -= 1
  173.         else#否则
  174.             @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  175.               sprite.opacity = 255#精灵不透明度=255
  176.             end
  177.  
  178.         end
  179.  
  180.         # 刷新坐标
  181.         @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  182.           #team_num = 5
  183.           #for i in 0..team_num-1
  184.           sprite.ox =  sprite.bitmap.width / 2#精灵ox=精灵位图宽度/2
  185.           sprite.oy = sprite.bitmap.height#精灵.oy=精灵。位图高度
  186.  
  187.         #  a=[87,174,261,348,435,609,696,783,870,957] 
  188.          # if !a.empty?
  189.        #   for i in 0.. @team_groups.size-1 #for i in 1..5
  190.           # $team_group[i] = []
  191.         #  87
  192.         # @item_icon[i].x = 5+ i%4 *86
  193.            #x=1*@event_id
  194.           sprite.x = 115+x*87 #x#+a#[0]
  195.        #   a.delete_at(0)
  196.         #      end
  197.          # sprite.x = x
  198.           #sprite.y = y - 52
  199.         #  p sprite.x
  200.           #sprite.opacity = 255
  201.         #  shif = @character.is_cal#盖印图层=@角色。是计算函数
  202.           sprite.y =y - (shif ? 82 : 52)#精灵.y=y-(盖印图层?82:52)
  203.           sprite.z = z#精灵.z = z
  204.         end
  205.       #  @hp_sprite.x += 87
  206.         @hp_sprite.z += 1#hp_精灵.z = z
  207.         @mp_sprite.z += 1
  208.         # 计算 HP 显示区域
  209.         #hp宽=(@hp 精灵.位图.宽*1.0*事件hp/事件mhp)。圆形的
  210.         hpw = (@hp_sprite.bitmap.width * 1.0 * event_hp / event_mhp).round
  211.        # hp宽=[hp宽,@hp精灵位图宽度].最小值,0].最大值
  212.         hpw = [[hpw, @hp_sprite.bitmap.width].min, 0].max
  213.         hph = @hp_sprite.bitmap.height#hp高=@hp精灵位图高度
  214.         #@hp精灵。src矩形。集合(0,0,hp宽,hp高)
  215.         @hp_sprite.src_rect.set(0, 0, hpw, hph)
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.         # 刷新 MP 可见状态
  226.  
  227.         @mp_sprite.visible = @mp_back_sprite.visible = (show_mp_bar? and event_mmp > 0) # 正太君改
  228.         if show_mp_bar?
  229.           # 修正 HP 坐标
  230.           @hp_sprite.y -= (@mp_sprite.oy + 1)
  231.           @hp_back_sprite.y = @hp_sprite.y
  232.           # 计算 MP 显示区域
  233.           if event_mmp > 0 # 正太君改
  234.             mpw = (@mp_sprite.bitmap.width * 1.0 * event_mp / event_mmp).round
  235.             mpw = [[mpw, @mp_sprite.bitmap.width].min, 0].max
  236.             mph = @mp_sprite.bitmap.height
  237.             @mp_sprite.src_rect.set(0, 0, mpw, mph)
  238.           end
  239.         end
  240.       else
  241.         @param_sprites.each{|sprite|sprite.visible = false}
  242.       end
  243.     end
  244.   end
  245. end
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6296
在线时间
1104 小时
注册时间
2015-8-15
帖子
658
15
 楼主| 发表于 2023-11-18 15:24:45 | 只看该作者
soulsaga 发表于 2023-11-11 11:32
sprite.x += sprite.x>=115 ? 87 : 115[/pre]


半年的时间终于解决了

  1. #==============================================================================
  2. # ■ 事件头上显血条 RMXP
  3.   #--------------------------------------------------------------------------
  4.   #  作者:后知后觉
  5.   #  日期:2012-6-26
  6.   #  版本:1.0
  7.   #  申明:刺夜之枪定制 正太君改
  8.   #        http://bbs.66rpg.com/thread-237126-1-1.html  
  9. #==============================================================================
  10. #==============================================================================
  11. # ■ Sprite_Character
  12. #==============================================================================

  13. class Sprite_Character < RPG::Sprite
  14.   #--------------------------------------------------------------------------
  15.   # ● 参数设置 正太君改
  16.   #--------------------------------------------------------------------------
  17.   # 设置图片文件名.不想要底图就让底图完全透明或设置为 ""
  18.   # 图片放在 Graphics/Pictures/ 文件夹下
  19.   HPBarFileName = "HPBar"
  20.   HPBarBackFileName = "HPBarBack"
  21.   MPBarFileName = "MPBar"
  22.   MPBarBackFileName = "MPBarBack"
  23.   # 设置显示友军血条的开关号
  24.   #TeamHPBarSwitchID = 5
  25.   # 设置显示敌军血条的开关号
  26.   #EnemyHPBarSwitchID = 6
  27.   
  28.   # 设置显示血条的开关号
  29.   HPBarSwitchID = 5
  30.   
  31.   #禁止显示血条 开关
  32.   HPBarDOESNOTSwitchID = 6
  33.   
  34.   
  35.   # 被攻击后血条显示多久
  36.   HPbarTimeDisplay = 60
  37.   
  38.   
  39.   #--------------------------------------------------------------------------
  40.   # ● 初始化对像
  41.   #--------------------------------------------------------------------------
  42. #别名hzhj旧初始化使事件参数栏初始化
  43.   alias hzhj_old_init_make_event_param_bar initialize
  44.   def initialize(*args)#定义初始化(*参数)
  45.     @hp_sprite = Sprite.new(args[0])#@hp精灵=精灵.新(参数[0])
  46.     @hp_back_sprite = Sprite.new(args[0])#@hp后台精灵 = 精灵.新(参数[0])
  47.     @mp_sprite = Sprite.new(args[0])
  48.     @mp_back_sprite = Sprite.new(args[0])
  49.     @param_sprites = []#@参数精灵=[]
  50.     @param_sprites << @hp_sprite# @参数精灵 << @hp精灵
  51.     @param_sprites << @hp_back_sprite# @参数精灵=@hp后台精灵
  52.     @param_sprites << @mp_sprite
  53.     @param_sprites << @mp_back_sprite
  54.     #@hp精灵。位图 = RPG::Cache.picture(HPBarFileName)绿色
  55.     @hp_sprite.bitmap = RPG::Cache.picture(HPBarFileName)
  56.     #@hp后台精灵.位图= RPG::Cache.picture(HPBarBackFileName)#黑色
  57.     @hp_back_sprite.bitmap = RPG::Cache.picture(HPBarBackFileName)#黑色
  58.     @mp_sprite.bitmap = RPG::Cache.picture(MPBarFileName)
  59.     @mp_back_sprite.bitmap = RPG::Cache.picture(MPBarBackFileName)
  60.     #别名hzhj旧初始化使事件参数栏(*参数)
  61.     hzhj_old_init_make_event_param_bar(*args)
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 释放
  65.   #--------------------------------------------------------------------------
  66.   #别名hzhj旧的布置使事件参数栏布置除非$@
  67.   alias hzhj_old_dispose_make_event_param_bar dispose unless $@
  68.   def dispose#定义可用
  69.     #@参数精灵。每个{|精灵|精灵.释放}
  70.     @param_sprites.each{|sprite|sprite.dispose}
  71.     #hzhj旧的布置生成事件参数栏
  72.     hzhj_old_dispose_make_event_param_bar
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取事件 HP # 正太君改
  76.   #--------------------------------------------------------------------------
  77.   def event_hp#定义事件hp
  78.      return 0 if @character.nil?#如果@角色,则返回0。无
  79.      return @character.hp#返回角色HP
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 获取事件 MHP # 正太君改
  83.   #--------------------------------------------------------------------------
  84.   def event_mhp#定义事件MHP
  85.     return 0 if @character.nil?#如果@角色,则返回0。无
  86.     return @character.hp_max#返回角色HP最大值
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 获取事件 MP # 正太君改
  90.   #--------------------------------------------------------------------------
  91.   def event_mp
  92.     return 0 if @character.nil?
  93.     return @character.sp if @character.is_a?(EFS_Hero)
  94.     return @character.ammo
  95.     #return @character.get_group.morale
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 获取事件 MMP # 正太君改
  99.   #--------------------------------------------------------------------------
  100.   def event_mmp
  101.     return 0 if @character.nil?
  102.     return @character.sp_max if @character.is_a?(EFS_Hero)
  103.     return @character.ammo_max
  104.     #return 100
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 判断是否显示 HP 条
  108.   #--------------------------------------------------------------------------
  109.   def show_hp_bar?#是否显示hp栏?
  110.     #return false if @character.is_a?(EFS_Hero)
  111.    # 如果$场景,则返回假的。efs故事模式
  112.     return false if $scene.efs_story_mode
  113.     #如果事件hp>0&&@角色已删除  &&表示与,意为同时都要满足。&&逻辑运算符,并且是双目运算符
  114.     return false if $scene.group_lisenter == nil
  115.     #挑选选着=$场景。小组成员。包括?(@角色队组)
  116.     selected = $scene.group_lisenter.include?(@character.group)
  117.     cp = $scene.enermy_groups[@character.group[4]-1].captain
  118.    # cp = $scene.team_groups[@character.group[4]-1].captain
  119.     if cp == @character
  120.    # if event_hp > 0 && [email protected]
  121.       #返回$游戏开关[HPBarSwitchID]||@角色.hp计数器>0
  122.       return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID]
  123.     else #否则
  124.       return false#返回假的
  125.     end  
  126.   end

  127.   #--------------------------------------------------------------------------
  128.   # ● 判断是否显示 MP 条
  129.   #--------------------------------------------------------------------------
  130.   def show_mp_bar?
  131.     #return false if @character.is_a?(EFS_Hero)
  132.      return false if $scene.efs_story_mode
  133.     if event_mmp > 0 && [email protected]
  134.       return $game_switches[HPBarSwitchID] || @character.hp_counter > 0 #) && ! $game_switches[HPBarDOESNOTSwitchID]
  135.     else
  136.       return false
  137.     end  
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 更新画面
  141.   #--------------------------------------------------------------------------
  142.   #别名hzhj旧更新使事件参数栏更新
  143.   alias hzhj_old_update_make_event_param_bar update
  144.   def update #定义更新
  145.     #hzhj旧更新生成事件参数栏
  146.     hzhj_old_update_make_event_param_bar
  147.     #如果@角色.是_a?(EFS_战斗者)
  148.     if [email protected]_a?(EFS_Battler) #and [email protected]_a?(Game_Player)
  149.      # @参数精灵。每个{|精灵|精灵.可见=假的}
  150.       @param_sprites.each{|sprite|sprite.visible = false}
  151.     else
  152.       
  153.       # 刷新 HP 可见状态
  154.       if show_hp_bar? #如果显示hp栏?
  155.         #@hp精灵。可见=@hp后台精灵可见=真
  156.         @hp_sprite.visible = @hp_back_sprite.visible = true
  157.        # @hp精灵。bitmap=角色扮演::缓存图片(“HPBar-E”)如果@角色。团队!=1.
  158.         @hp_sprite.bitmap = RPG::Cache.picture("HPBar-E") if @character.team != 1 #wtf you doing
  159.         
  160.         
  161.         #减少计数
  162.        # 除非$游戏切换[HPBarSwitchID]
  163.         unless $game_switches[HPBarSwitchID]
  164.           #如果@角色。hp计数器==hp条形时间显示
  165.           if @character.hp_counter == HPbarTimeDisplay
  166.             @param_sprites.each do |sprite| #@参数精灵。每个做|精灵|
  167.               sprite.opacity = 255 #精灵不透明度=255
  168.             end
  169.             #els if@字符。hp计数器< HPbarTimeDisplay /3
  170.           elsif  @character.hp_counter < HPbarTimeDisplay/3
  171.             @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  172.               ##精灵不透明度-=255/(HPbarTimeDisplay/3)
  173.               sprite.opacity -= 255/(HPbarTimeDisplay/3)
  174.             end
  175.           end
  176.           #@性格。hp计数器-=1
  177.           @character.hp_counter -= 1
  178.         else#否则
  179.             @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  180.               sprite.opacity = 255#精灵不透明度=255
  181.             end
  182.          
  183.         end
  184.         
  185.         # 刷新坐标
  186.         @param_sprites.each do |sprite|#@参数精灵。每个做|精灵|
  187.           #team_num = 5
  188.           #for i in 0..team_num-1
  189.           sprite.ox =  sprite.bitmap.width / 2#精灵ox=精灵位图宽度/2
  190.           sprite.oy = sprite.bitmap.height#精灵.oy=精灵。位图高度
  191.          
  192.         #  a=[87,174,261,348,435,609,696,783,870,957] 
  193.          # if !a.empty?
  194.        #   for i in 0.. @team_groups.size-1 #for i in 1..5
  195.           # $team_group[i] = []
  196.         #  87
  197.         # @item_icon[i].x = 5+ i%4 *86
  198.            #x=1*@event_id
  199.           sprite.x = 115 #x#+a#[0]
  200.        #   a.delete_at(0)
  201.         #      end
  202.          # sprite.x = x
  203.           #sprite.y = y - 52
  204.         #  p sprite.x
  205.           #sprite.opacity = 255
  206.           shif = @character.is_cal#盖印图层=@角色。是计算函数
  207.           sprite.y =520#精灵.y=y-(盖印图层?82:52)
  208.           sprite.z = z#精灵.z = z
  209.         end
  210.       #  @hp_sprite.x += 87
  211.         @hp_sprite.z += 1#hp_精灵.z = z
  212.         @mp_sprite.z += 1
  213.         # 计算 HP 显示区域
  214.         #hp宽=(@hp 精灵.位图.宽*1.0*事件hp/事件mhp)。圆形的
  215.         hpw = (@hp_sprite.bitmap.width * 1.0 * event_hp / event_mhp).round
  216.        # hp宽=[hp宽,@hp精灵位图宽度].最小值,0].最大值
  217.         hpw = [[hpw, @hp_sprite.bitmap.width].min, 0].max
  218.         hph = @hp_sprite.bitmap.height#hp高=@hp精灵位图高度
  219.         #@hp精灵。src矩形。集合(0,0,hp宽,hp高)
  220.         @hp_sprite.src_rect.set(0, 0, hpw, hph)
  221.         
  222.         

  223.         
  224.         
  225.         
  226.         
  227.         
  228.         
  229.         # 刷新 MP 可见状态
  230.       
  231.         @mp_sprite.visible = @mp_back_sprite.visible = (show_mp_bar? and event_mmp > 0) # 正太君改
  232.         if show_mp_bar?
  233.           # 修正 HP 坐标
  234.           @hp_sprite.y -= (@mp_sprite.oy + 1)
  235.           @hp_back_sprite.y = @hp_sprite.y
  236.           # 计算 MP 显示区域
  237.           if event_mmp > 0 # 正太君改
  238.             mpw = (@mp_sprite.bitmap.width * 1.0 * event_mp / event_mmp).round
  239.             mpw = [[mpw, @mp_sprite.bitmap.width].min, 0].max
  240.             mph = @mp_sprite.bitmap.height
  241.             @mp_sprite.src_rect.set(0, 0, mpw, mph)
  242.           end
  243.         end
  244.       else
  245.         @param_sprites.each{|sprite|sprite.visible = false}
  246.       end
  247.     end
  248.   end
  249. end

复制代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14121
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

16
发表于 2023-11-29 21:28:07 | 只看该作者
本帖最后由 miantouchi 于 2023-11-29 21:47 编辑
  1. (87..957).step(87) do |i|
  2.   sprite.x = i
  3. end
复制代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6296
在线时间
1104 小时
注册时间
2015-8-15
帖子
658
17
 楼主| 发表于 2023-11-29 21:44:08 | 只看该作者
本帖最后由 金芒芒 于 2023-11-29 21:47 编辑


i的循环是87 174  261 348 ...957
但是i不代表sprite的循序  sprite.x = i的最大值了

222.png (569.2 KB, 下载次数: 8)

222.png

点评

if只能得到3个精灵的坐标 多了就只能x=if的最大值  发表于 2023-11-29 22:05
那你大可以每次累加后坐标,进行精灵坐标的刷新  发表于 2023-11-29 21:54
我看你标题发的已解决,已经解决了吧目前,解决了就可以无视我发的。  发表于 2023-11-29 21:52
那个是另一个精灵脚本没刷新坐标  发表于 2023-11-29 21:49
上面那个意思?  发表于 2023-11-29 21:48
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 12:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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