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

Project1

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

[有事请教] 如何将SRPG技能变成EFS技能

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6291
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
跳转到指定楼层
1
发表于 2023-5-11 16:28:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
把图中的可能使用改为平时
RUBY 代码复制
  1. # module RPG
  2.   class Skill#技能类
  3.  
  4.     #类型: 0 是 正常技能(默认RPG MAKER 技能)
  5.     #       1 是 SRPG技能
  6.     #       2 是 EFS技能
  7.     def type #定义类型
  8.       #类型=@名称。拆分(/,/)[1]
  9.       type = @name.split(/;/)[1]
  10.       # #返回类型!=无类型至i:0
  11.       return type != nil ? type.to_i : 0
  12.     end  
  13.  
  14.     def name#定义名称
  15.       # 名称=@名称。拆分(/,/)[0]
  16.       name = @name.split(/,/)[0]
  17.       #返回名称!=无名称:“”
  18.       return name != nil ? name : ""
  19.     end
  20.  
  21.     def range##定义射程区域
  22.       #射程区域=@名称。拆分(/,/)[1]
  23.       range = @name.split(/,/)[1]
  24.        #返回射程区域!=无射程区域至i:2
  25.       return range != nil ? range.to_i : 2
  26.     end
  27.  
  28.     #---<范围魔法>---
  29.     def area#定义魔法范围
  30.       #魔法范围@名称。拆分(/,/)[2]
  31.       area = @name.split(/,/)[2]
  32.        #返回魔法范围!=魔法范围至i:2
  33.       return area != nil ? area.to_i : 2
  34.     end
  35.     #---<范围魔法>---
  36.     #  0 : 使用后无法行动
  37.     #  1 : 使用后可以行动
  38.     #  2 : 行动后无法使用,且使用后无法行动
  39.     #  3 : 行动后无法使用,且使用后可以行动
  40.  
  41.     def cost_type#定义成本类型
  42.       ##魔法范围@名称。拆分(/,/)[3]
  43.       area = @name.split(/,/)[3]
  44.        #返回魔法范围!=无?魔法范围至i:0
  45.       return area != nil ? area.to_i : 0
  46.     end
  47.  
  48.  
  49.     def scope#定义能力范围
  50.       #如果元素集。包括(Wzj::技能用于敌方区域)
  51.       if @element_set.include?(Wzj::SKILL_FOR_ENEMY_AREA)
  52.         return 8 #返回 8
  53.         #否则元素集。包括(Wzj::我们的技能领域)
  54.       elsif @element_set.include?(Wzj::SKILL_FOR_US_AREA)
  55.         return 9 #返回 9
  56.         #否则元素集。包括(Wzj::我们区域的技能_HP0)
  57.       elsif @element_set.include?(Wzj::SKILL_FOR_US_AREA_HP0)
  58.         return 10#返回 10
  59.       else#否则
  60.         return @scope#返回@范围
  61.       end
  62.     end
  63.   end









RUBY 代码复制
  1. class Scene_Map
  2.  
  3.  
  4.  
  5.   #=======================================================
  6.   # SRPG技能关联
  7.   # 格式: 技能ID =>  执行技能的名字
  8.   #=======================================================
  9.   #,6,10,9技能_千和箭头(@攻击者,@技能,目标)
  10.   SRPG_SKILLS = {
  11.     1 => "skill_ten_thousand_arrows(@attacker, @skill,target)",
  12.     2 => "skill_zhenfen_morale(@attacker, @skill,target)",
  13.     3 => "",
  14.     4 => "skill_distory_morale(@attacker, @skill,target)"
  15.  
  16.   }
  17.   #=======================================================
  18.   # SRPG技能发动条件
  19.   # 格式: 技能ID =>  检查技能的method名字
  20.   # 如果空的,则可以使用
  21.   #=======================================================
  22.   #,6,10,9
  23.   #SRPG_可使用SRPG技能
  24.   SRPG_SKILLS_CAN_USE = {
  25.     1 => "check_skill_ten_thousand_arrows(self.army)",
  26.     2 => "",
  27.     3 => "",
  28.     4 => ""
  29.  
  30.   }
  31.   def get_srpg_skills_can_use_list#定义获取srpg技能可以使用列表
  32.     return SRPG_SKILLS_CAN_USE.clone#返回 SRPG技能可用。克隆
  33.   end
  34.   #=======================================================
  35.   # SRPG技能 1 : 万箭齐发
  36.   #=======================================================
  37.   #定义技能_千和箭头(@攻击者,@技能,目标)
  38.   def skill_ten_thousand_arrows(attacker,skill,target)
  39.     #攻击者。事件转向xy(目标事件.x,目标。事件.y)
  40.     attacker.event.turn_toward_xy(target.event.x,target.event.y)
  41.     #目标事件转向方向xy(攻击者.事件.x,攻击者.事件.y)
  42.     target.event.turn_toward_xy(attacker.event.x,attacker.event.y)
  43.       #攻击者。事件伤害=“放箭!"
  44.       attacker.event.damage = "放箭!"
  45.       #攻击者。事件关键=错误
  46.       attacker.event.critical = false
  47.       #攻击者。事件伤害弹出=真
  48.       attacker.event.damage_pop = true
  49.     #播放动画(攻击者、攻击者、事件、角色名称+“-atk-1”)  
  50.     play_anime(attacker,attacker.event.character_name + "-atk-1")
  51.     #目标列表=[]
  52.     target_list = []
  53.     #目标成员。每个执行|组|
  54.     target.member.each do|group|
  55.     #组战士每个都做|f|  
  56.     group.fighter.each do|f|
  57.       #下一个如果f死了?
  58.       next if f.dead?
  59.      # 目标列表.推送 f
  60.       target_list.push f
  61.     end  
  62.   end
  63.    #全部阵亡=假
  64.     all_killed = false
  65.     #数字位数=0
  66.     num_hit = 0
  67.     #总和=0.0
  68.     sum = 0.0
  69.     #攻击者。成员每个执行|组|
  70.     attacker.member.each do|group|
  71.     ##组战士每个都做|f|  
  72.     group.fighter.each do|f|
  73.       if target_list.size == 0
  74.         all_killed = true
  75.         break
  76.       end  
  77.       next if f.dead? or f.is_a?(EFS_Infantry) or f.is_a?(EFS_Horseman) or f.is_a?(EFS_Hero) or f.is_a?(EFS_Object)
  78.         Audio.se_play("Audio/SE/"+f.s_shoot_se+ (rand(f.s_shoot_se_num)+1).to_s,80, 100)
  79.         wait_a_moment(true,4)
  80.         Audio.se_play("Audio/SE/"+f.s_pass_by_se+ (rand(f.s_pass_by_se_num)+1).to_s,80, 100)
  81.         wait_a_moment(true,4)
  82.         #如果射中
  83.         if rand(101) <= f.accuracy
  84.           #p attacker.event.x - target.event.x,attacker.event.y
  85.          a =  f.give_me_a_arrow_obj(attacker.event,target.event.x-attacker.event.x,target.event.y-attacker.event.y,true)
  86.          $game_map.missiles.push a
  87.          $scene.spriteset.add_missiles(a)
  88.           target.event.animation_id = 153
  89.         Audio.se_play("Audio/SE/"+f.s_atk_se+ (rand(f.s_atk_se_num)+1).to_s,80, 100)
  90.         wait_a_moment(true,4)
  91.           num_hit += 1
  92.           t = target_list[rand(target_list.size)]
  93.           damage = f.s_bro_atk + [f.s_base_atk - t.armor_hp_max,rand(5)+5].max
  94.             t.recieve_damage(damage)
  95.             if t.dead?
  96.               target_list.delete(t)
  97.             end
  98.  
  99.  
  100.             sum += damage
  101.       target.event.damage = damage
  102.       target.event.critical = false
  103.       target.event.damage_pop = true
  104.     else #如果没射中
  105.          a =  f.give_me_a_arrow_obj(attacker.event,target.event.x-attacker.event.x,target.event.y-attacker.event.y,false)
  106.          $game_map.missiles.push a
  107.          $scene.spriteset.add_missiles(a)
  108.           target.event.damage = "Miss"
  109.             target.event.critical = false
  110.           target.event.damage_pop = true            
  111.             target.event.animation_id = 135
  112.         Audio.se_play("Audio/SE/"+f.s_drop_se+ (rand(f.s_drop_se_num)+1).to_s,80, 100)
  113.         wait_a_moment(true,4)
  114.         end  #if zhong
  115.       end  #group
  116.         break if all_killed
  117.   end #attacker
  118.     target.event.damage = sum.round
  119.     target.event.critical = true
  120.     target.event.damage_pop = true
  121.     Notification.post("命中"+target.the_name+"中的"+num_hit.to_s+"人,共计造成"+sum.round.to_s+"点伤害。")
  122.     if all_killed
  123.     for id in @armies.keys
  124.       if @armies[id].all_dead?
  125.           next if @dealed_death_actors.include?(id)
  126.           deaths_disappear(id)
  127.       end
  128.     end
  129.     end
  130.     target.delete_all_dead
  131.     wait_a_moment(true)
  132.   end
  133.   #==============================================
  134.   def check_skill_ten_thousand_arrows(attacker)
  135.     sum = 0
  136.     attacker.member.each do|group|
  137.     group.fighter.each do|f|
  138.       next if f.dead? or f.is_a?(EFS_Infantry) or f.is_a?(EFS_Horseman) or f.is_a?(EFS_Hero) or f.is_a?(EFS_Object)
  139.       sum += 1
  140.     end  
  141.     end  
  142.     return sum >=5  
  143.   end  
  144.   #=======================================================
  145.   # SRPG技能 2 : 振奋士气
  146.   #=======================================================
  147.   #定义-skill振奋士气(攻击者、技能、目标)
  148.   def skill_zhenfen_morale(attacker,skill,target)
  149.  
  150.     # 目标添加常量状态(10)
  151.     target.add_const_state(10)
  152.  
  153.  
  154.  
  155.   end
  156.  
  157.  
  158.   #=======================================================
  159.   # SRPG技能 4 : 士气打击
  160.   #=======================================================
  161.    #定义技能分散士气(攻击者、技能、目标)
  162.    #def-skill distory士气(攻击者、技能、目标)
  163.    def skill_distory_morale(attacker,skill,target)
  164.      # 目标添加常量状态(5)
  165.       target.add_const_state(5)
  166.  
  167.   end

技能.png (48.25 KB, 下载次数: 2)

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

本版积分规则

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

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

GMT+8, 2024-4-28 10:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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