搜索
查看: 2321|回复: 7

发几个lua写的buff

[复制链接]
发表于 2020-5-22 23:39:07 | 显示全部楼层 |阅读模式
斩首=直接斩杀血量低于5%/10%/20%的怪物
禁锢=攻击时有概率让对手禁锢1/2/5秒
蛛网=攻击时有概率让对方被蛛网笼罩1/2/5秒
剧毒=攻击时有概率让对方中毒3/8/20秒
灵活=受到攻击伤害时,有5%/10%/20%的概率吸收99%的伤害!



下面贴代码:

  1. --使用技能回调
  2. function tiancai_DoSpellSkill(Actor,TagActor,MagicID)
  3.         local actorname = Actor:getCharName()
  4.         local TagActorName = TagActor:getCharName()
  5.         local Olook = TagActor:getRace()
  6.         local Ulook = Actor:getRace()
  7.         local Ueee = 0
  8.         local u
  9.         local uh
  10.         local buff = "高级剧毒|高级蛛网|中级禁锢|高级斩首" --实装中这里的buff列表肯定从玩家变量中获取,我这里写死是假设该玩家有这些buff
  11.         --如若触发本体是宝宝的话,那么将操作对象转换为本体
  12.         if Ulook == 66 then
  13.         u = s.obj.getPlayer(Actor:getMasterName())
  14.         uh = s.obj.getHero(u:getCharName())
  15.         end
  16.        
  17.         --统一操作对象
  18.         if Ulook == 0 then
  19.         u = Actor
  20.         uh = s.obj.getHero(u:getCharName())
  21.         end
  22.        
  23.         --剧毒buff
  24.         if ini_zfcss(buff,"剧毒") then
  25.                 if ini_zfcss(buff,"高级剧毒") > 0 then
  26.                         if math.random(1,100) < 10 then
  27.                                 TagActor:setActorStatus(4,20)
  28.                                 u:sendMsg(2,"剧毒buff生效,对手中毒20秒", -1, -1)
  29.                         end
  30.                 end
  31.                 if ini_zfcss(buff,"中级剧毒") > 0 then
  32.                         if math.random(1,100) < 10 then
  33.                                 TagActor:setActorStatus(4,10)
  34.                                 u:sendMsg(2,"剧毒buff生效,对手中毒10秒", -1, -1)
  35.                         end
  36.                 end
  37.                 if ini_zfcss(buff,"初级剧毒") > 0 then
  38.                         if math.random(1,100) < 10 then
  39.                                 TagActor:setActorStatus(4,5)
  40.                                 u:sendMsg(2,"剧毒buff生效,对手中毒5秒", -1, -1)
  41.                         end
  42.                 end
  43.         end
  44.         --蛛网buff
  45.         if ini_zfcss(buff,"蛛网") then
  46.                 if ini_zfcss(buff,"高级蛛网") > 0 then
  47.                         if math.random(1,100) < 10 then
  48.                                 TagActor:setActorStatus(3,5)
  49.                                 u:sendMsg(2,"蛛网buff生效,对手减速5秒", -1, -1)
  50.                         end
  51.                 end
  52.                 if ini_zfcss(buff,"中级蛛网") > 0 then
  53.                         if math.random(1,100) < 10 then
  54.                                 TagActor:setActorStatus(3,2)
  55.                                 u:sendMsg(2,"蛛网buff生效,对手减速2秒", -1, -1)
  56.                         end
  57.                 end
  58.                 if ini_zfcss(buff,"初级蛛网") > 0 then
  59.                         if math.random(1,100) < 10 then
  60.                                 TagActor:setActorStatus(3,1)
  61.                                 u:sendMsg(2,"蛛网buff生效,对手减速1秒", -1, -1)
  62.                         end
  63.                 end
  64.         end
  65.         --禁锢buff
  66.         if ini_zfcss(buff,"禁锢") then
  67.                 if ini_zfcss(buff,"高级禁锢") > 0 then
  68.                         if math.random(1,100) < 10 then
  69.                                 TagActor:setActorStatus(1,5)
  70.                                 u:sendMsg(2,"禁锢buff生效,对手定身5秒", -1, -1)
  71.                         end
  72.                 end
  73.                 if ini_zfcss(buff,"中级禁锢") > 0 then
  74.                         if math.random(1,100) < 10 then
  75.                                 TagActor:setActorStatus(1,2)
  76.                                 u:sendMsg(2,"禁锢buff生效,对手定身2秒", -1, -1)
  77.                         end
  78.                 end
  79.                 if ini_zfcss(buff,"初级禁锢") > 0 then
  80.                         if math.random(1,100) < 10 then
  81.                                 TagActor:setActorStatus(1,1)
  82.                                 u:sendMsg(2,"禁锢buff生效,对手定身1秒", -1, -1)
  83.                         end
  84.                 end
  85.         end
  86.         --斩首buff
  87.         if not in_array(Olook,{0,66}) then
  88.                 if ini_zfcss(buff,"斩首") > 0 then
  89.                         local omaxhp = TagActor:getMaxHp()
  90.                         local ohp = TagActor:getHp()
  91.                         local ohpf = math.round(ohp / omaxhp * 100)
  92.                         print("怪物剩余百分百血量:"..ohpf.." 他的血量"..omaxhp.."-"..ohp)
  93.                         if ini_zfcss(buff,"高级斩首") > 0 then
  94.                                 if ohpf < 20 then
  95.                                         TagActor:setHp(0)
  96.                                         u:sendMsg(2,"高级斩首buff生效,直接斩杀"..TagActorName..ohp.."血量!", -1, -1)
  97.                                 end
  98.                         end
  99.                         if ini_zfcss(buff,"中级斩首") > 0 then
  100.                                 if ohpf < 10 then
  101.                                         TagActor:setHp(0)
  102.                                         u:sendMsg(2,"中级斩首buff生效,直接斩杀"..TagActorName..ohp.."血量!", -1, -1)
  103.                                 end
  104.                         end
  105.                         if ini_zfcss(buff,"初级斩首") > 0 then
  106.                                 if ohpf < 5 then
  107.                                         TagActor:setHp(0)
  108.                                         u:sendMsg(2,"初级斩首buff生效,直接斩杀"..TagActorName..ohp.."血量!", -1, -1)
  109.                                 end
  110.                         end
  111.                 end
  112.         end
  113.        
  114. end

  115. --角色受到伤害时触发(返回指定伤害数值)
  116. function tiancai_shoushang(actor,nPoint)
  117.         local actorname = actor:getCharName()
  118.         local Ulook = actor:getRace()
  119.         local u
  120.         local uh
  121.         local buff = "高级剧毒|高级蛛网|中级禁锢|高级灵活" --实装中这里的buff列表肯定从玩家变量中获取,我这里写死是假设该玩家有这些buff
  122.         local upo = math.round(nPoint / 100)
  123.         local upox = 0
  124.         --如若触发本体是宝宝的话,那么将操作对象转换为本体
  125.         if Ulook == 66 then
  126.         u = s.obj.getPlayer(actor:getMasterName())
  127.         uh = s.obj.getHero(u:getCharName())
  128.         end
  129.        
  130.         --统一操作对象
  131.         if Ulook == 0 then
  132.         u = actor
  133.         uh = s.obj.getHero(u:getCharName())
  134.         end
  135.        
  136.         --人物或者宝宝才能执行
  137.         if in_array(Ulook,{0,66}) then
  138.                         if ini_zfcss(buff,"灵活") > 999 then
  139.                                 if ini_zfcss(buff,"高级灵活") > 0 then
  140.                                         if math.random(1,100) < 20 then
  141.                                                 upox = upo * 99
  142.                                                 u:sendMsg(2,"高级灵活buff生效,本次吸收99%("..upox..")点伤害", -1, -1)
  143.                                         end
  144.                                 end
  145.                                 if ini_zfcss(buff,"中级灵活") > 0 then
  146.                                         if math.random(1,100) < 10 then
  147.                                                 upox = upo * 99
  148.                                                 u:sendMsg(2,"中级灵活buff生效,本次吸收99%("..upox..")点伤害", -1, -1)
  149.                                         end
  150.                                 end
  151.                                 if ini_zfcss(buff,"初级灵活") > 0 then
  152.                                         if math.random(1,100) < 5 then
  153.                                                 upox = upo * 99
  154.                                                 u:sendMsg(2,"初级灵活buff生效,本次吸收99%("..upox..")点伤害", -1, -1)
  155.                                         end
  156.                                 end
  157.                         end
  158.         end
  159.         nPoint = nPoint - upox
  160.         print("扣血回调:"..nPoint)
  161.         return nPoint
  162. end

  163. --数组检测
  164. function in_array(b,list)
  165.         if not list then
  166.                 return false   
  167.         end
  168.         if list then
  169.                 for _, v in pairs(list) do
  170.                         if v == b then
  171.                                 return true
  172.                         end
  173.                 end
  174.                 return false
  175.         end
  176. end
  177. --字符串检测
  178. function ini_zfcss(str,str1)
  179.         if string.find(str,str1) ~= nil then
  180.                 return string.find(str,str1)
  181.         else
  182.                 return 0
  183.         end
  184. end
复制代码

脚本写完没整理,可能会有一些问题,诸如执行完中级的buff后还会继续执行等状况,自己加个判断就好了! 还是同样的话,代码贴出来只是开阔思路,用类似的方法可以让大家写出更优秀的东西,更有效的促进HGE发展的脚步!
 楼主| 发表于 2020-5-22 23:41:29 | 显示全部楼层
发错区了,管理大大能帮我转下分类不。。。。。
发表于 2020-5-23 00:02:17 | 显示全部楼层
厉害了
发表于 2020-5-23 00:05:40 | 显示全部楼层
lihailea厉害了啊
发表于 2020-5-23 09:20:49 | 显示全部楼层
这是个大神。。。
发表于 2020-5-23 12:50:34 | 显示全部楼层
厉害啊
发表于 2020-6-7 00:09:18 | 显示全部楼层
厉害啊厉害啊厉害啊厉害啊
发表于 2020-6-7 09:26:28 | 显示全部楼层
66666666666666
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2024-11-22 04:29 , Processed in 0.490728 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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