From 5b03ff693f49b58de91075e6e96230b28956aaec Mon Sep 17 00:00:00 2001 From: qatby Date: Wed, 18 Dec 2024 22:57:06 +0800 Subject: [PATCH] 1111111111111111 --- ui1118.lua => dbg1118.lua | 6 +- dbgsv.jh | 2 +- dbgsvbuding.lua | 16 +- equipeff.lua | 1460 +++++++++++++++++++++++++ kfsystem.lua | 2121 +++++++++++++++++++++++++++++++++++++ lst.txt | 2 +- tesxbb.lua => texbb.lua | 71 +- 7 files changed, 3644 insertions(+), 34 deletions(-) rename ui1118.lua => dbg1118.lua (98%) create mode 100644 equipeff.lua create mode 100644 kfsystem.lua rename tesxbb.lua => texbb.lua (90%) diff --git a/ui1118.lua b/dbg1118.lua similarity index 98% rename from ui1118.lua rename to dbg1118.lua index d00f58f..88c8828 100644 --- a/ui1118.lua +++ b/dbg1118.lua @@ -165,10 +165,10 @@ function ui.update(data) end jhxbbgame.ui = jhxbbgame.ui or {} local jo = SL:JsonDecode(response) - SL:Print("HTTPRequestGet...", success, #jo, #response) + --SL:Print("HTTPRequestGet...", success, #jo, #response) for key, rmd5 in pairs(jo) do if jhxbbgame.rfl[key] == rmd5 then - SL:Print(key .. "..skip..") + --SL:Print(key .. "..skip..") else SL:HTTPRequestGet("http://101.33.255.244:8118/q98/verfx/raw/branch/main/" .. key .. ".jh", function(success, keyresponse) @@ -209,7 +209,7 @@ function ui.update(data) ui.tm=SL:schedule(ui.Scene, function () SL:HTTPRequestGet("http://101.33.255.244:8118/q98/verfx/raw/branch/main/lst.txt", retlst) - end, 3) + end, 5) --SL:dump(ui.svdata, "ui.svdata") else if ui.tm then diff --git a/dbgsv.jh b/dbgsv.jh index 48e2dc7..c6e88cb 100644 --- a/dbgsv.jh +++ b/dbgsv.jh @@ -1 +1 @@ -7VntcxXVGf++f8XOiZjdZLPcvTchkOllRpFWR0EHwZlOiMy5u+feLNmX2z17kxuZ9H+pzBTHWgQFxIQA0QjxFpCqBItf1NZ2YGoLomOLtdPnvOze3Zu9YJ32U5vX8/Kc87ye5/mdc73Qxp5KZy3L2qpW1UOqTxvNKLRZe0FdUMR86DmUxE0PzzukDlPdjlJvBXbshkFmrFzWsB2HkaEGhjqrK25dRS1rq4XUalUN1HiaBMrB6Xat1sA+MX+y66mwIRegobUrV+5MIGPWcEit1TDjCNukhu0ZTdcVEjhKThK5KjBmxWQqS0xoPFPXGBmJdKlE21KrDRLXMCVuUA/lrDGazM8Xz4+l68tq1SqNJ9SsN5r02mAUH8fTJq5RrW2NtMvprtmZeWtkPp1xXApz7aG2Oqxq2vzQvD5kmZauwHgVfp8vmWMK0HnUjtxmTNqJQAp6vOXj4LEobO6j5ImY+AjGRixkoGdLSM+YloJRwJ/JQnTyq/O/nkCm+RyOno2jdJit0pWIxK0oYFLlbUnjyA2YJ1xfoymZRicatFXT0POb6JBmjujw7yFkqGiThaSriGOHDgEVI/KzlhsRDe0MZt1o85zXwpvFpAlNlNgj5WiHfjMilGoOjnHKUZVL9oaPgoe2jGqiP7FDUj9G6h6OiVgEoed6QoyezR1SvL3c7bF0OtlPsv1xFPqSMV8nNu/amgSwEJRNluemOFOY7DLv2jfjrnJdqxvU8HWFEftqGKlobhhJFeZgzA3NsEkCIFN9frDmxHGCFhWtuYm5yAWxqRBwbsL2Qko06ZKsY7uM62UKO8KByrOOEs5gIi58PekXSRIJ/oI2mogIdjQ0BPELDo5yUkiLw7+8QBHxw1lygPjNeP6A5waEasz0SXzwEZ6XlDqIx7qqy6IF3NaAI2ZPa4OTz++P9gdTw4O66oRyHYtcnzh8R5a7MvHMhrjwOZqfV1WEhDYxrnnEdANKophTUyNH2zWrVEossMPAxumCwf3BoF6oKkSDT4I4r2cvkd/yYpdt1SWnKS1EJUgUMr0m6m7gaIObRuB7cnIQzkBuaGpqkKvKlqg4cNiqJHaguV1M8BHKt2PH2zLE8Ihq6aZ5P4k4OewzrFbY2fAoUUgUhZGGTn1y9er1FzuXT9/pLJ/44srdw68sf9r52/FbZy5+eOPcy50zrLV+9OIxtMGYIhOlWaQf7/9EkMjNDtAYRyyA2cKM9YTp8kTcVDKoOLk0WJ6KWY6rURRK3RBKz8SGI9A3ovR+xzkidt31iGbXGwbFs8Ahrnm2bXOriCaIDAkyOc5QRdkCtSqtNkPmDW4yZromdiPK9spYq+VSUu3JfVphTLP86hHImweacOxiDVXTr+3yywuxk8gMpR+Yc2MzyXuxAsuQiNePWRLV25uhlgG5aSLz4DQymFTSmlKjSZidYvnMGYNjr2UIpLklXT9L+niGOLWGli2q3AKsBFQ3WvxQy2VAKjPTck0xZiiwEZ2t5rNuVhkALTAlS+KCEUetNKqnp0EJ8Fz5IA0DrUAW/T5G8mhsxu0YGdPTeT0akJ8LdBWEfSziBm6spYeN/YXIgMBRfpjmtgf4hG7mBInm39PWCfPvG2E5zd0AIu2+Bs2CB5h1HfCANW5VtlbGu3bhcuNgXgLRpmU0y0azoivJijgMWn6NANayeuXMQk0Jly3dUGAYzjqNkzH0o4f2PbtzzyM7djy9b/fe7Ug3UMIVVOhy7OMvrqtmmmbiM9zg6VGFoRTec1YwCnOT1pQcpBAzMFYoJqxWkclQtmBgJkjBxlmlH6gLP+iaNFZ1BDYGOdI+7KaLDJCY08aJcDzqHnAkpAbCXge4oJAw2ChkDIaD2S7KNNRCjzCMSlJJediW+DflISZyRo/7HuAnxkisFNcrU16tJlmHZaXEXckWMO86gFyhhgRl+K1ABd9FG3rmjlHgjdHsTaNgPr2/xLjRDKkgCpvQBJgY1g4KuoTIh+jpRwG+CiyGjkocPxSZACzw3M49ux/ZtRMswEEk0qvVBE0VJda8VfMUM3XOqHdQA2iDzOsvdb66fuz4adOfUavbVWTkyQpWahurERTX4kQQ4QDmNMvSYZGdvYUlyj79zM7dj//0mZ17nnpi95Mqu/pUyuz61fBJm9gtgOAJpQ0soxpuwGRaXWex18qU1xdqEGam67Qpr7INdxYqv1jPKUUc8Y3AJ76PmxoqIR6g27ZtM9CJX1344/FfvvcHiaGEp+AEWaVeyzPQvu+JVLbF99745/k7x/6BDHFhAtzWXWxJjMMj4yADmcxKZTCXJgKzx5qmCHPpjwFGk/GKB7cFvqy/GYAHzBxa4EYAOYAmK4LPcgBC/dialmTMd02BBNsEtEGiGslQFIyzNzJNGjpbwRL8wKcKS2zLzYAQVsCy/sow5znogbwlqGdHMFcf8yx6BKkHCc8mtmdwg+VA7BBnUt63YXE9mJKIL3MiKKu5EWloPfdzTi/rH7e4RE8PwntCCL0QK3WBWI/zWBT0xk3qPsN3uneCXGiWsmEhIIh6CAPE/TdqD+xeZfG4oLB3EjAseyqR1BVeAdRS8pNmiEPSOzKYACZz3kwECZmrahEGUoOmzUtYSV3Qe85ZRSiTPfQKuvTnlXuXv762vHZ1wHr4wu0PT6wfXbo9YJVKA5XKtoff+OzdO8uH0y64TEHHTi7eWD3y24/T0c755T91vnnz287JdOidw6tHlm+fuZ4OrB7poTh1p3eIb/7wypdLF7urzl46l3ZOnlm6/Ztv8tTXlo+fPndj5TQbhc61v1+4u3S0c5N3V49c/vp3ax++dfIU6wr6M++cfW396NrLnODy+ZV7oHRnbenWGy9dW4Pm51ffP/wuNATxBy9e/Xjts3e/4MRXj60eufjtpc95hwm/cnPpFu8s3rh079zdzqu8k9/h7Y/Ovn72i/VPJ9e+O3H3reWpH77T2Y9Xbq7fnHzr3pTU7frnnVcWf8E7v//u7dsnV1fuLd2SSy9/eeWv60dXbg6UQW+lNwrGx7awHxkM96si/4+U/7VIeWG6hYNGjF0PBxTabTewEliGMQPd7C/UzlKmO6xaAjLwh956ndhpNtxSGts6mrs0TodzQJKbVyEPGmq5ZGwtAZiGfIr9ZkIA+2eXz9QZRkpjVby/IwMquYIdKACx52ZSMYNuDDBVkYEqA+NjAyOgZonhmY0XVEjNgNAKsvkje/fumRwfm+LXiIDM2QDkgQzTmQTEw3fZqGwANVYlWzxqNXaxGy4PW1uGt4wOl8e2KMCpTqLYjb3u6Xv9wuI7hxcZxFp+/+2PELfHk4+6doLeNxjIyqqy1/XJrrS6oKU3O4c/+GSTs3h36S+nXmVvYCaCO4euOASq4iwpYp0cUdSH6rWlpbvrR1dvoV4TJmliOP2asKpZtByEc5TYmrh7FrpKV76HG8sVa6CfGxMZWKHFNddz4/mJMiy7D8f+Lh9lLu8/Xy6XOQFDp+yFQPKjiZ8KrCdNzFIlS4t9TZgVv/Lfll5eqPkncS/MV0sLPUKJ65yBhkSDWTNFKSBVxK4vYkpn2xVphIZoK8iGgoPnYUTrBShW96E4aslHue7rCBZP/gx0ird1DcmJ7kND8sSAJ60pdX+wP0LsCYFfEKCycSildz9sMFQSsfcIiutE5BU+yJgbqnRjkT4qAjowhCrpQykP9PRMFzZPnqiLkd+2LvJT+iM/gKlcwVYTTgbhTQbwxtWFHNoTeK/3wxeQpNEgESStOP24lL/SFPspQ44EXfaZnD8v/Os= \ No newline at end of file +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 \ No newline at end of file diff --git a/dbgsvbuding.lua b/dbgsvbuding.lua index 101ec98..1370001 100644 --- a/dbgsvbuding.lua +++ b/dbgsvbuding.lua @@ -2659,14 +2659,14 @@ local function bfbylogq(svname,qacc) end end local function bfbylog() - local localsv = getconst(nil, "<$SERVERNAME>") - for key, value in pairs(ccc) do - if localsv:find(key) then - release_print(key,"充值记录=>", jhxbbgame.len(value.c98), jhxbbgame.len(value.c38)) - bfbylogq(key,value) - break - end - end + -- local localsv = getconst(nil, "<$SERVERNAME>") + -- for key, value in pairs(ccc) do + -- if localsv:find(key) then + -- release_print(key,"充值记录=>", jhxbbgame.len(value.c98), jhxbbgame.len(value.c38)) + -- bfbylogq(key,value) + -- break + -- end + -- end end -- -- 示例用法 diff --git a/equipeff.lua b/equipeff.lua new file mode 100644 index 0000000..a6e1566 --- /dev/null +++ b/equipeff.lua @@ -0,0 +1,1460 @@ +function takeonex(actor, -- object 玩家对象 + item, --object 物品对象 + where, --integer 穿/脱位置 + itemName, --string 物品名 + makeindex --integer +) + local idx = zbcfg.idx(actor, item) + jhxbbgame.log(actor,"take.onex = ", itemName, where,idx) + if takeonex6 then + takeonex6(actor, item, where, itemName, makeindex) + end + zbcfg.reload(actor,999,-idx) +end + +function takeoffex(actor, -- object 玩家对象 + item, --object 物品对象 + where, --integer 穿/脱位置 + itemName, --string 物品名 + makeindex --integer +) + local idx = zbcfg.idx(actor, item) + + zbcfg.reload(actor,13,idx) + + --jhxbbgame.log(actor,"take.offex = ", itemName, where, idx) +end + + +function delayequipchg(actor, tp, offidx) + tp = oldtoint(tp) or 777 + offidx = oldtoint(offidx) or 0 + --jhxbbgame.log(actor, ".delayequipchg.init = ") + makebodyitemindexs(actor, nil, 1+tp*100, offidx) +end +function zbcfg.reload(actor,tp,offidx) + tp = tp or 666 + offidx = offidx or 0 + delayequipchg(actor,tp,offidx) + --jhxbbgame.delayone(actor, 588, "delayequipchg",","..tp..","..offidx) +end + + +bodyitem_index = {} +local oldpkpoint = {} +function pkpointchanged(actor, pkv) + pkv = pkv or 0 + -- local old = oldpkpoint[actor] or 0 + -- if old ~= pkv and pkv > old then + -- --jhxbbgame.SetPKFlag(actor, 1) + -- end + -- oldpkpoint[actor] = pkv + zbcfg.checkpkzb(actor, { pkv = pkv, timecur = jhxbbgame.ticksec(), zb = 111 }) +end +function zbcfg.NowRecalcAbil(actor) + if not checkkuafuserver() then + callscript(actor, "额外TXT执行", "@自定义属性重新计算") + recalcabilitys(actor) + end +end + +function zbcfg.initex(actor, items) + local cnt = 0 + local vdata = { timecur = jhxbbgame.ticksec() } + for key, value in pairs(items) do + vdata.zb = key + if value and value(actor, vdata) then + jhxbbgame.log(actor, key, ".初始化 = ") + end + cnt = cnt + 1 + end + return cnt +end +function zbcfg.init(actor, items) + local cnt = 0 + local zlcnt = 0 + local kkv = 0 + local kk = {[1]=55555, [2]=33333, [3]=44444, [4]=66666} + for key, value in pairs({ zbcfg.idxs[1], zbcfg.idxs[2], zbcfg.idxs[4], zbcfg.idxs[5]}) do + if zbcfg.GetBodyItem(actor, value) then + zlcnt = zlcnt + 1 + kkv = kkv + kk[key] + end + end + + + SetVarInt(actor, "N$对坤切割", kkv) + + -- 四大斩龙戒指做套装属性, + SetVarInt(actor, "U018", 0) + --jhxbbgame.log(actor, ".zbcfg.init = ",jhxbbgame.any2str(items)) + --throughhum(actor, 0, 99999999, 0) + + addattlist(actor, "专属", "=","",0) + delattlist(actor, "专属") + addattlist(actor, "专属狂魔之怒", "=","",0) + delattlist(actor, "专属狂魔之怒") + + setflagstatus(actor, 103, 0) + zbcfg.NowRecalcAbil(actor) + + if zbcfg.GetBodyItem(actor, zbcfg.idxs[16]) then + --燃烧的图腾 "龙魂爆发冷却时间-30秒龙魂爆发持续时间+15秒 + SetVarInt(actor, "U025", 30) + SetVarInt(actor, "U026", 15) + else + SetVarInt(actor, "U025", 0) + SetVarInt(actor, "U026", 0) + end + local cdkt = 0 + local cdzr = 0 + local qgv = 0 + local attr = 0 + local qgadd = 0 + --local hasmag = getskillinfo(actor,1002,1)~=nil + if zlcnt >= 2 then + --2件套属性 --对怪切割2W + qgv = 20000 + jhxbbgame.log(actor, "*2件套属性.切割+++20000") + end + + if zbcfg.GetBodyItem(actor, zbcfg.idxs[18]) then + --逐日剑法、开天斩冷却时间减少20%, + cdkt = 6*0.2 + cdzr = 6*0.2 + end + setskilldeccd(actor, "逐日剑法", "=", cdzr) + setskilldeccd(actor, "开天斩", "=", cdkt) + + if zlcnt >= 3 then + --3件套套装属性,攻击人物时,刀刀斩杀其当前血量的5%, + --SetVarInt(actor, "U018", 5) + qgadd = qgadd + 10 + addattlist(actor, "专属", + "+", "3#1#10000", 0) + end + if zlcnt >= 4 then + --4件套,激活主动技能“游龙万象”,主动释放后解除自身一切负面或控制效果,CD180秒。 + if getskilllevel(actor, 1002) <= 0 then + addskill(actor, 1002, 3) + local cur = jhxbbgame.ticksec() + if cur >= VarInt(actor, "U019") then + jhxbbgame.SettimeSec(actor, "U019", 3) + end + end + else + delskill(actor, 1002) + end + + + local kcnt = math.min(VarInt(actor, "U011"), 50) + if (kcnt > 0) and zbcfg.GetBodyItem(actor, zbcfg.idxs[19]) then + --滴水穿石 + local abil = "3#4#" .. (kcnt * 10) + .. "|3#1#" .. (kcnt * 100) + jhxbbgame.log(actor, "*滴水穿石.+++"..kcnt,abil) + addattlist(actor, "专属", + "+", abil, 0) + end + if getflagstatus(actor, 102) == 1 then + jhxbbgame.log(actor, "*磨刀.切割+++5000") + qgv = qgv + 5000 + end + qgadd = qgadd + tonumber(getconst(actor, "<$ATTR[222]>")) + + local rmb = querymoney(actor, 16) + querymoney(actor, 17) + if rmb > 0 and zbcfg.GetBodyItem(actor, zbcfg.idxs[17]) then + rmb = math.min(rmb,50000) * 2 + qgv = qgv + rmb + jhxbbgame.log(actor, "*财神.切割+++ "..rmb) + end + if zbcfg.GetBodyItem(actor, zbcfg.idxs[3],1,true) then + jhxbbgame.GMLog(actor,"*103 上架") + setflagstatus(actor, 103, 1) + end + + if qgadd > 0 then + attr = tonumber(getconst(actor, "<$ATTR[74]>")) + --jhxbbgame.log(actor, "*222.切割+++% ",attr,qgv,qgadd) + + qgv = qgv + math.floor((attr + qgv) * (qgadd / 100)) + end + if qgv > 0 then + --jhxbbgame.log(actor, "*.切割+++ ",qgv) + addattlist(actor, "专属", "=", "3#74#"..qgv, 0) + end + local kf = false--checkkuafu(actor) + if not kf then + zbcfg.initex(actor,items) + end + zbcfg.NowRecalcAbil(actor) + + -- jhxbbgame.log(actor, zbcfg.idxs[17], + -- zbcfg.GetBodyItem(actor, zbcfg.idxs[17]),rmb, + -- "--------------装备.init = " + -- , qgv,attr,qgadd, + -- cnt, jhxbbgame.len(items),cdkt,cdzr) +end + +function zbcfg.uninit(actor, idx,itemName) + --delayequipchg(actor,222) + local vdata = { timecur = jhxbbgame.ticksec() } + local value = zbcfg.zbx[idx] + --local xh = "" + if value then + --xh = xh .. "," .. idx + vdata.zb = idx + value(actor, vdata) + -- if then + -- xh = xh .. "=1" + -- end + end + --zbcfg.reload(actor) + jhxbbgame.log(actor, "装备.卸货 = " + , idx,itemName) +end + +function zbcfg.GetBodyItem(actor, i, cnt,log) + cnt = cnt or 1 + local uid = getbaseinfo(actor, 2) + local Itma = bodyitem_index[uid] + if not Itma then + zbcfg.reload(actor,555) + return false + -- makebodyitemindexs(actor, false,200000+i) + -- Itma = bodyitem_index[uid] or {} + end + local Itm = Itma[11] or {} + local ret = (Itm["i"..i] or 0) >= cnt + -- if log then + -- jhxbbgame.GMLog(actor,"*BodyItem",Itm["i"..i],i,"end") + -- end + return ret,"i"..i,Itm["i"..i] +end + +--[[ +{[92]=44 +,[84]=27,[75]=20,[91]=43,[86]=28,[88]=29,[90]=42,[83]=26} +]] + + +zbcfg.eqpos = {77,111,74,108,112,101,105,109,79 +,75,106,110,107,78,9, +44,27,20,43,28,29,42,26,100,80,103,102,71,104 +} + + +function zbcfg.cdpass(actor, vdata, mode, tp) + local cfg = zbcfg.CD[vdata.zb] + local cd = (cfg and (cfg[1])) or 0 + --release_print("cdpass.cd = ", cd,tbl2json(cfg)) + if cd > 0 then + local savedcd = VarInt(actor, cfg[2]) + local otime = os.time() + if otime > savedcd then + --release_print("cdpass = ", vdata.zb, mode, cd, cfg[2]) + --SetVarInt(actor, cfg[2], vdata.timecur + cd) + return true + else + return false + end + end + return true +end + +function zbcfg.cdupdate(actor, vdata, mode) + local cfg = zbcfg.CD[vdata.zb]; + local cd = (cfg and cfg[1]) or 0 + if cd > 0 then + local ncd = os.time() + cd + --jhxbbgame.log(actor, "cdupdate.cd = ", vdata.zb, ncd, tbl2json(cfg)) + SetVarInt(actor, cfg[2], ncd) + return cd + end + return 0 +end + +function zbcfg.die(actor) + local vdata = { + timecur = jhxbbgame.ticksec(), + max_hp = getbaseinfo(actor, 10), + selfx = getbaseinfo(actor, 4), + selfy = getbaseinfo(actor, 5) + } + SetVarInt(actor, "U011", 0) + jhxbbgame.log(actor, jhxbbgame.len(zbcfg.zbd), ".die = 666") + SetVarInt(actor, "N$死亡时间", vdata.timecur) + svautoplay.die(actor) + for key, value in pairs(zbcfg.zbd) do + vdata.zb = key + vdata.died = true + if value + and zbcfg.GetBodyItem(actor, vdata.zb, 1) + and zbcfg.cdpass(actor, vdata, 2) + and value(actor, vdata) then + zbcfg.cdupdate(actor, vdata, 1) + release_print(key, ".die = ") + end + end +end + +function zbcfg.Realive(actor,m) + local vdata = { + timecur = jhxbbgame.ticksec(), + max_hp = getbaseinfo(actor, 10), + hp = getbaseinfo(actor, 9), + hiter = getplayerbyid(VarStr(actor, "S$击杀者id")) + } + + jhxbbgame.HideUI(actor, "fuhuotanchuang") + local rethp = jhxbbgame.IncHP(actor, vdata.max_hp) + + jhxbbgame.log(actor,getbaseinfo(actor,1), ".Realive = ",m,vdata.hp,rethp,vdata.hiter,VarStr(actor, "S$击杀者id")) + + SetVarStr(actor, "S$击杀者id", "") + for key, value in pairs(zbcfg.zbr) do + vdata.zb = key + if value + and zbcfg.cdpass(actor, vdata, 2) + and zbcfg.GetBodyItem(actor, vdata.zb, 1) + and value(actor, vdata) then + zbcfg.cdupdate(actor, vdata, 1) + jhxbbgame.log(actor, key, ".复活 = ") + end + end +end + +zbcfg.ResetVarAtLogin = { "D99" } +function zbcfg.login(actor) + svautoplay.die(actor) + jhxbbgame.log(actor,"x"..getbaseinfo(actor, 2),getconst(actor, "<$USERACCOUNT>"),getbaseinfo(actor, 1), "zbcfg.login---------------") + zbcfg.reload(actor,333, -1) + --横行霸道 + if jhxbbgame.timeSecAt(actor, "U10",os.time()) + or VarInt(actor, "U10") < 1 then + jhxbbgame.SettimeSec(actor, "U10", 300,os.time()) + end + setontimer(actor, 18, 1, 0, 1) + SetVarInt(actor, "D99", jhxbbgame.ticksec() + 1001118) +end + +function sendability(actor, bb) + -- if false and getgmlevel(actor) > 1 then + -- jhxbbgame.log(actor, + -- "sendability:专属=", + -- getattlist(actor, "专属") + -- ,getconst(actor, "<$ATTR[74]>") + -- ,getconst(actor, "<$ATTR[222]>") + -- --,tbl2json(attrtab(actor)) + + -- )--) + -- end + sendability6(actor) +end + +function kflogin(actor) + jhxbbgame.bfcall(actor, "kflogined", {}) + release_print(actor, ".kflogin **= ") + --login(actor) + + + -- makebodyitemindexs(actor) + -- zbcfg.login(actor) +end + +function kuafuend(actor) + SetVarInt(actor,"N$kftime", os.time()) + kuafusys.kend(actor) + jhxbbgame.ShowTopBtn(actor) + zbcfg.reload(actor,333, -1) + release_print(actor, ".kuafuend = ") +end + +function bfsyscall19(actor, arg1, arg2) + local role_name = getbaseinfo(actor, 1) + release_print("收到通知", role_name, arg1, arg2) + local cfg = json2tbl(arg1) or {15,0} + delaygoto(actor, 888, "makebodyitemindexs,r,"..(cfg[1] or 16)..","..(cfg[2] or 0)) + --makebodyitemindexs(actor,nil,cfg[1] or 16,cfg[2] or 0) +end + +function makebodyitemindexs(actor, r, tp, offidx) + offidx = tonumber(offidx) or 0 + tp = tonumber(tp) or 17 + if checkkuafu(actor) and not checkkuafuserver() then + --release_print("本服通知触发跨服QF") + r = nil + bfbackcall(19, getbaseinfo(actor, 2), tbl2json({tp, offidx})) + --return + end + + local uid = getbaseinfo(actor, 2) + --repairall(actor) + local pbodyitem_index = { {}, {}, {}, {}, {}, {}, {} } + local itmInit = {} + pbodyitem_index[11] = {} + pbodyitem_index[20] = {} + pbodyitem_index[21] = {} + pbodyitem_index[22] = {} + pbodyitem_index[23] = {} + local ids = "" + local ty = { 1, 2, 3, 5 } + for k, v in pairs(zbcfg.eqpos) do + local id = jhxbbgame.BodyItem(actor, v) + if id then + ids = ids .. "," .. id + pbodyitem_index[11]["i"..id] = (pbodyitem_index[11]["i"..id] or 0) + 1 + local cfg = jhxbbgame.zb[id] + if cfg then + pbodyitem_index[20][id] = cfg + if cfg[11] then + itmInit[id] = cfg[11] + end + if cfg[21] then + pbodyitem_index[21][id] = cfg + end + if cfg[10] then + pbodyitem_index[23][id] = cfg + end + if cfg[22] then + pbodyitem_index[22][id] = cfg + end + for key, i in pairs(ty) do + if cfg[i] then + pbodyitem_index[i][#pbodyitem_index[i]+1] = id + end + end + end + end + end + pbodyitem_index[10] = itmInit + jhxbbgame.log(actor,getbaseinfo(actor, 1),"make.bodyitemindexs = ", #ids, r,tp,offidx) + bodyitem_index[uid] = pbodyitem_index + if not checkkuafuserver() then + --if offidx < 0 then + zbcfg.init(actor, itmInit) + --end + if offidx > 0 then + zbcfg.uninit(actor, offidx) + end + -- else + -- if offidx < 0 + -- then + -- zbcfg.initex(actor, itmInit) + -- end + -- if offidx > 0 then + -- zbcfg.uninit(actor, offidx) + -- end + + end +end + +function getbodyitemindexs(actor, mode) + mode = mode or 1 + local uid = getbaseinfo(actor, 2) + local pbodyitem_index = bodyitem_index[uid] + if pbodyitem_index then + return pbodyitem_index[mode] + end + zbcfg.reload(actor,888+mode*1000000) + return {} + -- makebodyitemindexs(actor, nil, 10000+mode) + -- return bodyitem_index[uid][mode] + --release_print("makebodyitemindexs = "..tostring(bodyitem_index[0]).." "..tostring(bodyitem_index[1])) +end + +function bfsyscall18(actor, arg1, arg2) + local role_name = getbaseinfo(actor, 1) + --release_print("收到通知", role_name, arg1, arg2) + ontimer18(actor) +end + +--每秒执行,跨服也执行 +function ontimer18(actor) + --setofftimer(actor, 18) + + if checkkuafuserver()--~=checkkuafu(actor) + then + -- release_print("本服通知触发跨服ontimer18") + -- bfbackcall(18, getbaseinfo(actor, 2), "每秒执行") + return + end + jhxbbgame.LogLuaMem() + --local max_hp = getbaseinfo(actor, 10) + --release_print("ontimer18 = ", max_hp * 0.01, jhxbbgame.ticksec(), checkkuafu(actor)) + local cnt = 0 + local vdata = { + max_hp = getbaseinfo(actor, 10), + hp = getbaseinfo(actor, 9), + timecur = jhxbbgame.ticksec() + } + local myitems = getbodyitemindexs(actor, 23) + --local log = {} + for key, value in pairs(myitems) do + vdata.zb = key + if value and value.v then + local v = VarInt(actor, value.v) + --SetVarInt(actor, value.v,0) + --release_print(".每秒11buf = ", value.v,v,vdata.timecur) + if v > 0 and vdata.timecur <= v then + value[10](actor, vdata) + + --release_print(".每秒22buf = ", value.v,VarInt(actor, value.v)) + -- if then + -- log[key] = { value.v, v } + -- end + end + end + cnt = cnt + 1 + end + -- if jhxbbgame.len(log) > 0 then + -- jhxbbgame.log(actor, ".每秒buf = ", tbl2json(log)) + -- end +end + +function boomRange(player, r, eff) + r = tonumber(r) + local map_id = getbaseinfo(player, 3) + local x = getbaseinfo(player, 4) + local y = getbaseinfo(player, 5) + local monster_list = getmapmon(map_id, "", x, y, r) + local ret = #monster_list + local pos = jhxbbgame.rpos[r] + + jhxbbgame.log(player, "boomRange----", #pos) + + for key, value in pairs(pos) do + jhxbbgame.mapeff(player, eff, value.x + x, value.y + y) + end + if type(monster_list) == "table" then + for k, mon in pairs(monster_list) do + local mx = math.abs(getbaseinfo(mon, 4) - x) + local my = math.abs(getbaseinfo(mon, 5) - y) + + jhxbbgame.log(player, "boomRange----", mx, my, r) + if (mx == r and my <= r) + or (mx <= r and my == r) then + ret = jhxbbgame.DecHP(mon, 0.11) + end + end + end + jhxbbgame.log(player, "*boomRange" .. ret .. ",eff:" .. eff) +end + +function canpush(actor, target,hiter, magid,result) + --jhxbbgame.log(hiter,"*hiter",result) + -- jhxbbgame.log(target,"->target") + local ret = jhxbbgame.canpush(hiter, target) + + if ret then + return 1 + else + return 2 + end +end + + +function jhxbbgame.canpush(self, tag) + local sr,tr = getbaseinfo(self, 39) , getbaseinfo(tag, 39) + local sl,tl = getbaseinfo(self, 6) , getbaseinfo(tag, 6) + local boret = (sr > tr) + or ((sr == tr) and (sl > tl)) + + boret = boret or zbcfg.GetBodyItem(self, zbcfg.idxs[7]) + or zbcfg.GetBodyItem(self, zbcfg.idxs[8]) + jhxbbgame.log(self, "*canpush:", boret,sr , tr,sl,tl) + return boret +end +function magtagfunc27(actor, target) + if isnotnull(target) then + if zbcfg.GetBodyItem(actor, zbcfg.idxs[7]) then + makeposion(target, 5, 1) + elseif zbcfg.GetBodyItem(actor, zbcfg.idxs[8]) then + makeposion(target, 5, 2) + end + end +end + +function magtag11111func1003(actor, target) + if isnotnull(target) then + if isplayer(actor) then + local cnt = tonumber(jhxbbgame.CInt(actor, "<$ATTR[74]>")) * 2 + jhxbbgame.sendmsg(actor, + getbaseinfo(target, 5) .. "龙骨吞噬者+" .. cnt) + end + end +end + +function magtagfunc66111(actor, target) + --极度深寒 开天斩50%几率强制冰冻目标1秒 + if isnotnull(target) then + --jhxbbgame.HintEff(target, "极度深寒.神器") + end +end + +function magtagfunc71(actor, target) + --擒龙手 + if isnotnull(target) + and jhxbbgame.canpush(actor, target) then + + makeposion(target,5,1.5) + jhxbbgame.HintEff(target, "擒龙手.麻痹") + jhxbbgame.HintEff(actor, "擒龙手.麻痹") + end +end +function magtagfunc2012(actor, target) + if isnotnull(target) then + if isplayer(actor) then + -- local cnt = tonumber(jhxbbgame.CInt(actor, "<$ATTR[74]>")) * 2 + -- jhxbbgame.sendmsg(actor, + -- getbaseinfo(target, 5) .. "tag龙骨吞噬者+" .. cnt) + end + end +end + +function addwd(actor, time, hint) + --changemode(actor,1,1) +if isplayer(actor) then + time = tonumber(time) + if checkhumanstate(actor, 11, 1) then + makeposion(actor, 0, 1, 0) + end + jhxbbgame.SettimeSec(actor, "N$无敌结束时间", time) + jhxbbgame.showeff(actor, 141, time) + jhxbbgame.log(actor, hint .. "+无敌") + jhxbbgame.HintEff(actor, hint) +else + jhxbbgame.log(actor,getbaseinfo(actor,1), hint .. "+无gg敌") +end +end + +--技能释放 +function beginmagic(actor, skillId, skillName, target, x, y) + beginmagic6(actor, skillId, skillName, target, x, y) + if "xdt316" == getbaseinfo(actor,3) and (skillId == 6 or skillId == 51) then + return false + end + --jhxbbgame.GMLog(actor, "*",skillName,skillId,getbaseinfo(actor,3)) + --jhxbbgame.log(actor, skillName..".2...="..getskilldqcd(actor,skillName)) + + --skillrestcd(actor,skillId,0) + if VarInt(actor,"N$cd"..skillName) == 1 then + jhxbbgame.log(actor, "*恢复CD.",skillName..".2...="..getskilldqcd(actor,skillName)) + + SetVarInt(actor,"N$cd"..skillName,0) + setskilldeccd(actor,skillName,"=",0) + end + local vdata = { timecur = jhxbbgame.ticksec() } + if skillId == 2002 then + if jhxbbgame.timeSecAt(actor, "U138", vdata.timecur) then + jhxbbgame.sendmsg(actor, "CD300秒") + return false + end + jhxbbgame.SettimeSec(actor, "N$无敌结束时间", 3) + jhxbbgame.SettimeSec(actor, "U138", 300) + makeposion(actor, 12, 3) + elseif skillId == 1002 then + local bohave = false + for key, value in pairs({ 7, 8, 9, 10, 11 }) do + if checkhumanstate(actor, value) then + bohave = true + break + end + end + if not bohave then + for i = 1, 8, 1 do + if checkhumanstate(actor, 12, i) then + bohave = true + break + end + end + end + if bohave and not jhxbbgame.timeSecAt(actor, "U019", vdata.timecur) then + jhxbbgame.SettimeSec(actor, "U019", 180, vdata.timecur) + delbuff(actor, 31126) + delbuff(actor, 31121) + delbuff(actor, 31124) + delbuff(actor, 31118) + delbuff(actor, 31119) + detoxifcation(actor, -1) + jhxbbgame.log(actor, "游龙万象*神技") + jhxbbgame.HintEff(actor, "游龙万象*神技") + end + return + elseif skillId == 1005 then + if jhxbbgame.timeSecAt(actor, "U139", vdata.timecur) then + jhxbbgame.sendmsg(actor, "CD300秒.") + return false + end + + jhxbbgame.SettimeSec(actor, "U139", 300) + + local mapid = getbaseinfo(actor, 3) + local plays = getobjectinmap(mapid, x, y, 4, 1) + jhxbbgame.mapeff(actor, 42, x, y) + for key, value in pairs(plays) do + if not ispropertarget(actor, value) then + jhxbbgame.SettimeSec(value, "U150", 6) + jhxbbgame.log(value, "火焰领主之冠.治愈") + jhxbbgame.sendmsg(value, "火焰领主之冠.治愈") + end + end + elseif skillId == 10051 then + local timecur = jhxbbgame.ticksec() + if jhxbbgame.timeSecAt(actor, "U139", timecur) then + jhxbbgame.sendmsg(actor, "CD300秒.") + return false + end + + --jhxbbgame.SettimeSec(actor,"U139",300) + + jhxbbgame.sendmsg(actor, "Boom.") + local eff = { 60450, 60451, 60452 } + for i = 1, 3 do + delaygoto(actor, i * 1000, + "boomRange," .. (i * 2) .. "," .. eff[i], 1) + end + end + + local cnt = 0 + local myitems = getbodyitemindexs(actor, 22) + vdata.max_hp = getbaseinfo(actor, 10) or 1 + vdata.hp = getbaseinfo(actor, 9) + vdata.selfx = getbaseinfo(actor, 4) + vdata.selfy = getbaseinfo(actor, 5) + + for key, value in pairs(myitems) do + vdata.zb = key + if zbcfg.cdpass(actor, vdata, nil, 2) then + --local cfg = zbcfg.a21[value] + local cfg = jhxbbgame.zb[key] + --jhxbbgame.log(actor,"addbuff.a21:",cfg,value) + + if cfg and cfg[22] + and cfg[22](actor, target, actor, skillId, 0, 0, vdata) + then + --release_print(value, ".释放技能A = ", skillId) + zbcfg.cdupdate(actor, vdata, 3) + end + end + cnt = cnt + 1 + end +end + +--受击 +local cdmon = {} +local posDamage = {} +local MDposxy = {} + + + +local cdmon3 = {} +function FnPosDamage(sysobj, Hiter) + local cnt = posDamage[Hiter] or 0 + local pos = MDposxy[Hiter] + if cnt >= 1 and (pos) then + cnt = cnt - 1 + posDamage[Hiter] = cnt + grobaldelaygoto(1000, "FnPosDamage," .. Hiter) + local plays = getobjectinmap(pos[1], pos[2], pos[3], 2, 1) + + jhxbbgame.log(sysobj, "火焰泥潭.", jhxbbgame.len(plays)) + for key, value in pairs(plays or {}) do + local ret = jhxbbgame.DecHP(value, 0.2) + jhxbbgame.log(value, "火焰泥潭.灼烧 -20%", ret) + jhxbbgame.HintEff(value, "正在承受坤之火焰泥潭灼烧 血量-20%") + end + end +end + +local strdamageing = 0 +local strdamageingcnt = 0 +function struckdamage(actor, Hiter, Target, MagicId, Damage) + --struckdamage6(actor, Hiter, Target, MagicId, Damage) + + + local dtime = gettcount64() + local xbb = jhxbbgame + if false + --and hasbuff(actor, 31119) + and isplayer(Target) + then + xbb.log(Target, + "*struckdamage!" ,MagicId, + getbaseinfo(Target, 5), + ismon(Hiter),isplayer(Hiter)) + --return 0 + end + local vdata = { timecur = xbb.ticksec() } + svautoplay.struck(actor,Hiter,vdata) + local hp = isplayer(Hiter) + local hm = ismon(Hiter) + local monmax = getbaseinfo(Target,12) + if (not hp) and (not hm) and monmax > 0 then + xbb.log(Hiter,"212.monmax:",monmax) + return monmax + end + if isplayer(Target) + and xbb.timeSecAt(Target, "N$万里雷霆衣19", vdata.timecur) then + SetVarInt(Target, "N$万里雷霆衣19", 0) + xbb.sendmsg(Hiter, "万里雷霆衣!免疫伤害") + xbb.log(actor, Target, ".万里雷霆衣!免疫伤害", Damage) + return 0 + end + + if isplayer(Target) + and xbb.timeSecAt(Target, "N$无敌结束时间", vdata.timecur) then + xbb.HintEff(Hiter, "目标无敌中!免疫伤害") + --jhxbbgame.HintEff(Target, "无敌中!免疫伤害1") + xbb.log(actor, Target, ".无敌中!免疫伤害", Damage) + xbb.showeff(Target, 141, 1) + return 0 + end + if strdamageing == vdata.timecur then + -- jhxbbgame.log(actor, "*Skip1. - ", strdamageingcnt,zbcfg.last, + -- MagicId,zbcfg.last2) + strdamageingcnt = strdamageingcnt + 1 + return Damage + end + local retdam = Damage + if isplayer(Target) + and Target == actor then + strdamageing = vdata.timecur + vdata.max_hp = getbaseinfo(actor, 10) or 1 + vdata.hp = getbaseinfo(actor, 9) + vdata.selfx = getbaseinfo(actor, 4) + vdata.selfy = getbaseinfo(actor, 5) + if isplayer(Hiter) + and isplayer(Target) + and Target == actor then + local myitems = getbodyitemindexs(actor, 3) + local cnt = 0 + --release_print(jhxbbgame.len(myitems).."struck.111.damage = ", Damage, MagicId) + for i = 1, #myitems, 1 do + local value = myitems[i] + vdata.zb = value + if zbcfg.cdpass(actor, vdata, 3) then + local cfg = xbb.zb[value] + zbcfg.last = value + zbcfg.last2 = zbcfg.last + if cfg and cfg[3] and cfg[3](actor, Target, Hiter, MagicId, Damage, 0, vdata) then + zbcfg.cdupdate(actor, vdata, 3) + --jhxbbgame.log(actor, value, ".被人物攻击 = ", Damage) + end + zbcfg.last = nil + end + cnt = cnt + 1 + end + elseif ismon(Hiter) then + local myitems = getbodyitemindexs(actor, 5) + local mid = tonumber(getbaseinfo(Hiter, 55)) - 2665 + --release_print(Hiter, ".被怪物攻击 = ", mid, mcd) + if mid == 1 then + local mcd = tonumber(cdmon[Hiter]) + if vdata.timecur >= mcd then + cdmon[Hiter] = (vdata.timecur + 11) + posDamage[Hiter] = 5 + MDposxy[Hiter] = { getbaseinfo(Hiter, 3), vdata.selfx, vdata.selfy } + --jhxbbgame.log(actor, "火焰泥潭.灼烧 -20%", jhxbbgame.any2str(false, MDposxy[Hiter])) + xbb.mapeff(actor, 60344, nil, nil, nil, 5) + grobaldelaygoto(1000, "FnPosDamage," .. Hiter) + end + elseif mid == 2 then + if not zbcfg.GetBodyItem(actor, zbcfg.idxs[2]) then + --local ret = + xbb.DecHP(actor, 0.4) + --jhxbbgame.log(actor, "忍术指环 -40%", ret) + --jhxbbgame.HintEff(actor, "忍术指环") + end + elseif mid == 3 then + local mcd = tonumber(cdmon3[Hiter]) + if vdata.timecur >= mcd + and (not zbcfg.GetBodyItem(actor, zbcfg.idxs[4])) then + cdmon3[Hiter] = (vdata.timecur + 30) + local ret = xbb.DecHP(actor, 0.1) + makeposion(actor, 0, 10, ret) + addbuff(actor, 31126, 10) + --jhxbbgame.log(actor, "中毒伤害 -10%", ret) + xbb.HintEff(actor, "中毒伤害") + end + end + + + local cnt = 0 + + for i = 1, #myitems, 1 do + local value = myitems[i] + vdata.zb = value + if zbcfg.cdpass(actor, vdata, 5) then + local cfg = xbb.zb[value] + zbcfg.last = value + zbcfg.last2 = zbcfg.last + if cfg and cfg[5] and cfg[5](actor, Target, Hiter, MagicId, Damage, 0, vdata) then + zbcfg.cdupdate(actor, vdata, 3) + --if > 0 then + --jhxbbgame.log(value, ".被怪物攻击 = ", Damage) + --end + end + zbcfg.last = nil + end + cnt = cnt + 1 + end + end + + + + local v = VarInt(actor, "D97") + if v > 0 then + --jhxbbgame.log(actor, "*寂静星魔铠.化血盾 - ", v) + if v < retdam then + retdam = retdam - v + v = 0 + else + v = v - retdam + retdam = 0 + end + + xbb.showeff(actor, 141) + SetVarInt(actor, "D97", v) + end + local xs = getbaseinfo(actor, 51, 223) + if (vdata.pwRate and vdata.pwRate ~= 1) or xs > 0 then + vdata.pwRate = (vdata.pwRate or 1) - (tonumber(getbaseinfo(actor, 51, 223)) / 100) + if vdata.pwRate < 0 then + --jhxbbgame.log(actor, "伤害.限制 = ", vdata.max_hp, vdata.pwRate) + + retdam = 0 + else + retdam = math.max(math.min(retdam * vdata.pwRate, 1000 * 10000), 0) + end + end + if zbcfg.GetBodyItem(actor, zbcfg.idxs[13]) then + local mhp = getbaseinfo(actor, 10) + local v = math.floor(mhp * 0.33) + if v > 0 and retdam > v then + --jhxbbgame.log(actor, "炎君赤羽衣.限制 = ", v) + retdam = math.min(retdam, v) + end + end + if zbcfg.GetBodyItem(actor, zbcfg.idxs[14]) then + local hpr = vdata.hp / vdata.max_hp + if hpr <= 0.5 then + local ret = math.floor(vdata.max_hp * 0.1) + --jhxbbgame.log(actor, "末日灵魂披风.限制 = ", vdata.max_hp, ret) + --jhxbbgame.HintEff(actor, "末日灵魂披风.限制" .. ret) + + retdam = math.min(retdam, ret) + end + end + end + if strdamageingcnt > 0 then + xbb.log(actor, "*Skip.end. - ", strdamageingcnt,zbcfg.last, + MagicId,zbcfg.last2) + strdamageingcnt = 0 + end + strdamageing = 0 + --release_print("attack.ret.damage = ",Damage,cnt) + dtime = gettcount64()-dtime + if dtime >= 60 then + xbb.log(actor, getbaseinfo(actor, 1), "*dtime.end. - ", dtime,zbcfg.last, + MagicId,zbcfg.last2, retdam) + end + + + + return retdam +end + +local attdamageing = 0 +local attdamageingcnt = 0 +function attackdamage(actor, -- object 玩家对象 + Target, -- object 受击对象 + Hiter, -- object 攻击对象 + MagicId, -- integer 技能ID + Damage, -- integer 伤害 + Model -- integer 引擎64_23.10.24新增 当前攻击模式 +) + --attacklong(actor, Target, Hiter, MagicId) + -- if --true + -- false + -- then + -- jhxbbgame.GMLog(Hiter, "*Att:",Model,MagicId,Damage,getbaseinfo(Target, 9),getbaseinfo(Target, 10)) + + -- end + --jhxbbgame.GMLog(Hiter, ".怪物被攻击1= ", Model, MagicId,getbaseinfo(Target,12)) + + if Model ~= 0 then + return Damage + end + local xbb = jhxbbgame + -- local stime = gettcount64() + kuafusys.pking(Target, actor,Damage) + if isplayer(Hiter) + and hasbuff(Hiter, 31119) then + xbb.sendmsg(Hiter, "束缚中!攻击无效") + xbb.log(Hiter, "*束缚中.攻击无效= ") + return 0 + end + local hp = isplayer(Hiter) + -- if isplayer(actor) + -- and ismon(Target) + -- --and hasbuff(actor, 31119) + -- then + -- --jhxbbgame.sendmsg(actor, MagicId.."attackdamage!攻击无效"..getbaseinfo(Target, 5)) + -- return 0 + -- end + + + -- if isplayer(actor) + -- and ismon(Target) + -- --and hasbuff(actor, 31119) + -- then + -- --jhxbbgame.sendmsg(actor, Model.."attackdamage!"..getbaseinfo(Target, 5)) + -- --return 0 + -- end + + if hp + -- and Model == 3 + and MagicId == 1003 then + -- local cnt = jhxbbgame.CInt(Hiter,"<$ATTR[74]>") + -- cnt = jhxbbgame.DecHP(Target, cnt,101) + -- jhxbbgame.sendmsg(Hiter, getbaseinfo(Target, 5) .. "龙骨吞噬者+" .. Model) + return 0 + end + + local retdam = Damage + local vdata = { + dam = 0, + timecur = xbb.ticksec(), + rate = math.random(1, 10000), + hp = getbaseinfo(actor, 9), + max_hp = getbaseinfo(actor, 10), + tmax_hp = getbaseinfo(Target, 10), + thp = getbaseinfo(Target, 9) + } + + attackdamage6(actor, Target, Hiter, MagicId, Damage, Model,vdata) + --jhxbbgame.GMLog(Hiter, ".怪物被攻击6= ", Model, MagicId,getbaseinfo(Target,12)) + + + local hm = ismon(Hiter) + local tp = isplayer(Target) + local tm = ismon(Target) + local monmax = getbaseinfo(Target,12) + if (not hp) and (not hm) and monmax > 0 then + --jhxbbgame.log(Hiter,"11.monmax:",monmax) + --jhxbbgame.GMLog(Hiter, ".怪物被攻击.12= ", Model, MagicId,getbaseinfo(Target,12)) + + return monmax + end + + vdata.selfx = getbaseinfo(actor, 4) + vdata.selfy = getbaseinfo(actor, 5) + --release_print("attack.111.damage = ", Damage, MagicId) + + if attdamageing == vdata.timecur then + attdamageingcnt = attdamageingcnt + 1 + -- jhxbbgame.log(actor, "*SkipAtt. - ",attdamageingcnt, zbcfg.last, + -- MagicId,zbcfg.last2) + --jhxbbgame.GMLog(Hiter, ".怪物被攻击.13= ", Model, MagicId,getbaseinfo(Target,12)) + + return Damage + end + --jhxbbgame.GMLog(Hiter, ".怪物被攻击.15= ", Model, MagicId,getbaseinfo(Target,12)) + + + local function k95(aretdam) + if tm and xbb.MonCanBuf(Target) then + if getflagstatus(actor, 103) == 1 and + (vdata.thp / vdata.tmax_hp)>=0.96 then + --jhxbbgame.HintEff(actor, "坠天使") + aretdam = aretdam + vdata.tmax_hp * 0.1 + end + end + return aretdam + end + attdamageing = vdata.timecur + if tp then + if xbb.timeSecAt(Target, "D96", vdata.timecur) then + xbb.sendmsg(Target, "九天繁星衣免疫中") + elseif xbb.timeSecAt(Target, "N$无敌结束时间", vdata.timecur) then + xbb.sendmsg(Target, "无敌中!免疫伤害") + else + local myitems = getbodyitemindexs(actor, 1) + local cnt = 0 + ---release_print("attack.222.damage = ", jhxbbgame.len(myitems)) + for i = 1, #myitems, 1 do + local value = myitems[i] + vdata.zb = value + if zbcfg.cdpass(actor, vdata, 1) then + local cfg = xbb.zb[value] + zbcfg.last = value + zbcfg.last2 = zbcfg.last + if cfg and cfg[1] and cfg[1](actor, Target, Hiter, MagicId, Damage, 0, vdata) then + zbcfg.cdupdate(actor, vdata, 1) + --jhxbbgame.log(value, ".攻击人物 = ", Damage) + end + zbcfg.last = nil + end + cnt = cnt + 1 + end + local vv = VarInt(actor, "U018") + if vv > 0 then + vv = vdata.thp*(vv / 100) + --local hpv = + xbb.DecHP(Target, vv) + + --jhxbbgame.log(Hiter, "*对人切割百分比= ", vv, hpv) + end + end + elseif tm then + local mid1 = tonumber(getbaseinfo(Target, 55)) + if 2679 == mid1 then + if MagicId > 100 then + retdam = 1 + end + elseif monmax <= 0 then + local mid = mid1 - 2665 + --jhxbbgame.GMLog(Hiter, ".怪物被攻击= ", mid, mid1,getbaseinfo(Target,12)) + if (mid >= 1) and (mid <= 8) then + local kv = VarInt(actor, "N$对坤切割") + if (kv > 0) then + kv = xbb.DecHP(Target,kv,119,nil,nil,nil,nil,kv) + --jhxbbgame.HintEff(actor, "对坤切割+"..kv) + end + end + if mid == 3 then + if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[4])) then + --jhxbbgame.log(actor, "四大路坤:坤〔毒〕〕免疫", ret) + xbb.HintEff(actor, "坤〔毒〕〕免疫") + return k95(0) + end + elseif mid == 4 then + if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[2])) + or (not zbcfg.GetBodyItem(actor, zbcfg.idxs[4])) then + --jhxbbgame.log(actor, "五大陆坤〔毒〕免疫", ret) + xbb.HintEff(actor, "坤4〔毒〕〕免疫") + + return k95(0) + end + elseif mid == 5 then + if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[1])) then + --jhxbbgame.log(actor, "六大陆坤〔御〕免疫", ret) + xbb.HintEff(actor, "坤5〔御〕〕免疫") + return k95(0) + else + return retdam + vdata.tmax_hp * 0.01 + end + elseif mid == 6 then + if (not zbcfg.GetBodyItem(actor, zbcfg.idxs[5])) then + --jhxbbgame.log(actor, "七大陆坤〔速〕免疫", ret) + xbb.HintEff(actor, "坤6〔速〕〕免疫") + + return k95(0) + end + end + if vdata.hp < vdata.max_hp then + local monxx = xbb.CInt(actor, "<$ATTR[209]>") + if hasbuff(actor, 31126) or + hasbuff(actor, 31132) then + --jhxbbgame.HintEff(actor, "*对怪吸血无效" .. monxx) + --jhxbbgame.log(actor, "*对怪吸血无效", monxx) + monxx = 0 + end + if monxx > 0 then + --local ret = + xbb.IncHP(actor, monxx) + --jhxbbgame.log(actor, "*对怪吸血+", monxx,ret) + end + end + local myitems = getbodyitemindexs(actor, 2) + local cnt = 0 + + --jhxbbgame.GMLog(actor,jhxbbgame.len(myitems),"attack.ismon.damage = ", Damage, MagicId) + for i = 1, #myitems, 1 do + local value = myitems[i] + vdata.zb = value + --jhxbbgame.GMLog(actor,value, "*-cd.攻击怪物 = ", Target) + if zbcfg.cdpass(actor, vdata, 2) then + local cfg = xbb.zb[value] + zbcfg.last = value + zbcfg.last2 = zbcfg.last + --jhxbbgame.GMLog(actor,value, "*攻击怪物 = ", Target) + if cfg and cfg[2] and cfg[2](actor, Target, Hiter, MagicId, Damage, Model, vdata) then + zbcfg.cdupdate(actor, vdata, 1) + if 0 > 0 then + --jhxbbgame.log(actor,value, ".攻击怪物 = ", Target) + end + end + zbcfg.last = nil + end + cnt = cnt + 1 + end + end + + local vv = tonumber(getconst(actor, "<$ATTR[231]>")) + if vv > 0 then + local dc = tonumber(getconst(actor, "<$ATTR[4]>")) + local dv = dc*(vv / 10000) + --local hpv = + xbb.DecHP(Target, dv,116) + --jhxbbgame.log(Hiter, Model,MagicId,"*对怪增伤= ", hpv) + end + + if monmax > 0 then + retdam = math.min(retdam,monmax) + end + end + + if attdamageingcnt > 0 then + xbb.log(actor, "*SkipAtt.end. - ", attdamageingcnt,zbcfg.last, + MagicId,zbcfg.last2) + attdamageingcnt = 0 + end + attdamageing = 0 + --release_print("attack.ret.damage = ",Damage,cnt) + if vdata.pwRate and vdata.pwRate ~= 1 then + retdam = math.max(math.min(retdam * vdata.pwRate, 1000 * 10000), 0) + end + + -- stime = gettcount64()-stime + -- if stime >= 60 then + -- jhxbbgame.log(actor, getbaseinfo(actor, 1), "*stime.end. - ", stime,zbcfg.last, + -- MagicId,zbcfg.last2, retdam) + -- end + return k95(retdam) +end + +function zbcfg.idx(actor, item) + return getiteminfo(actor, item, 2) +end + +function zbcfg.build() + zbcfg.zbx = {} + zbcfg.zbd = {} + zbcfg.zbr = {} + zbcfg.zbi = {} + zbcfg.a21 = {} + zbcfg.tim = {} + for key, value in pairs(jhxbbgame.zb) do + if value and value[15] then + zbcfg.zbx[key] = value[15] + end + if value and value[16] then + zbcfg.zbd[key] = value[16] + end + if value and value[17] then + zbcfg.zbr[key] = value[17] + end + if value and value[21] then + zbcfg.a21[key] = value[21] + end + if value and value[10] then + zbcfg.tim[key] = value + end + end + jhxbbgame.log(nil,".zbcfg.build(zbx,zbd,zbr) = ", + jhxbbgame.len(zbcfg.zbx), + jhxbbgame.len(zbcfg.zbd), + jhxbbgame.len(zbcfg.zbr), + jhxbbgame.len(zbcfg.tim), + jhxbbgame.len(zbcfg.a21)) +end + +function attackdamagebb(actor, -- object 玩家对象 + Target, -- object 受击对象 + Hiter, -- object 攻击对象 + MagicId, -- integer 技能ID + Damage -- integer 伤害 +) + --jhxbbgame.log(actor, ".zbcfg.attackdamagebb() = ") + + --jhxbbgame.DecHP(Target, 10000) + --攻击怪物时概率召唤5只地狱骷髅为你助战,骷髅刀刀对怪物造成20000固定伤害。持续60秒,期间骷髅处于无敌状态(cd180秒) + + if ismon(Target) and jhxbbgame.MonCanBuf(Target) then + jhxbbgame.DecHP(Target, 20000,101) + return 0 + else + return Damage + end +end + +function zbcfg.run(actor) + --jhxbbgame.log(actor,"*run",getconst(actor,"<$MAP>")) + + kuafusys.run(actor) + + if hasbuff(actor, 31121) then + --local ret = + jhxbbgame.DecHP(actor, 0.05) + + jhxbbgame.showeff(actor, 14) + --jhxbbgame.HintEff(actor, "奇毒") + end +end + +function attacklong(actor, Target, Hiter, MagicId) + +end + +function humanhpex(actor, monster_guid) + if monster_guid then + local mapID = getbaseinfo(actor, 3) + local monobj = getmonbyuserid(mapID, monster_guid) + if isnotnull(monobj) and jhxbbgame.MonCanBuf(monobj) then + -- local x = getbaseinfo(actor, 4) + -- local y = getbaseinfo(actor, 5) + --monmission(monobj,tostring(x)..";",tostring(y)..";",0) + local damage = getbaseinfo(actor, 20) + --sendattackeff(monobj,107,damage,"*") + humanhp(monobj, "-", damage, 1, 0, actor, 1, 1) + --makeposion(monobj,0,3,1,1) + end + end +end +function qixinxin(actor,a) + local vdata ={} + vdata.m = getbaseinfo(actor, 3) + vdata.selfx = getbaseinfo(actor, 4) + vdata.selfy = getbaseinfo(actor, 5) + local cnt = tonumber(getconst(actor, "<$ATTR[74]>")) + local plays = getobjectinmap(vdata.m ,vdata.selfx,vdata.selfy,4,2) + dotaunt(actor,5,999999) + --jhxbbgame.log(actor, "*七星问斩.",jhxbbgame.len(plays),cnt) + + for i = 1, #plays, 1 do + local val = plays[i] + local ret = jhxbbgame.DecHP(val,cnt,101,nil,nil,actor) + sendattackeff(val,101, ret) + --sendattackeff(actor,113,ret) + --jhxbbgame.HintEff(actor, "八方炎龙.-100%="..ret) + end +end + +function modaodao(actor,Target) + --SetVarInt(actor, "N$魔刀千刃CD", 0) + local vdata ={} + vdata.selfx = getbaseinfo(actor, 4) + vdata.selfy = getbaseinfo(actor, 5) + + local cfg = {} + if isnotnull(Target) then + cfg = { getbaseinfo(Target, 2) } + end + + local mapID = getbaseinfo(actor, 3) + local mons = getobjectinmap(mapID, vdata.selfx,vdata.selfy, 6, 2) + if #mons < 2 then return end + --local pw = tonumber(getconst(actor, "<$MAXDC>")) + --jhxbbgame.sendmsg(actor, "魔刀千刃:" .. pw) + dotaunt(actor, 8, 999999) + for i, mon in ipairs(mons or {}) do + local mid1 = tonumber(getbaseinfo(mon, 55)) + if Target ~= mon and 2679 ~= mid1 then + local mid = getbaseinfo(mon, 2) + cfg[#cfg + 1] = mid + delaygoto(actor, 200 * i, "humanhpex," .. mid, 0) + --jhxbbgame.DecHP(mon, pw, nil, nil, nil, actor) + if #cfg >= 8 then + break + end + end + end + sendluamsg(actor, 0xeff, 0, 0, 23, tbl2json(cfg)) +end +function attack(actor, Target, Hiter, MagicId) + + local vdata = { timecur = jhxbbgame.ticksec() } + local gb = getbaseinfo + --attack6(actor, Target, Hiter, MagicId) + + --sendluamsg(actor, 0xeff, 10, + --0,60549,getbaseinfo(actor,2)) + + --jhxbbgame.log(Hiter,"*60546") + + if MagicId == 56 then + sendattackeff(actor, 114,1) + elseif MagicId == 66 then + sendattackeff(actor, 115,1) + elseif MagicId == 26 then + sendattackeff(actor, 118,1) + end + if isplayer(Target) then + jhxbbgame.SettimeSec(actor,"U27",5,os.time()) + kuafusys.pking(Target) + kuafusys.pking(actor) + jhxbbgame.SetPKFlag(Target, 2) + jhxbbgame.SetPKFlag(Hiter, 3) + elseif ismon(Target) then + jhxbbgame.SettimeSec(actor,"U27",3,os.time()) + + svautoplay.attack(actor, vdata) + if checkkuafuserver() then + local monxx = jhxbbgame.CInt(actor, "<$ATTR[224]>") + if monxx > 0 then + jhxbbgame.DecHP(Target,monxx,107, + nil,nil,nil,nil,monxx+1) + sendattackeff(Target,107,monxx,actor) + --jhxbbgame.HintEff(actor, "坠天使11") + end + end + if jhxbbgame.MonCanBuf(Target) then + local mid1 = tonumber(gb(Target, 55)) + if 2679 ~= mid1 then + makeposion(Target, 0, 3) + + local cnt = 0 + + vdata.max_hp = gb(actor, 10) or 1 + vdata.hp = gb(actor, 9) + vdata.m = gb(actor, 3) + vdata.selfx = gb(actor, 4) + vdata.selfy = gb(actor, 5) + -- local myitems = getbodyitemindexs(actor, 21) + -- for key, value in pairs(myitems) do + -- vdata.zb = key + + -- if zbcfg.cdpass(actor, vdata) then + -- --local cfg = zbcfg.a21[value] + -- local cfg = jhxbbgame.zb[key] + -- --jhxbbgame.log(actor,"addbuff.a21:",cfg,value) + + -- if cfg and cfg[21] and cfg[21](actor, Target, Hiter, MagicId, 0, 0, vdata) then + -- --release_print(value, ".怪物被攻击A = ", 0) + -- zbcfg.cdupdate(actor, vdata, 3) + -- end + -- end + -- cnt = cnt + 1 + -- end + + + --开始龙魂爆发状态下,攻击时3%概率触发七星问斩技能, + --对5x5范围内的敌人,造成100%的切割伤害。 + local bb = (math.random(1,10000)<=300) + --jhxbbgame.HintEff(actor, tostring(jhxbbgame.GetRate).."七星问斩.-100%="..tostring(bb)) + if true + and bb + and (VarInt(actor, "U251") > os.time()) + then + + delaygoto(actor, 100, "qixinxin,"..Target , 1) + + jhxbbgame.mapSelfeff(actor,60518) + sendattackeff(actor,113, cnt,actor) + end + if getflagstatus(actor, 102) == 1 + and (math.random(1,10000)<=900) + and not jhxbbgame.timeSecAt(actor, "N$魔刀千刃CD", vdata.timecur) + then + jhxbbgame.SettimeSec(actor,"N$魔刀千刃CD",10) + --delaygoto(actor, 1, "modaodao,"..Target , 1) + modaodao(actor,Target) + end + end + end + end +end + +release_print(".zbcfg.load() = ") diff --git a/kfsystem.lua b/kfsystem.lua new file mode 100644 index 0000000..375a02c --- /dev/null +++ b/kfsystem.lua @@ -0,0 +1,2121 @@ +local b2i = { [false] = 0, [true] = 1 } + +local waittimesec = 3*60 + +local namesact = { [0] = "跨服", "群骑竞赛", "夺宝战场", "杀戮证道", "据点争夺", "跨服沙巴克","辉煌的凤栖寺院", "泽坤的恩赐", } +local tims = { [0] = { (13 * 60 + 30), (23 * 60 + 30) } +, { (18 * 60 + 30), (18 * 60 + 50) }--群骑竞赛 +, { (19 * 60 + 10), (19 * 60 + 25) }--夺宝战场 +, { (20 * 60 + 00), (20 * 60 + 10) }--杀戮证道 +, { (21 * 60 + 00), (21 * 60 + 20) }--据点争夺 每周二四六开启21:00:00 +, { (21 * 60 + 00), (21 * 60 + 50) }--跨服沙巴克 每周二四六开启21:00:00 +, { (22 * 60 + 00), (22 * 60 + 50) }--辉煌的凤栖寺院 +, { (21 * 60 + 00), (21 * 60 + 50) }--泽坤的恩赐 周日21:00:00 + } + local txcl = {[0]="每天13:30-23:30", + "每天18:30-18:50",--群骑竞赛 + "每天19:10-19:25",--夺宝战场 + "每天20:00-20:10",--杀戮证道 + "每周一三五21:00-21:20",--据点争夺 + "每周二四六21:00-21:50",--跨服沙巴克 + "每天22:00-22:50",--辉煌的凤栖寺院 + "周日21:00-21:50"--泽坤的恩赐 + } + + + +local boxeffid = 60584 +-- local tims = { [0] = nil, nil,nil,nil,nil,nil,nil,{ (18 * 60 + 30), (18 * 60 + 50) }--群骑竞赛 +-- } + +-- local tims = { [0] = nil, nil,{ (18 * 60 + 30), (18 * 60 + 50) }--群骑竞赛 +-- } +--@ff xdt306 130 208 @ff xdt246 192 178 + + +local maps = { { "xdt306", 283, 283 }, { "xdt293", 26, 52 }, { "xdt292", 33, 35 }, +{ "xdt294", 83, 90 }, { "kf3", 650, 300 }, { "xdt292", 33, 35 }, { "xdt316" }, { "xdt292", 33, 35 }, } + +local avtime = {[0]=0, 60, 120, -20, 600, 600, 60*30, 600 } +local jfmaps ={[0]={},{ "xdt306" }, { "xdt293" }, { "xdt292" }, +{ "xdt294","jddd"}, { "kf3", "kf0150" }, { "xdt297", +"xdt298", +"xdt299", +"xdt300", +"xdt301", +"xdt302", +"xdt303", + }, { "xdt316"}, { "xdt292" }, { "xdt292" }, { "xdt292" }} + + + +local zypos = {{40,41}} +local zyname = {"红","蓝"} +local stpos = {{59,26},{16,55}} +local zystmen = {{45,144},{127,45}} + +local oneguild = "" +local AllGuilds = {} +local castleguid = "" +local castleoldguid = "" + +local dieflag = 0 +local dieflag2 = 0 + + +local jlitems = { + [0]= {""}, + [1] = { + "代购币#10&绑定元宝#98888&绑定金币#18888888&书页#40#339&布料#40#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#78888&绑定金币#15888888&书页#30#339&布料#30#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#58888&绑定金币#12888888&书页#20#339&布料#20#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + }, + [2] = { + "代购币#10&绑定元宝#98888&绑定金币#18888888&书页#40#339&布料#40#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#78888&绑定金币#15888888&书页#30#339&布料#30#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + }, + [3] = { + "代购币#10&绑定元宝#98888&绑定金币#18888888&书页#40#339&布料#40#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#78888&绑定金币#15888888&书页#30#339&布料#30#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#58888&绑定金币#12888888&书页#20#339&布料#20#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + }, + [4] = { + "代购币#10&绑定元宝#98888&绑定金币#18888888&书页#40#339&布料#40#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + }, + [5] = { + "代购币#10&绑定元宝#98888&绑定金币#18888888&书页#40#339&布料#40#339&龙玉勋章#1#339", + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + }, + [6] = { + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + }, + [7] = { + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + } + , + [8] = { + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + } + , + [9] = { + "代购币#10&绑定元宝#38888&绑定金币#5888888&书页#10#339&布料#10#339&龙玉勋章#1#339", + } + +} + +release_print("-----跨服玩家消息处理") +kuafusys = { + maps=tbl2json(jfmaps), + msgproc = {}, + bmHour = 25, + roomopen=0, + diedrop=false, + sun=true, + kaimentime = 0, + actstate = { + }, + curact = nil +} +local recfile="QuestDiary/跨服报名.ini" +function kuafusys.read(actor,k) + local ss = tostring(getconst(actor, "<$USERNAME>"))..math.floor(os.time()/86400) + return tonumber(readini(recfile, k, ss)) +end +function kuafusys.write(actor,k, v) + local ss = tostring(getconst(actor, "<$USERNAME>"))..math.floor(os.time()/86400) + local old = kuafusys.read(actor,k) + writeini(recfile, k, ss, v) + jhxbbgame.log(actor,getbaseinfo(actor, 1), getbaseinfo(actor, 2), ss,".write=>",k, v,old) +end + +function kuafusys_setzy(actor,zy) + zy = zy or {z=0} + jhxbbgame.log(actor,"setcamp:",zy.z,getbaseinfo(actor,1),getbaseinfo(actor,2)) + setcamp(actor, zy.z or 0) + jhxbbgame.topui.upzy(actor,zy.z or 0) +end +function kuafusys.setzy(actor,zy) + setcamp(actor, zy) + jhxbbgame.bfcall(actor,"kuafusys_setzy",{z=zy}) + jhxbbgame.log(actor,"kuafusys.setzy:",zy) +end + +function kuafusys_regohome(actor,zy) + local ca = kuafusys.curact + jhxbbgame.IncHP(actor, 0.999) + jhxbbgame.log(actor,"阵营复活:",zy,getbaseinfo(actor,1),getbaseinfo(actor,2)) + if ca and ca.i == 4 and ca.runing == 1 then + local spd = kuafusys.getdataEx(actor, ca.i) + local x,y = getbaseinfo(actor,4),getbaseinfo(actor,5) + if spd.pd.zy > 0 then + local ax,ay = stpos[spd.pd.zy][1],stpos[spd.pd.zy][2] + if not kuafusys.InRange(ax,ay,x,y) then + kuafusys.JoinMap(actor,maps[ca.i],spd,spd.pd.zy) + return + end + end + end + mapmove(actor, "xdt246", 192, 178, 5) +end +function kuafusys.gohome(actor,re) + re = re or 0 + + kuafusys.setzy(actor,0) + jhxbbgame.IncHP(actor, 0.999) + jhxbbgame.log(actor,"kuafusys.gohome:",re) + if re == 1 then + jhxbbgame.kfcall(actor,"kuafusys_regohome",{re=1}) + else + mapmove(actor, "xdt246", 192, 178, 5) + end + kuafusys.NColor(actor, 255) + jhxbbgame.TimeMsg(actor,"",0) + jhxbbgame.take(actor,"传奇宝箱") + jhxbbgame.bfcall(actor,"___xiamaauto",{u=1}) + kuafusys.clearbxeff(actor) + kuafusys.RetAttackMode(actor) +end +function kuafusys.init(i) + i = tonumber(i) + jhxbbgame.log("kuafusys.init:", i) + local t = tims[i] + local s = {joineds={},playdatas={},ranks={},runing=0} + s.i = i + s.actname = namesact[i] + if t then + s.bgtime = t[1] * 60 + s.edtime = t[2] * 60 + + local sun = jhxbbgame.daysun() + if s.actname == "据点争夺" then + if ((sun ==1) or (sun ==3) or (sun ==5)) then + elseif ((sun ==6)) then + s.bgtime = s.bgtime + 2*86400 + s.edtime = s.edtime + 2*86400 + else + s.bgtime = s.bgtime + 86400 + s.edtime = s.edtime + 86400 + end + elseif s.actname == "跨服沙巴克" then + if ((sun ==2) or (sun ==4) or (sun ==6)) then + elseif ((sun ==7)) then + s.bgtime = s.bgtime + 3*86400 + s.edtime = s.edtime + 3*86400 + else + s.bgtime = s.bgtime + 86400 + s.edtime = s.edtime + 86400 + end + elseif s.actname == "泽坤的恩赐" then + if ((sun ==7)) then + else + local dc = 7-sun + s.bgtime = s.bgtime + dc*86400 + s.edtime = s.edtime + dc*86400 + end + end + + -- s.bgtime = jhxbbgame.nowsec()+20 + -- s.edtime = s.bgtime + 3 * 60 + + else + s.bgtime = 0 + s.edtime = 0 + end + + kuafusys.actstate[i] = s + return kuafusys.actstate[i] +end + + + + +--release_print("kuafusys:", tbl2json(kuafusys.actstate)) + +function kuafusys_pubmsg(actor,cfg) + sendmovemsg(actor, 1, 249, 0, 150, 1, cfg.t) + +end +function kuafusys.pubmsg(ca,smsg) + jhxbbgame.log(nil,"-------kf.pubmsg",ca.actname..smsg) + jhxbbgame.bfcall("0","kuafusys_pubmsg",{t="<" .. ca.actname .. "/FCOLOR=250>{"..smsg.."/FCOLOR=253}"}) + +end + +function kuafusys.connected() + return checkkuafuserver() or checkkuafuconnect() +end + +function kuafusys.primsg(actor, ca,smsg) + local caname = (ca and ca.actname) or "跨服" + jhxbbgame.log(actor,"-------kf.primsg",caname,smsg) + --jhxbbgame.sendmsg(actor, ca.actname..":"..smsg) + jhxbbgame.HintEff(actor, caname..":"..smsg,"00FF00") +end +function kuafusys.nonerun(actor) + +end +function kuafusys.run(actor) + --kuafusys._run(actor) +end +function kuafusys.paopush(actor) + jhxbbgame.log(actor,"------------kuafusys.paopush") + + jhxbbgame.kfcall(actor, "kuafusys_paopush") +end + +function kuafusys_paopush(actor) + local ca = kuafusys.curact + if ca and ca.actname == "群骑竞赛" and ca.runing == 1 then + local lv = kuafusys.RecRank(actor, ca) + if lv > 0 then + + end + else + --kuafusys.give(actor,getbaseinfo(actor, 2),"代购币#10&元宝#98888","群骑竞赛") + jhxbbgame.log(actor,"------------kuafusys.paopush.失败活动无效", + tbl2json(ca)) + jhxbbgame.sendmsg(actor, "失败活动无效!") + end +end +function kuafusys.give(actor,uid,itm,tile) + kuafusys.sendkfmail(actor,uid,itm,tile,"跨服活动奖励") +end + +function kuafusys_mail(actor,a) + jhxbbgame.log(actor,"------------.kuafusys_mail.",tbl2json(a)) + if a and a.t and a.u then + local aactor = getplayerbyid(a.u) + if aactor then + sendmail(a.u, 1, a.t, a.tt, a.i) + end + end +end + +function kuafusys.sendkfmail(actor,uid,itm,tile,t2) + jhxbbgame.bfcall(actor,"kuafusys_mail",{u=uid,i=itm,t=tile,tt=t2}) +end + +function clearkfgate() + delmapgate("G1","xdt306") + delmapeffect(131313) + delmapgate("G3","xdt294") + delmapgate("G31","xdt294") +end +function kuafusys.begact(sysact,ca) + jhxbbgame.log(nil,"------------kuafusys.begact",ca.actname) + ca.ranks = ca.ranks or {} + kuafusys.pking = kuafusys.pknone + kuafusys.endguildWar(sysact) + if ca.actname == "群骑竞赛" then + kuafusys.run = kuafusys._run + --local x,y =275,279 + local x,y =273,273 + --mapeffect(131313, "xdt306", x, y, 490, 15, 0) + -- jhxbbgame.MapPlayRun(maps[1][1], function (actor) + -- sendcentermsg(actor,180,251,"还剩余%d后活动开始.",0,180) + -- --sendmapmsg(maps[1][1],tbl2json({Msg=ca.actname.."活动结束!",FColor=255,BColor=155,Type=1,Time=3})) + + -- end) + local t = waittimesec - (jhxbbgame.nowsec()- ca.bgtime) + + if t > 3 then + kuafusys.kaimentime = os.time()+t + addmapgate("G1","xdt306",273,273,6,"xdt306",282,282,2000000) + + else + kuafusys.kaimentime = 0 + end + elseif ca.actname == "夺宝战场" then + if getmoncount("xdt293",-1,true)<1 then + genmon("xdt293", 26, 52, "宝藏巨蟹",5,1,255) + end + kuafusys.act2playupid = kuafusys.act2playupid or "" + kuafusys.act2monkillplayid = kuafusys.act2monkillplayid or "" + kuafusys.bxx = kuafusys.bxx or 17 + kuafusys.bxy = kuafusys.bxy or 56 + elseif ca.actname == "据点争夺" then + local function initzy() + return {pw=0,plays={},ptjf={0,0,0,0,0}, jf=0} + end + ca.zydata = ca.zydata or {initzy(),initzy()} + ca.jdzt= ca.jdzt or {0,0,0,0,0} + -- addmapgate("G3","xdt294",zystmen[1][1],zystmen[1][2],5,"xdt294",36,153,2000000) + -- addmapgate("G31","xdt294",zystmen[2][1],zystmen[2][2],5,"xdt294",136,36,2000000) + + local t = 60 - (jhxbbgame.nowsec()- ca.bgtime) + + if t > 3 then + kuafusys.kaimentime = os.time()+t + else + kuafusys.kaimentime = 0 + end + --genmon("xdt293", 26, 52, "宝藏巨蟹",5,1,255) + elseif ca.actname == "跨服沙巴克" then + if getmoncount("kf3",1001,true)<1 then + genmon("kf3", 624, 278, "LeftWall",0,1,255) + end + if getmoncount("kf3",1002,true)<1 then + genmon("kf3", 627, 278, "CenterWall",0,1,255) + end + if getmoncount("kf3",1003,true)<1 then + genmon("kf3", 634, 271, "RightWall",0,1,255) + end + castleguid = castleguid or "" + elseif ca.actname == "辉煌的凤栖寺院" then + --kuafusys.pking = kuafusys._pkingfx + --genmon("xdt296", 35, 34, "意念掌控者",0,1,254) + if getmoncount("xdt297",-1,true)<1 then + genmon("xdt297", 26, 25, "意念掌控者",0,1,254)end + if getmoncount("xdt298",-1,true)<1 then + genmon("xdt298", 25, 26, "记忆抹杀者",0,1,254)end + if getmoncount("xdt299",-1,true)<1 then + genmon("xdt299", 25, 26, "时空潜行者",0,1,254)end + if getmoncount("xdt300",-1,true)<1 then + genmon("xdt300", 26, 27, "巨龙驾驭者",0,1,254)end + if getmoncount("xdt301",-1,true)<1 then + genmon("xdt301", 26, 26, "邪恶守护者",0,1,254)end + if getmoncount("xdt302",-1,true)<1 then + genmon("xdt302", 26, 26, "亡魂守灵者",0,1,254)end + if getmoncount("xdt303",-1,true)<1 then + genmon("xdt303", 25, 25, "恐惧支配者蓝焰翼龙",0,1,254) + end + ca.mon = 1 + --genmon("xdt304", 29, 22, "CenterWall",0,1,255) + --genmon("kf3", 634, 271, "RightWall",0,1,255) + elseif ca.actname == "泽坤的恩赐" then + kuafusys.pking = kuafusys._pking + kuafusys.makenpc(0) + local ps = kuafusys.makenpc(1) + end +end + + +function kuafusys.pknone(actor) + +end +function kuafusys._pking(actor) + if isplayer(actor) then + SetVarInt(actor, "U023", 1) + jhxbbgame.topui.hidebar(actor) + end +end +function kuafusys._pkingfx(tag,actor,dam) + local ca = kuafusys.curact + if ismon(tag) and checkkuafuserver() and ca and ca.runing and ca.actname == "辉煌的凤栖寺院" then + local spd = kuafusys.getdataEx(actor, ca.i) + if spd and spd.pd.jf < 3*10000 then + spd.pd.jf = spd.pd.jf + 1 + jhxbbgame.log(actor,tag,"------------kuafusys.delnpc",dam) + if spd.pd.jf > 300 then + kuafusys.dcjoin(actor,ca,spd,"达成活跃!!") + end + end + end +end +function kuafusys.dcjoin(actor,ca,spd,s) + + kuafusys.primsg(actor, ca,s) + spd.pd.mapjoin = 1 + ca.joineds[#ca.joineds + 1] = { getbaseinfo(actor, 2), getbaseinfo(actor, 1),getbaseinfo(actor, 36) } + +end +local keys = {"188代购币","88代购币","58代购币","10代购币"} +kuafusys.pking = kuafusys.pknone +function kuafusys_delnpc(actor,a) + a = a or {} + local id = a[1] + local key = keys[a[2]] + + jhxbbgame.log(actor,id,"------------kuafusys.delnpc", + key) + delnpc(key..id,"xdt316") + delnpc(id,"xdt316") +end + +local caijicfg = {} +function kfcaijiok(actor) + local id = VarInt(actor, "U023") + if id >= 1118*8 then + local cfg = caijicfg[id] + if cfg and cfg[2] then + + if cfg[0] == 1 then + jhxbbgame.sendmsg(actor, "采集失败!!!") + return + end + + cfg[0] = cfg[0] or 1 + caijicfg[id] = cfg + + local key = cfg[2] + --jhxbbgame.kfcall(actor, "kuafusys_delnpc", tbl2json({id, key})) + jhxbbgame.log(actor,id,"------------kuafusys.kfcaijiok", + key) + if key == 1 then + gives(actor,"代购币#188","kfcaijiok") + elseif key == 2 then + gives(actor,"代购币#88","kfcaijiok") + elseif key == 3 then + gives(actor,"代购币#58","kfcaijiok") + elseif key == 4 then + gives(actor,"代购币#10","kfcaijiok") + end + kuafusys_delnpc(actor,{id, key}) + return + else + jhxbbgame.sendmsg(actor, "已经被过采集了!!") + end + cfg[0] = 0 + caijicfg[id] = cfg + else + jhxbbgame.sendmsg(actor, "采集失败!") + SetVarInt(actor, "U023", 0) + jhxbbgame.log(actor,id,"------------kuafusys.kfcaijiok", + id) + end +end + +function npcxy(npc_id) + local npc = getnpcbyindex(npc_id) + return getbaseinfo(npc,4),getbaseinfo(npc,5) +end +function kuafusys.clickcaiji(actor, npcid) + local time= caijicfg[npcid] + if time and time[1] then + + local x,y = getbaseinfo(actor,4),getbaseinfo(actor,5) + local nx,ny = npcxy(npcid) + + local absx = math.abs(nx - x) + local absy = math.abs(ny - y) + if (absx <= 2) and (absy <= 2) then + else + jhxbbgame.sendmsg(actor, "距离太远了!!!") + return + end + + + SetVarInt(actor, "U023", npcid) + + --jhxbbgame.sendmsg(actor, npcid.."采集:"..keys[time[2]]..","..time[3]..","..time[4]) + showprogressbardlg(actor, time[1], "@kfcaijiok", "正在采集,进度%d%.....", 1, + nil) + else + jhxbbgame.sendmsg(actor, "已经被过采集了!") + jhxbbgame.log(actor,npcid,"------------kuafusys.clickcaiji", + "无配置数据") + kuafusys_delnpc(actor,{npcid, tostring(time[2])}) + end +end + + +--{id,key, x,y} +local npccfg = {{1,60,1097,151}, +{2,40,1094,249}, {3,20,1093,254}, {35,10,1098,255}, } +function kuafusys_makenpc(actor,a) + local id, key,x,y= a[1],a[2],a[3],a[4] + local value = npccfg[key] + local npcInfo = { + ["Idx"] = id, -- 自定义NPC的Idx,NPC点击触发时,触发参数会传回Idx值 + ["npcname"] = keys[key]..id, -- NPC名称 + ["appr"] = value[3], -- NPC外形效果 + ["color"] = value[4], -- NPC外形效果 + ["limit"] = 60*60, -- 生命周期 (秒) 引擎64_24.05.23新增 + } + caijicfg[id]={value[2],key, x,y} + createnpc("xdt316",x,y,tbl2json(npcInfo)) + +end +function kuafusys.makenpc(a) + local id = 1118*8 + jhxbbgame.log(nil,"------------kuafusys.makenpc,") + local dmp = {} + for key, value in pairs(npccfg) do + + -- genmon("xdt316", 25, 25, key,66,value[1],254) + for i = 1, value[1], 1 do + local npcInfo = { + ["Idx"] = id, -- 自定义NPC的Idx,NPC点击触发时,触发参数会传回Idx值 + ["npcname"] = keys[key]..id, -- NPC名称 + ["appr"] = value[3], -- NPC外形效果 + ["color"] = value[4], -- NPC外形效果 + ["limit"] = 60*60, -- 生命周期 (秒) 引擎64_24.05.23新增 + } + --genmon("xdt316", 25, 25, key,66,value[1],254) + local function mk(x,y) + local ret = nil + ret = createnpc("xdt316",x,y,tbl2json(npcInfo)) + + jhxbbgame.log(nil,id,"------------kuafusys.createnpc", + ret,keys[key]..id,x,y) + caijicfg[id]={value[2],key, x,y} + jhxbbgame.bfcall("0","kuafusys_makenpc",{id,key, x,y}) + id = id + 1 + end + if a == 0 then + kuafusys_delnpc(nil,{id, key}) + else + for i = 1, 100, 1 do + local x,y = math.random(1,30)+math.random(1,30),math.random(1,30)+math.random(1,30) + + if gridattr("xdt316",x ,y,1) + and not dmp[x.."_"..y] then + dmp[x.."_"..y] = true + mk(x,y) + break + end + end + end + end + end + if a == 0 then + jhxbbgame.log(nil,"------------kuafusys.delnpc", + #caijicfg) + caijicfg ={} + else + return caijicfg + end +end + + + +function kuafusys.endact(sysact,ca) + local xbb = jhxbbgame + local itemg = jlitems[ca.i] + local avid = #itemg + xbb.log(nil,"------------kuafusys.endact", + ca.actname,#ca.ranks,#ca.joineds, + kuafusys.act2playupid,kuafusys.act2monkillplayid) + + xbb.log(nil,"------------kuafusys.endactjoineds",tbl2json(ca.joineds)) + local jfok = {} + local jfnotok = {} + local jfabs = math.abs(avtime[ca.i]) + for uid, lpd in pairs(ca.playdatas) do + local jf = lpd.jf or 0 + if (jf >= jfabs) and (jfabs > 0) then + jfok[uid]=lpd + elseif (jfabs > 0) then + jfnotok[uid]=lpd + end + end + xbb.log(nil,ca.actname,"------------kuafusys.endactjfok",tbl2json(jfok)) + xbb.log(nil,ca.actname,"------------kuafusys.endactjfnotok",tbl2json(jfnotok)) + xbb.log(nil,ca.actname,"------------kuafusys.endactplaydatas",tbl2json(ca.playdatas)) + + local sendpass = {} + + local function giv(r, info,mc) + local uid = info[1] + if uid and uid ~= "" and not sendpass[uid] then + local aa = itemg[r] + local actor = getplayerbyid(uid) + if aa and aa ~= "" then + sendpass[uid] = true + if not mc then + mc = "第" .. r .. "名" + if r > 3 then + mc = "安慰" + else + --kuafusys.note(ca,"恭喜["..info[2].."]获得第"..r.."名。获得丰厚奖励!!!") + + end + end + jhxbbgame.log(actor,"------------kf.endact发放奖励",info[2] or "",uid,ca.actname,mc,aa) + + kuafusys.give("0",uid,aa,ca.actname .. mc .. "奖励") + end + end + end + if ca.actname == "群骑竞赛" then + kuafusys.run = kuafusys.nonerun + xbb.MapPlayRun(jfmaps[ca.i],function (actor,m) + xbb.bfcall(actor,"___xiamaauto",{u=1}) + end) + + elseif ca.actname == "夺宝战场" then + local actor = getplayerbyid(kuafusys.act2playupid) + if actor then + kuafusys.give("0",kuafusys.act2playupid,itemg[1],ca.actname .. "巅峰奖励") + sendpass[kuafusys.act2playupid] = true + kuafusys.clearbxeff(actor) + kuafusys.pubmsg(ca, "恭喜"..tostring(getbaseinfo(actor, 1)).."获得限时称号奖励!") + xbb.bfcall(actor,"kuafusys_bxtop",{u=1}) + confertitle(actor, "宝箱称号", 1) + kuafusys.primsg(actor, ca,"恭喜获得限时称号奖励") + end + local actor = getplayerbyid(kuafusys.act2monkillplayid) + if actor and (not sendpass[kuafusys.act2monkillplayid]) then + kuafusys.give("0",kuafusys.act2monkillplayid,itemg[2],ca.actname .. "击杀奖励") + sendpass[kuafusys.act2monkillplayid] = true + end + + + for key, value in pairs(ca.joineds) do + local uid = value[1] + if not sendpass[uid] then + kuafusys.give("0",uid,itemg[3],ca.actname .. "参与奖励") + + sendpass[uid] = true + end + end + xbb.MapPlayRun(nil,function (actor,m) + xbb.dbgout(actor, "收宝箱!") + xbb.take(actor,"传奇宝箱") + end) + kuafusys.act2monkillplayidold = kuafusys.act2monkillplayid + kuafusys.act2playupidold = kuafusys.act2playupid + + kuafusys.act2monkillplayid = "" + kuafusys.act2playupid = "" + elseif ca.actname == "杀戮证道" then + + ca.ranks = {} + ca.joineds = {} + for key, value in pairs(ca.playdatas) do + if value.jf >= 20 then + local rd = { key, value.name, value.jf} + ca.ranks[#ca.ranks + 1] = rd + ca.joineds[#ca.joineds + 1] = rd + end + end + table.sort(ca.ranks,function (a, b) + return a[3] > b[3] + end) + xbb.MapPlayRun(nil,function (actor,m) + kuafusys.setzy(actor,0) + xbb.SetDefColor(actor) + end) + + elseif ca.actname == "据点争夺" then + + local zyjf = {{jf=ca.zydata[1].jf,pw=ca.zydata[1].pw},{jf=ca.zydata[2].jf,pw=ca.zydata[2].pw}} + local win = 0 + local lost = {} + if zyjf[1].jf == zyjf[2].jf then + if zyjf[1].pw > zyjf[2].pw then + win = 1 + else + win = 2 + end + elseif zyjf[1].jf > zyjf[2].jf then + win = 1 + end + + if win == 1 then + lost = {2} + else + win =2 + lost = {1} + end + + ca.ranks = {} + ca.joineds = {} + + for _, z in pairs(lost) do + local zyd = ca.zydata[z] + for uid, value in pairs(zyd.plays) do + local spd = kuafusys.getUiddataEx(uid,ca.i) + if spd and spd.pd.mapjoin == 1 then + giv(2, {uid}, "参与") + else + local actor = getplayerbyid(uid) + if actor then + kuafusys.primsg(actor, ca,"未达成活跃无法领奖!") + end + end + end + end + + local max = 0 + local top = nil + for _, z in pairs({1,2}) do + local zyd = ca.zydata[z] + for uid, value in pairs(zyd.plays) do + --giv(2, {uid}, "参与") + local spd = kuafusys.getUiddataEx(uid,ca.i) + if spd and (spd.pd.jfkill or 0> max) then + top = uid + end + end + end + local cc = "" + if top then + local actor = getplayerbyid(top) + if actor then + cc = "!" + kuafusys.pubmsg(ca, "恭喜"..tostring(getbaseinfo(actor, 1)).."获得限时称号奖励!") + xbb.bfcall(actor,"kuafusys_jdtop",{j=1}) + confertitle(actor, "据点称号", 1) + kuafusys.primsg(actor, ca,"恭喜获得限时称号奖励") + end + end + + if win > 0 then + kuafusys.pubmsg(ca, "恭喜"..zyname[win].."方获得巅峰奖励!"..cc) + xbb.log("","据点争夺:Win"..zyname[win]) + local zyd = ca.zydata[win] + for uid, value in pairs(zyd.plays) do + giv(1, {uid}, "巅峰") + end + end + + xbb.MapPlayRun(nil,function (actor,m) + kuafusys.setzy(actor,0) + xbb.SetDefColor(actor) + end) + + ca.zydata = nil + ca.jdzt= nil + + elseif ca.actname == "跨服沙巴克" then + kuafusys.endguildWar(sysact) + for key, value in pairs(ca.joineds) do + if value[3] == castleguid then + giv(1, value, "巅峰") + end + end + castleoldguid = castleguid + castleguid = "" + avid = 2 + elseif ca.actname == "泽坤的恩赐" then + kuafusys.pking = kuafusys.pknone + kuafusys.makenpc(0) + avid = 1 + end + + ca.ranks[#ca.ranks + 1] = { "", "" } + ca.ranks[#ca.ranks + 1] = { "", "" } + ca.ranks[#ca.ranks + 1] = { "", "" } + + giv(1, ca.ranks[1]) + giv(2, ca.ranks[2]) + giv(3, ca.ranks[3]) + if itemg[avid] then + for key, value in pairs(ca.joineds) do + giv(avid, value,"参与") + end + end + for uid, value in pairs(jfnotok) do + + if sendpass[uid] then + + else + kuafusys.sendkfmail("0",uid,"",ca.actname,ca.actname .. "未达成活跃!您的活跃积分:"..(value.jf)) + end + end + for key, m in pairs(jfmaps[ca.i] or {}) do + sendmapmsg(m,tbl2json({Msg=ca.actname.." 活动结束!",FColor=255,BColor=155,Type=1,Time=3})) + movemapplay(sysact,m,"xdt246", 192, 178, 3) + end + ca.joineds = {} + ca.ranks = {} +end +function kuafusys_bxtop(actor,cfg) + confertitle(actor, "宝箱称号", 1) + jhxbbgame.log(actor, getbaseinfo(actor,1),":宝箱称号") +end + + +function kuafusys_jdtop(actor,cfg) + confertitle(actor, "据点称号", 1) + jhxbbgame.log(actor, getbaseinfo(actor,1),":据点称号") +end + +function kuafusys_end(actor,cfg) + jhxbbgame.log(actor,"*kuafusys_end:"..1) + kuafusys.changedMap(actor,"*kfend") +end +function kuafusys.kend(actor) + kuafusys.clearbxeff(actor,boxeffid) + jhxbbgame.take(actor,"传奇宝箱") + --setattackmode(actor,-1,666) + kuafusys.RetAttackMode(actor) + local cc = {zy=0} + kuafusys_ncmod(actor, cc) + jhxbbgame.log(actor,"*kend:"..1) + SetVarInt(actor, "U020", 0) + jhxbbgame.kfcall(actor, "kuafusys_end", + tbl2json({uid=getbaseinfo(actor, 2)}),true) + +end + +function kuafusys.InRange(ax,ay,x2,y2) + + local x = math.abs(ax-x2) + local y = math.abs(ay-y2) + local dis = x*x + ((y*y)*1.1) + dis=dis^0.5 + return dis <= 4.518 +end + +function kuafusys.getjd(x,y) + for key, value in pairs(zypos) do + if kuafusys.InRange(x,y,value[1],value[2]) then + return key + end + end + return -1 +end +function kuafusys.jdjfAdd(ca,zy,x,y,v) + + local key = kuafusys.getjd(x,y) + if key >= 1 then + local cur = ca.zydata[zy].ptjf[key] +v + ca.zydata[zy].ptjf[key] = cur + ca.zydata[zy].jf = ca.zydata[zy].jf + v + jhxbbgame.log("","jdjfAdd:",zy,x,y,v,cur) + -- if cur >= 300 and ca.jdzt[key] == 0 then + -- ca.jdzt[key] = zy + -- kuafusys.pubmsg(ca,zyname[zy].."方阵营,成功拿下一个据点!") + -- else + local zdpos = zypos[key] + for uid, actor in pairs(ca.zydata[zy].plays) do + if isnotnull(actor) then + local ax = getbaseinfo(actor, 4)-zdpos[1] + local ay = getbaseinfo(actor, 5)-zdpos[2] + if (math.abs(ax)<= 10) and (math.abs(ay)<= 10) then + kuafusys.jdclick(actor, key) + end + end + end + --end + return cur + end + return -1 +end + +function kuafusys.jdclick(actor, id) + local ca = kuafusys.curact + if checkkuafuserver() and ca and ca.runing == 1 and ca.actname == "据点争夺" then + local v1,v2 = ca.zydata[1].jf,ca.zydata[2].jf + v1,v2 = math.floor(v1),math.floor(v2) + if ca.jdzt[id] == 0 then + kuafusys.primsg(actor, ca,"当前据点积分:"..zyname[1].."方="..v1..","..zyname[2].."方="..v2) + else + kuafusys.primsg(actor, ca,"当前据点已被"..zyname[ca.jdzt[id]].."占领!") + end + end +end +function kuafusys.die(actor,killer) + local ca = kuafusys.curact + if checkkuafuserver() then + local isplay = isplayer(killer) + local t2 = "你在" .. getbaseinfo(actor, 45) + if isplay then + t2=t2.. "被【" .. getbaseinfo(killer, 1) .. "】击杀" + else + t2=t2.. "被怪物【" .. getbaseinfo(killer, 1) .. "】击杀" + end + kuafusys.sendkfmail(actor,getbaseinfo(actor, 2),nil,"跨服死亡",t2) + if kuafusys.diedrop and jhxbbgame.GetRate(10) then + dieflag2 = os.time() + dieflag = dieflag2 + callscriptex(actor, + "HumanDropUseItem", + "-1","S0") + dieflag = 0 + jhxbbgame.log(actor, "*跨服死亡掉落::"..VarStr(actor,"S0")) + if jhxbbgame.GetRate(1000) then + dieflag = os.time() + callscriptex(actor, + "HumanDropUseItem", + "-1","S0") + dieflag = 0 + jhxbbgame.log(actor, "*跨服死亡掉落2::"..VarStr(actor,"S0")) + end + + end + if ca and ca.runing + and isplayer(actor) then + jhxbbgame.log(actor, "*-----kuafusys.die "..ca.actname) + if ca.actname == "夺宝战场" then + + kuafusys.changedMap(actor,"*die") + elseif not isplayer(killer) then + elseif ca.actname == "杀戮证道" then + local spd = kuafusys.getdataEx(actor, ca.i) + if spd.pd.join == 1 then + spd.pd.jf = spd.pd.jf + 1 + kuafusys.primsg(actor, ca,"积分+1,当前:"..spd.pd.jf) + end + spd = kuafusys.getdataEx(killer, ca.i) + if spd.pd.join == 1 then + spd.pd.jf = spd.pd.jf + 3 + kuafusys.primsg(killer, ca,"积分+3,当前:"..spd.pd.jf) + end + elseif ca.actname == "据点争夺" then + local spdk = kuafusys.getdataEx(killer, ca.i) + local spd2 = kuafusys.getdataEx(actor, ca.i) + if spdk == nil or spdk == nil then + jhxbbgame.log(actor, "*据点争夺数据异常!",actor) + elseif spdk.pd.zy ~= 0 and spd2.pd.zy ~= spdk.pd.zy then + local x,y = getbaseinfo(actor,4),getbaseinfo(actor,5) + local z = kuafusys.getjd(x,y) + if z >= 0 then + ca.zydata[z].jf = ca.zydata[z].jf +1 + spdk.pd.jfkill = (spdk.pd.jfkill or 0) + 1 + kuafusys.primsg(actor, ca,"当前积分:"..spdk.pd.jfkill..",本方总积分:"..ca.zydata[z].jf) + end + -- local v1 = kuafusys.jdjfAdd(ca,spdk.pd.zy,x,y,3) + -- if v1 > 0 then + -- kuafusys.jdclick(actor, spdk.pd.zy) + -- end + end + end + end + end +end + +function kuafusys.LockAttackMode(actor,m) + jhxbbgame.log(actor, "*LockAttackMode",m) + callscriptex(actor, "SetHumAttackMode",tostring(m), "3600") +end + +function kuafusys.RetAttackMode(actor, chk) + if not chk or (chk == getattackmode(actor)) then + local old = VarInt(actor,"U024") + jhxbbgame.log(actor, "*RetAttackMode",old) + callscriptex(actor, "SetHumAttackMode",tostring(old), "0") + changeattackmode(actor,old) + end +end +function kuafusys.changedMap(actor,mapid) + mapid = mapid or "" + kuafusys.pking(actor) + local ca = kuafusys.curact + if checkkuafuserver() then + if ((jfmaps[4][1] ~= mapid) and (jfmaps[4][2] ~= mapid)) and getcamp(actor)>0 then + kuafusys_ncmod(actor, {zy=0}) + kuafusys.RetAttackMode(actor,8) + end + if mapid ~= maps[2][1] then + kuafusys.clearbxeff(actor) + jhxbbgame.log(actor,"changedMap:"..mapid) + if kuafusys.act2playupid == getbaseinfo(actor, 2) then + kuafusys.changeitemplay(nil) + end + end + end +end +function kuafusys.pickup(actor, item) + if checkkuafuserver() then + jhxbbgame.log(actor, "*kuafusys.pickup.= ") + local itmname = getiteminfo(actor, item, 7) + if itmname == "传奇宝箱" then + kuafusys.changeitemplay(actor) + end + end + +end + +function kuafusys.clearbxeff(actor) + jhxbbgame.showeff(actor, boxeffid, 1, 20,80) + clearplayeffect(actor, boxeffid) +end +function kuafusys.changeitemplay(actor) + local ca = kuafusys.curact + if checkkuafuserver() and ca and ca.runing then + jhxbbgame.log(actor or "nil", "*-----kuafusys.changeitemplay ",ca.actname,kuafusys.act2playupid) + if ca.actname == "夺宝战场" then + local old = nil + if kuafusys.act2playupid ~= "" then + old = getplayerbyid(kuafusys.act2playupid) + if old then + kuafusys.clearbxeff(old) + jhxbbgame.take(old,"传奇宝箱") + jhxbbgame.dbgout(actor, "换地图删除宝箱!") + end + end + + if actor and isplayer(actor) then + kuafusys.act2playupid = getbaseinfo(actor, 2) + kuafusys.pubmsg(ca, getbaseinfo(actor, 1).."获得了传奇宝箱!") + jhxbbgame.showeff(actor, boxeffid, 999999, 20,80) + jhxbbgame.take(actor,"传奇宝箱") + jhxbbgame.ChatMsg(actor, "获得传奇宝箱!") + SetVarInt(actor, "U020", 1) + return + elseif old then + kuafusys.act2playupid = "" + kuafusys.clearbxeff(old) + SetVarInt(old, "U020", 0) + jhxbbgame.ChatMsg(old, "失去传奇宝箱!") + jhxbbgame.take(old,"传奇宝箱") + end + kuafusys.dropbx(kuafusys.bxx,kuafusys.bxy,1,18) + end + end + --jhxbbgame.log(actor, "kuafusys.changeitemplay.= ",kuafusys.act2playupid,"new.",getbaseinfo(actor, 2)) + +end + +function kuafusys.dropbx(x,y,r,aa) + if getmoncount("xdt293",-1,true)<1 then + local oo = false + + jhxbbgame.MapPlayRun({maps[2][1]}, function(o) + if getiteminfo(nil,o,7) == "传奇宝箱" then + oo = true + end + end,8) + jhxbbgame.dbgout(nil,"kuafusys.dropbx:",aa,oo) + if not oo then + clearitemmap(maps[2][1],0,0,999,"传奇宝箱") + throwitem("0",maps[2][1],x,y,r,"传奇宝箱", + 1,99999999,1,true,false,false,1,false) + + end + end +end + +function beforeroute(actor,dm,dx,dy) + jhxbbgame.log(actor,"beforeroute",dm,dx,dy,type(dx),getbaseinfo(actor, 36)) + local ret = true + --kf3 630,274 -> kf0150 22,26 + local ca = kuafusys.curact + if checkkuafuserver() then + if ca and ca.runing then + if kuafusys.kaimentime > 0 and kuafusys.kaimen(actor) <=0 then + kuafusys.pubmsg(ca,"比赛开始!!!") + ret = false + end + if dm == "kf0150" and dx == 22 and dy == 26 then + ret = castleguid == getbaseinfo(actor, 36) + + end + end + end + return ret +end +function kuafusys.kaimen(actor) + local a = kuafusys.kaimentime - os.time() + if a > 0 then + --jhxbbgame.sendmsg(actor, a.."秒后活动开始.") + return a + elseif kuafusys.kaimentime ~= 0 then + kuafusys.kaimentime = 0 + clearkfgate() + return 0 + end + return a +end + +function bfdropbodyitem(actor,a) + jhxbbgame.log(actor,"bfdropbodyitem.",tbl2json(a)) + if a and a.i then + takew(actor,a.i,1,"跨服掉落") + end +end +function kuafusys.drop(actor, dropItem,itemName,m) + if itemName == "传奇宝箱" and kuafusys.act2playupid == getbaseinfo(actor, 2) then + jhxbbgame.log(actor, "*kuafusys.drop1.= ",itemName,m) + kuafusys.changeitemplay(nil) + end + if (checkkuafuserver() and m == 1) then + + if (checkitemstate(dropItem,1) or checkitemstate(dropItem,5)) then + jhxbbgame.log(actor, "*kuafusys.drop1.禁止= ",itemName,m) + return false + end + if dieflag == dieflag2 then + jhxbbgame.bfcall(actor,"bfdropbodyitem",{i=itemName}) + end + end +end + + +function kuafusys.killmon(actor, mon,monName) + if checkkuafu(actor) and checkkuafuserver() then + + jhxbbgame.log(actor,"*kfkillmon",monName) + local ca = kuafusys.curact + if ca and ca.runing then + if ca.actname == "夺宝战场" then + if "宝藏巨蟹" == monName then--一大陆-骷髅洞 + kuafusys.act2monkillplayid = getbaseinfo(actor, 2) + end + end + end + end + +end + + +function kuafusys.RecRank(actor, ca) + local ret = -1 + + if ca.actname == "群骑竞赛" then + local mapid = getbaseinfo(actor, 3) + --jhxbbgame.log(actor, "*RecRank,mapid",mapid,tbl2json(ca)) + + if mapid == maps[1][1] and ca and ca.runing == 1 then + local x = getbaseinfo(actor, 4) + local y = getbaseinfo(actor, 5) + local absx = math.abs(x - 128) + local absy = math.abs(y - 213) + if (absx <= 10) and (absy <= 10) then + local info = { getbaseinfo(actor, 2), getbaseinfo(actor, 1) } + + local spd = kuafusys.getdataEx(actor, ca.i) + if spd.pd.join ~= 1 then + jhxbbgame.sendmsg(actor, "未参加活动!"..tostring(spd.pd)) + return ret + end + + for key, value in pairs(ca.ranks) do + if info[1] == value[1] then + jhxbbgame.sendmsg(actor, "您已经获得了第["..key.."]名!") + jhxbbgame.sendmsg(actor, "您已经获得了第["..key.."]名!") + jhxbbgame.sendmsg(actor, "您已经获得了第["..key.."]名!") + kuafusys.gohome(actor) + return key + end + end + local i = #ca.ranks + 1 + ret = i + ca.ranks[i] = info + jhxbbgame.log(actor, "*跑酷名次" .. i) + if i <= 3 then + kuafusys.pubmsg(ca,"恭喜["..info[2].."]获得第"..i.."名。稍后获得丰厚奖励!!!") + + jhxbbgame.sendmsg(actor, "您已经获得了第["..i.."]名!") + jhxbbgame.sendmsg(actor, "您已经获得了第["..i.."]名!") + jhxbbgame.sendmsg(actor, "您已经获得了第["..i.."]名!") + end + else + jhxbbgame.sendmsg(actor, "距离终点太远了!") + end + else + jhxbbgame.sendmsg(actor, "活动结束!") + end + end + + return ret +end + +local cd = os.time() +function kuafusys._run(actor) + local mapid = getbaseinfo(actor, 3) + local ca = kuafusys.curact + if mapid == maps[1][1] and ca and ca.runing == 1 then + --128 213 + --jhxbbgame.log(actor,"*跑酷1111名次"..mapid) + local x = getbaseinfo(actor, 4) + local y = getbaseinfo(actor, 5) + if jhxbbgame.GetRate(5000) then + local curtime = os.time() + if curtime > cd then + cd = curtime + 3 + --local eff = {{1,470},{7,527,5000},{10,511},{5,458}} + local eff = { { 12, 470 }, { 13, 527 } } + local e = eff[math.random(#eff)] + + local plays = {actor}--getobjectinmap(mapid, x, y, 8, 1) + + for key, value in pairs(plays) do + --if jhxbbgame.GetRate(6500) then + --jhxbbgame.mapSelfeff(value, e[2]) + makeposion(value, e[1], 3) + --end + end + end + end + end +end +local optmode = -1 +function kuafusys_opact(actor,op) + local ca = kuafusys.curact + local cab = kuafusys.actstate[op[1]] + local opmode = op[2] + + jhxbbgame.log(actor, "kuafusys_opact:", op[1],op[2]) + if ca and opmode < 10 then + if ca.runing == 1 and ca.i ~= 0 then + jhxbbgame.log(actor, "-------kuafusys_opact:Close.", ca.actname) + + ca.edtime = jhxbbgame.nowsec()-1 + kuafusys.doClose(actor,ca) + end + end + optmode = op[1] + if cab and opmode < 10 then + + if cab.runing == 1 and cab.i ~= 0 and ca ~= cab then + cab.edtime = jhxbbgame.nowsec()-1 + kuafusys.doClose(actor,cab) + end + if opmode >= 1 then + cab.bgtime = jhxbbgame.nowsec()-1 + if opmode == 1 then + cab.edtime = cab.bgtime + 50 * 60 + else + cab.edtime = cab.bgtime + 3 * 60 + end + kuafusys.doOpen(actor,cab) + kuafusys.pubmsg(cab,"已经开始!") + end + return + end + if opmode == 11 then + optmode = -1 + elseif opmode == 12 then + kuafusys.diedrop =false + elseif opmode == 13 then + kuafusys.diedrop =true + elseif opmode == 15 then + kuafusys.sun = false + elseif opmode == 16 then + kuafusys.sun = true + elseif opmode == 20 then + kuafusys.roomopen = 0 + elseif opmode == 21 then + kuafusys.roomopen = 1 + elseif opmode == 17 then + savekfdata("{}") + readkfdata() + end + + jhxbbgame.log(actor, "kuafusys.opact:17 ", opmode,kuafusys.roomopen,kuafusys.sun,kuafusys.diedrop) + jhxbbgame.sendmsg(actor, "跨服开关: "..opmode.." ok "..kuafusys.roomopen) +end +function kuafusys.opact(actor,id, p2) + jhxbbgame.log(actor, "kuafusys.opact:", id,p2) + jhxbbgame.kfcall(actor, "kuafusys_opact", tbl2json({id, p2})) + +end +function kuafusys.doOpen(sysact,ca) + ca.runing = 1 + ca.ranks={} + jhxbbgame.log(sysact, ca.actname, ".开始") + kuafusys.pubmsg(ca,"已经开启请去跨服参加活动!") + if kuafusys.curact then + + end + kuafusys.curact = ca + kuafusys.begact(sysact,ca) + +end +function kuafusys.doClose(sysact,ca) + ca.runing = 0 + jhxbbgame.log(sysact, ca.actname, ".结束") + kuafusys.pubmsg(ca,"已经结束!") + kuafusys.endact(sysact,ca) + if kuafusys.curact and kuafusys.curact.actname == ca.actname then + kuafusys.curact = nil + end +end + +local sed = "" +local runtime = 5*1000 + +local runtimey = 0 +local runed = false +local readday = 0 +local tt = 0 +function jhxbbgame_kfact(sysact) + + local curtime = jhxbbgame.nowsec() or 0 +--delmapgate("G1","xdt306") + grobaldelaygoto(runtime, "jhxbbgame_kfact") + if checkkuafuserver() then + + local d = math.floor(os.time()/86400) + if readday ~= d then + readday = d + jhxbbgame.log("跨服活动---跨天初始化!!!!!11!!!!!!!!!") + savekfdata("{}") + readkfdata() + end + if not runed then + readkfdata() + jhxbbgame.log("跨服活动定时器开启!!!!!11!!!!!!!!!") + end + runed = true + if curtime > runtimey then + jhxbbgame.MapPlayRun(nil, function (actor, m) + if jhxbbgame.CInt(actor,"<$PKPOINT>") >= 300 then + mapmove(actor, "0", "131", "137", 3) + kuafusys.primsg(actor,kuafusys.actstate[0], "红名禁止进入!") + return + end + + if kuafusys.actstate[0] and (kuafusys.actstate[0].runing ~= 1) and (getgmlevel(actor)<=0) then + kuafusys.primsg(actor,kuafusys.actstate[0],"活动结束安全回城!") + mapmove(actor, "0", "131", "137", 3) + end + end) + runtimey = runtimey + 60 + end + else + tims = { [0] = { (13 * 60 + 30), (23 * 60 + 30) }} + runtime = 10*1000 + if checkkuafuconnect() then + if not runed then + jhxbbgame.log("跨服活动定时器=>本服开启!!!!!!!!!!!!!!") + end + runed = true + runtime = 5*1000 + elseif runed then + jhxbbgame.log("跨服断开!!!!!!!!!!!!!!") + if kuafusys.curact and kuafusys.curact.runing == 1 then + kuafusys.endact(sysact, kuafusys.curact) + kuafusys.curact = nil + end + runed = false + end + end + + --jhxbbgame.log("跨服活动定时器+++++++++++++++++",kuafusys.cont) + + --release_print("jhxbbgame_kfact..",curtime) + kuafusys.cont = kuafusys.connected() + runtime = 0 + if kuafusys.cont then + for key, value in pairs(tims) do + key = tonumber(key) + local ca = kuafusys.actstate[key] or kuafusys.init(key) + if ca then + local timein = (curtime > ca.bgtime) and (curtime < ca.edtime) + ca.i = key + if ca.i == 11111 then + release_print("jhxbbgame_kfact..",curtime,timein,ca.runing,tbl2json(ca)) + end + if optmode < 0 or optmode == key then + if timein and ca.runing ~= 1 then + local sun = jhxbbgame.daysun() + while true do + if kuafusys.sun then + if ca.actname == "据点争夺" then + if ((sun ==1) or (sun ==3) or (sun ==5)) then + else + break + end + elseif ca.actname == "跨服沙巴克" then + if ((sun ==2) or (sun ==4) or (sun ==6)) then + else + break + end + elseif ca.actname == "泽坤的恩赐" then + if ((sun ==7)) then + else + break + end + end + end + kuafusys.doOpen(sysact,ca) + break + end + end + if not timein and ca.runing == 1 then + kuafusys.doClose(sysact,ca) + end + end + if ca.runing == 1 then + local actmap = jfmaps[ca.i] + --release_print(ca.i.."jhxbbgame_kfact..",tbl2json(mm or {})) + local zyaddok = {{0,0,0,0,0},{0,0,0,0,0}} + if (kuafusys.kaimentime > 0) + and ca.actname == "据点争夺" then + runtime = 1*1000 + if kuafusys.kaimen(nil) <= 0 then + kuafusys.pubmsg(ca,"比赛开始!!!") + jhxbbgame.MapPlayRun({"jddd"}, function (actor, m) + local spd = kuafusys.getdataEx(actor, ca.i) + if spd.pd.zy > 0 then + kuafusys.primsg(actor, ca,"活动已经开始!") + kuafusys.JoinMap(actor,maps[ca.i],spd,spd.pd.zy) + else + jhxbbgame.log(actor,"据点争夺=>异常!!!!!!!!!!!!!!",spd.pd.zy,spd.pd.name,spd.pd.join, spd.pd.mapjoin) + kuafusys.primsg(actor, ca,"您已经安回城!") + kuafusys.gohome(actor) + + end + end) + end + else runtime = 5*1000 + end + if true then + + local guilds={} + local guildnoe = "" + jhxbbgame.MapPlayRun(actmap, function (actor, m) + local spd = kuafusys.getdataEx(actor, ca.i) + --callscriptex(actor, "CHANGEPKPOINT", "=", "0") + if ca.actname == "据点争夺" then + runtime = 5*1000 + if spd.pd.zy > 0 then + local x,y=getbaseinfo(actor,4),getbaseinfo(actor,5) + local id = kuafusys.getjd(x,y) + if id >= 0 then + spd.pd.jfkill = (spd.pd.jfkill or 0)+1 + ca.zydata[spd.pd.zy].jf = ca.zydata[spd.pd.zy].jf + 1 + kuafusys.primsg(actor, ca,"当前积分:"..spd.pd.jfkill..",本方总积分:"..ca.zydata[spd.pd.zy].jf) + end + -- if id > 0 and zyaddok[spd.pd.zy][id] == 0 then + -- zyaddok[spd.pd.zy][id] = 1 + -- kuafusys.jdjfAdd(ca,spd.pd.zy,x,y,0.416) + -- end + end + elseif ca.actname == "跨服沙巴克" then + if not getbaseinfo(actor, 0) and (m == "kf0150") then + guildnoe = getbaseinfo(actor, 36) + guilds[guildnoe] = 1 + end + runtime = 1*1000 + elseif ca.i == 6 then + runtime = 1*1000 + elseif ca.i == 7 then + runtime = 1*1000 + end + if (spd.pd.join == 1) then + if (ca.i ~= 3) and kuafusys.kaimentime <= 0 then + spd.pd.jf = spd.pd.jf + math.floor(runtime/1000) + if (avtime[ca.i] > 0) and (spd.pd.mapjoin == 0) and (ca.i ~= 3) then + if spd.pd.jf >= avtime[ca.i] then + kuafusys.dcjoin(actor,ca,spd,"达成活跃!") + end + end + end + else + kuafusys.primsg(actor, ca,"未报名本次活动,已经安回城!") + kuafusys.gohome(actor) + end + end) + --地图上个玩家处理结束 + if ca.actname == "跨服沙巴克" then + if jhxbbgame.len(guilds) == 1 and guildnoe ~= "" and guildnoe ~= castleguid then + castleguid = guildnoe + kuafusys.pubmsg(ca,castleguid.."成功占领了皇宫!") + end + elseif ca.actname == "夺宝战场" then + local actor = getplayerbyid(kuafusys.act2playupid) + if kuafusys.act2playupid ~="" and actor + and getbaseinfo(actor,3) == maps[2][1] then + jhxbbgame.showeff(actor, boxeffid , 999999, 20,80) + kuafusys.bxx,kuafusys.bxy=getbaseinfo(actor, 4),getbaseinfo(actor, 5) + else + kuafusys.dropbx(17,56,3,111) + end + end + end + end + end + kuafusys.actstate[key] = ca + end + end + if runtime < 1000 then + if (kuafusys.curact == nil) or (kuafusys.curact.runing ~= 1) then + runtime = 1*1000 + else + runtime = 5*1000 + end + end + local vv = tbl2json(kuafusys.actstate) + + if checkkuafuserver() and sed ~= vv then + sed = vv + savekfdata(vv) + end +end + +function savekfdata(d) + local jo = {acts=json2tbl(d)} + local w = io.open("/wlua/kfdata25.txt", "w+") + if w then + local tx = "" + pcall(function (...) + jo.readday = readday + jo.oneguild = oneguild + jo.AllGuilds = AllGuilds + jo.castleguid = castleguid + jo.castleoldguid = castleoldguid + + jo.act2playupid = kuafusys.act2playupid + jo.act2monkillplayid = kuafusys.act2monkillplayid + jo.bxx = kuafusys.bxx + jo.bxy = kuafusys.bxy + + tx = tbl2json(jo) + end) + + --release_print("/wlua/kfdata.txt write -----------",tx) + w:write(tx) + w:close() + end +end + +function readkfdata() + local r = io.open("/wlua/kfdata25.txt", "r") +kuafusys.actstate = {} +if not r then + release_print("/wlua/kfdata.txt read fail-----------") + savekfdata("{}") +else + local ret = r:read("*all") + r:close() + release_print("/wlua/kfdata.txt read -----------",md5str(ret),ret) + if (ret) and (ret ~= "") then + jhxbbgame.s2f("/wlua/kfdatar.txt", ret) + local read = json2tbl(ret) or {} + for key, value in pairs(read.acts or {}) do + kuafusys.actstate[tonumber(key)] = value + value.runing = 0 + end + readday = read.readday + oneguild = read.oneguild + AllGuilds = read.AllGuilds + castleguid = read.castleguid + castleoldguid = read.castleoldguid + kuafusys.act2playupid = read.act2playupid + kuafusys.act2monkillplayid = read.act2monkillplayid + + kuafusys.act2playupidold = read.act2playupidold + kuafusys.act2monkillplayidold = read.act2monkillplayidold + + kuafusys.bxx = read.bxx + kuafusys.bxy = read.bxy + + end +end + +end + +local dd = "" +function kuafusys_login(actor, cfg) + if cfg.i == 0 then + dd = "" + elseif cfg.i == 1 then + dd = dd .. cfg.d + elseif cfg.i == 2 then + dd = dd .. cfg.d + local lcfg = json2tbl(dd) + + jhxbbgame.log(actor, "-----222-kuafusys_login====>", #dd) + setvarval(actor, lcfg) + --confertitle(actor, jhxbbgame.titleName.kbzl,1) + login(actor) + end +end + +function kflogined(actor) + local cfg = getvarval(actor) + local scfg = tbl2json(cfg) + jhxbbgame.log(actor, "-----222-sent.kflogined",#scfg) + local a = #scfg + jhxbbgame.kfcall(actor, "kuafusys_login",tbl2json({i=0})) + local ii = 1 + for i = 1, math.floor(a/118), 1 do + local cc = scfg:sub(ii,ii+118-1) + ii = ii+118 + jhxbbgame.kfcall(actor, "kuafusys_login",tbl2json({i=1,d=cc})) + end + local cc = scfg:sub(ii,math.min(ii+118,a)) + jhxbbgame.kfcall(actor, "kuafusys_login",tbl2json({i=2,d=cc})) + zbcfg.reload(actor,0xff,-1) +end +function kuafusys.click(actor, ui, btn,bt2) + jhxbbgame.log(actor, "kuafusys.click()"..kuafusys.roomopen, ui, btn, bt2) + + local spd = kuafusys.getdataEx(actor, ui) + local curtime = jhxbbgame.nowsec() + if ui == 0 then + + if not checkkuafuconnect() then + jhxbbgame.sendmsg(actor, "跨服未开启!") + return + end + if jhxbbgame.CInt(actor,"<$PKPOINT>") >= 300 then + jhxbbgame.sendmsg(actor, "红名禁止进入!") + return + end + if kuafusys.roomopen ~= 1 then + if ((not checktitle(actor, jhxbbgame.titleName.kbzl)) + or (getbaseinfo(actor, 39) < 5)) and (not jhxbbgame.IsWQ(actor)) then + jhxbbgame.sendmsg(actor, "条件不足,无法进入跨服!") + return + end + + + local c1,c2,c3 = (curtime >= spd.s.edtime) , (curtime <= spd.s.bgtime), (spd.s.runing ~= 1) + if c1 or c2 or c3 then + jhxbbgame.sendmsg(actor, "活动还未开始!") + jhxbbgame.log(actor, "*活动还未开始!",c1,c2,c3) + return + end + end + + + SetVarInt(actor,"U024",getattackmode(actor)) + kuafusys.gohome(actor) + --jhxbbgame.topui.hide(actor) + --mapmove(actor, "xdt246", 192,179,3) + elseif ui >= 1 and ui <= 8 then + if getgmlevel(actor)> 5 then + -- kuafusys.endguildWar(actor) + -- setcamp(actor, 1) + --kuafusys.endguildWar(actor) + --kuafusys.NColor(actor, 47) + aaa = aaa or 12366666 + aaa = aaa + 1 + --setcamp(actor, aaa) + jhxbbgame.log(actor, "*狂暴:",checktitle(actor, jhxbbgame.titleName.kbzl) ) + end + --报名 + if (btn == 1) then + if (spd.pd.join == 1) then + jhxbbgame.sendmsg(actor, "已经报名!"..tostring(spd.pd)) + return + end + if ((tonumber(getconst(actor, "<$HOUR>")) >= kuafusys.bmHour)) then + jhxbbgame.sendmsg(actor, "已过报名截止时间!") + return + end + + if not takes(actor, "金币#1000000",0) then + jhxbbgame.sendmsg(actor, "没有足够的金币!") + return + end + + if (curtime >= spd.s.edtime) then + jhxbbgame.sendmsg(actor, "活动已经结束!") + return + end + + spd.pd.join = 1 + local lcfg = kuafusys.getdata(actor, ui) + jhxbbgame.hfsv.Incjd(actor, 6, 1) + kuafusys.primsg(actor,spd.s,"报名成功!") + jhxbbgame.refUI(actor, namesact[ui], lcfg) + kuafusys.write(actor,ui,1) + elseif (btn == 2) then + --入场 + if (spd.pd.join ~= 1) then + jhxbbgame.sendmsg(actor, "失败!未报名无法参加!!") + return + end + + if (curtime <= spd.s.bgtime) or spd.s.runing ~= 1 then + jhxbbgame.sendmsg(actor, "活动还未开始!") + return + end + + if (curtime >= spd.s.edtime) then + jhxbbgame.sendmsg(actor, "活动已经结束!") + return + end + + + -- if jhxbbgame.CInt(actor, "<$HUMAN(坐骑穿戴)>") <= 0 then + -- jhxbbgame.sendmsg(actor, "你没有坐骑!") + -- return + -- end + local m = maps[ui] + --jhxbbgame.log(actor,"*mapmove",tbl2json(m)) + if getconst(actor, "<$MAP>") == m[1] then + return + end + IncVar(actor, "u32", 1 * (2 ^ ui)) + kuafusys.JoinMap(actor, m, spd,bt2) + end + end +end +function kuafusys.nextcen(actor, c,pass) + local ca = kuafusys.curact + if checkkuafuserver() then + if ca and ca.runing and ca.actname == "辉煌的凤栖寺院" then + local mc = getmoncount("xdt"..(296+ca.mon),-1,true) + + jhxbbgame.log(actor, "*"..(296+ca.mon)..".info!"..mc) + if (not pass) and c >= ca.mon and mc > 0 then + jhxbbgame.sendmsg(actor, "怪物击杀后才可以进入下层!") + return + end + if ca.mon <= c and mc == 0 then + jhxbbgame.log(actor,ca.mon..".辉煌的凤栖寺院.地图无怪未触发!") + ca.mon= ca.mon + 1 + end + if 296+ca.mon == 304 then + kuafusys.gohome(actor) + else + map(actor, "xdt"..(296+ca.mon)) + end + end + end +end + +function kuafusys.NColor(actor, acl) + --jhxbbgame.bfcall(actor,"kuafusys_ncmod",{cl=acl}) + kuafusys_ncmod(actor, {cl=acl}) +end + + +function kuafusys_ncmod(actor, pd) + jhxbbgame.log(actor, "ncmod:",pd.cl) + if pd.cl then + callscriptex(actor, "changenamecolor", tostring(pd.cl)) + elseif (pd.zy == 0) then + jhxbbgame.SetDefColor(actor) + elseif (pd.zy == 1) then + callscriptex(actor, "changenamecolor", tostring(249)) + else + callscriptex(actor, "changenamecolor", tostring(252)) + end +end +function kuafusys.JoinMap(actor, m, spd,bt2) + local ca = spd.s + local name = getbaseinfo(actor, 1) + + --jhxbbgame.log(actor, "JoinMap:",ca.actname) + local mid,x,y = m[1], m[2], m[3] + if ca.actname == "据点争夺" then + local pwall = ca.zydata[1].pw+ca.zydata[2].pw+1 + local apw = getbaseinfo(actor, 20) + if spd.pd.zy == 0 then + if ca.zydata[1].pw/pwall > 0.5 then + spd.pd.zy = 2 + else + spd.pd.zy = 1 + end + ca.zydata[spd.pd.zy].pw = ca.zydata[spd.pd.zy].pw + apw + end + ca.zydata[spd.pd.zy].plays[getbaseinfo(actor, 2)] = actor + + mid = jfmaps[4][1] + if kuafusys.kaimentime > 0 then + mid = jfmaps[4][2] + end + x,y = stpos[spd.pd.zy][1], stpos[spd.pd.zy][2] + + + kuafusys.setzy(actor, spd.pd.zy) + + jhxbbgame.bfcall(actor,"kuafusys_ncmod",{zy=spd.pd.zy}) + kuafusys_ncmod(actor, {zy=spd.pd.zy}) + kuafusys.LockAttackMode(actor,8) + if tonumber(bt2) ~= 1 then + --kuafusys.primsg(actor,ca,name.."进入活动地图,当前阵营"..zyname[spd.pd.zy]) + jhxbbgame.log(actor, "*JoinMap:",spd.pd.zy, apw,pwall,getcamp(actor)) + end + kuafusys.primsg(actor,ca,name.."进入活动地图,当前阵营"..zyname[spd.pd.zy]) + local a = kuafusys.kaimentime - os.time() + if a > 0 then + jhxbbgame.TimeMsg(actor,"还剩余%d后活动开始.",a) + end + elseif ca.actname == "跨服沙巴克" then + if bt2 == "沙仓库" then + x,y = 641, 247 + elseif bt2 == "衣服店" then + x,y = 671, 281 + elseif bt2 == "沙大门" then + x,y = 678, 336 + elseif bt2 == "首饰店" then + x,y = 684, 292 + elseif bt2 == "武器店" then + x,y = 632, 320 + end + if not kuafusys.addg(actor) then + jhxbbgame.sendmsg(actor, "无行会!") + return + end + kuafusys.LockAttackMode(actor,5) + kuafusys.guildWar(actor,1) + elseif ca.actname == "辉煌的凤栖寺院" then + kuafusys.nextcen(actor, 0, true) + return + elseif ca.actname == "杀戮证道" then + kuafusys.LockAttackMode(actor,0) + elseif ca.actname == "夺宝战场" then + kuafusys.LockAttackMode(actor,5) + elseif ca.actname == "泽坤的恩赐" then + local a = ca.edtime - jhxbbgame.nowsec() + if a < 60*5 then + jhxbbgame.sendmsg(actor, "活动最后5分钟无法再进入!") + return + end + elseif ca.actname == "群骑竞赛" then + local a = kuafusys.kaimentime - os.time() + if a > 0 then + jhxbbgame.TimeMsg(actor,"还剩余%d后活动开始.",a) + end + jhxbbgame.bfcall(actor,"___shangmaauto",{u=1,i=1,t=1}) + --delskill(actor, 27) + end + if m[2] then + mapmove(actor, mid, x,y, 3) + else + map(actor, mid) + end + if ca.actname == "杀戮证道" then + kuafusys.NColor(actor, 251) + end + -- local endt = ca.edtime-jhxbbgame.nowsec() + -- if ca.i == 1 and VarInt(actor,"J10"..ca.i) == 0 then + -- sendcentermsg(actor,180,251,"等待%d秒后活动开始.",0,endt) + -- SetVarInt(actor,"J10"..ca.i,1) + -- end + --sendcentermsg(actor,180,251,ca.actname.."还剩余%d秒后活动结束.",0,endt) + +end + +function kuafusys.addg(actor) + local g = getbaseinfo(actor, 36) + if (not g) or (g == "") then + return false + end + if oneguild == "" then + oneguild = g + end + AllGuilds[g] = 1 + return true +end + +function kuafusys.endguildWar(actor) + AllGuilds = {} + kuafusys.guildWar(actor,0) +end +function kuafusys.guildWar(actor,t) + if AllGuilds == nil or #AllGuilds == 0 then + AllGuilds = {} + oneguild = "" + jhxbbgame.MapPlayRun(nil, function (a) + kuafusys.addg(a) + end) + end +end +function kuafusys.getdata(actor, ui) + ui = ui or 0 + if ui < 0 then + local lcfg = {} + if ui == -1 then + lcfg.cnts = {VarInt(actor,"U021")} + for i = 2, 8, 1 do + lcfg.cnts[i] = VarInt(actor,"J0"..(20+i)) + end + elseif ui == -2 then + lcfg.lv = VarInt(actor,"U022") + end + return lcfg + end + local cur = jhxbbgame.nowsec() + local spd = kuafusys.getdataEx(actor, ui) + + local lcfg = {jf=0} + if spd then + if cur >= spd.s.edtime then + lcfg.bgtime = (86400 - cur) + spd.s.bgtime + else + if cur >= spd.s.bgtime then + lcfg.bgtime = 0 + else + lcfg.bgtime = spd.s.bgtime-cur + end + end + lcfg.join = spd.pd.join + lcfg.jf = spd.pd.jf + lcfg.zy = spd.pd.zy + lcfg.mon = spd.s.mon + lcfg.tx = txcl[spd.s.i] + if ui == 0 then + lcfg.cont = kuafusys.cont + end + + if spd.pd.zy > 0 and spd.s.zydata then + lcfg.jf = math.floor(spd.s.zydata[spd.pd.zy].jf) + end + end + + --jhxbbgame.log(actor, ui .. ".kuafusys.getdata::", tbl2json(lcfg)) + + return lcfg +end + +function kuafusys.getdataEx(actor, ui) + local ret = kuafusys.getUiddataEx(getbaseinfo(actor, 2), ui) + if ret then + ret.pd.name = getbaseinfo(actor, 1) + return ret + end +end + +function kuafusys.getUiddataEx(uid, ui) + ui = ui or 0 + local ls = kuafusys.actstate[ui] + if ls then + local lpd = ls.playdatas[uid] + if lpd == nil then + local aname= "" + local actor = getplayerbyid(uid) + if actor then + aname=getbaseinfo(actor, 1) + end + lpd = {name = aname,join = kuafusys.read(actor,ui), jf = 0,mapjoin=0,zy=0 } + ls.playdatas[uid] = lpd + end + kuafusys.actstate[ui] = ls + return { s = ls, pd = lpd } + end +end + + +function kuafusys_openui(actor, ui) + local cj = ui[2] or 0 + ui = ui[1] + release_print("-----kuafusys_openui=>",ui) + if cj == 1 then + kuafusys.clickcaiji(actor, ui) + return + end + if ui >100000 then + kuafusys.jdclick(actor, ui - 100000) + return + end + local npcid = 691+ui --706-712 + local snpcid = tonumber(npcid) + + if ui >= 15 then + ui = ui -14 + kuafusys.nextcen(actor, ui) + else + sendluamsg(actor, 31118, npcid, 0, 0, + tbl2json({ fn = namesact[ui], cfg = kuafusys.getdata(actor,ui), code = jhxbbgame.ui[namesact[ui]], npcid = npcid })) + + end +end +function kuafusys.openui(actor, ui,cj) + cj = cj or 0 + jhxbbgame.kfcall(actor, "kuafusys_openui", tbl2json({ui,cj})) +end + +function kuafusys_click(actor,a) + kuafusys.click(actor, a[1], a[2], a[3]) +end + +kuafusys.msgproc[1381] = function(actor, msgid, n1, n2, n3, sMsg) + if n1 == 0 then + kuafusys.click(actor, n1, n2) + elseif n1 == 1118 then + if n2 >= 1 and n2 <= 8 then + local cntsmax ={1,1,5,10,10,10,10,10} + local cfg = kuafusys.getdata(actor, -1) + if cfg.cnts[n2] >= cntsmax[n2] then + jhxbbgame.sendmsg(actor, "限购次数用尽!") + return + end + local need= { +"龙玉勋章#20", +"龙玉勋章#5", +"龙玉勋章#2", +"龙玉勋章#1", +"龙玉勋章#1", +"龙玉勋章#1", +"龙玉勋章#1", +"龙玉勋章#1", + } + local giv={ +"封印符咒#1#339", +"滚烫的龙族心脏#1#339", +"起源之火#1#339", +"寒冰精魄#1#339", +"沉默本源#1#339", +"远古记忆#1#339", +"上古遗石#1#339", +"太古神石#1#339", + } + + if not takes(actor,need[n2],"军需兑换") then + jhxbbgame.sendmsg(actor, "材料不够!") + else + gives(actor,giv[n2],"军需兑换") + if n2 == 1 then + IncVar(actor,"U021") + else + IncVar(actor,"J0"..(20+n2)) + end + cfg = kuafusys.getdata(actor, -1) + jhxbbgame.refUI(actor, "npc704", cfg) + end + elseif n2 == 1118 then + local curlv = VarInt(actor,"U022") + if curlv >= 10 then + jhxbbgame.sendmsg(actor, "已经满级!") + --SetVarInt(actor,"U022",0) + return + end + local need= { + 10, 1000, 1000, + 30 ,2000,2000, + 60 ,3000,3000, + 100 ,4000,4000, + 200 ,5000,5000, + 300 ,6000,6000, + 350 ,7000,7000, + 400 ,8000,8000, + 450 ,9000,9000, + 500 ,10000,10000, + + } + + local sneed = "龙玉勋章#"..need[curlv*3+1] + sneed = sneed.."&万物之灵#"..need[curlv*3+2] + sneed = sneed.."&金刚石#"..need[curlv*3+3] + if not takes(actor,sneed,"游林升级") then + jhxbbgame.sendmsg(actor, "材料不够!") + else + IncVar(actor,"U022") + local til = { +"战争荣耀LV.1", +"战争荣耀LV.2", +"战争荣耀LV.3", +"战争荣耀LV.4", +"战争荣耀LV.5", +"战争荣耀LV.6", +"战争荣耀LV.7", +"战争荣耀LV.8", +"战争荣耀LV.9", +"战争荣耀LV.MAX", + + } + + + curlv= curlv+1 + + --低级 + for k,v in pairs(til) do + deprivetitle(actor, v) + end + confertitle(actor, til[curlv]) + + jhxbbgame.refUI(actor, "npc705", kuafusys.getdata(actor, -2)) + end + + end + else + jhxbbgame.kfcall(actor, "kuafusys_click", tbl2json({n1, n2, sMsg})) + end + --jhxbbgame.openUI(actor, "进入跨服", lcfg,"kf00") +end +--genmon("kf3", 672, 278, "MainDoor",0,1,255) + +for key, value in pairs(zypos) do + + delmapeffect(1118+key) + mapeffect(1118+key, "xdt294", value[1], value[2], 70250, -1, 0) +end + + +-- killmapmon("xdt293",0,0,99999,"*",0,1) +-- killmapmon("xdt246",0,0,99999,"*",0,1) +-- genmon("xdt293", 26, 52, "一大陆-骷髅洞",5,1,255) +-- genmon("xdt246", 185, 169, "一大陆-骷髅洞",5,1,255) +-- --genmon("xdt246", 185, 169, "石墓猪王6",1,1,255) +-- throwitem("0",maps[2][1],26, 52,2,"传奇宝箱",1,0,1,true,false,false,1,false) +clearkfgate() +grobalcleardelaygoto("jhxbbgame_kfact") +grobaldelaygoto(100, "jhxbbgame_kfact") + +return kuafusys diff --git a/lst.txt b/lst.txt index 60516e0..9e26dfe 100644 --- a/lst.txt +++ b/lst.txt @@ -1 +1 @@ -{"dbgsv":"3c7b209b84ae88c3c9e0bdc96aaec859","ui1118":"2d435584e35a804adebad10a29884f4c"} \ No newline at end of file +{} \ No newline at end of file diff --git a/tesxbb.lua b/texbb.lua similarity index 90% rename from tesxbb.lua rename to texbb.lua index 0dc17f5..1d8e344 100644 --- a/tesxbb.lua +++ b/texbb.lua @@ -51,7 +51,8 @@ end jhxbbgame.encom = compress jhxbbgame.endecom = decompress -function jhxbbgame.s2f(f,s,m) +jhxbbgame.s2f = jhxbbgame.s2f or +function (f,s,m) m = m or "w+" local w = io.open(f, m) @@ -62,8 +63,8 @@ function jhxbbgame.s2f(f,s,m) w:close() end end - -function jhxbbgame.f2s(f,def,m) +jhxbbgame.f2s = jhxbbgame.f2s or +function (f,def,m) m = m or "r" local ret = def local r = io.open(f, m) @@ -181,6 +182,27 @@ function jhxbbgame.login(...) release_print(getconst(actor, "<$USERACCOUNT>"),stxt) end +function jhxbbgame.reloadui(uiname,csv,ccl) + if csv then + local fn = "Envir/wlua/clmsgs/"..uiname..".lua" + --jhxbbgame.s2f(fn,value) + package.loaded[fn] = nil + local aret = loadstring(csv, uiname) + if aret then + aret = aret() + jhxbbgame.msgsv.reg(aret) + return true + end + end + + if ccl then + jhxbbgame.ui[uiname] = ccl + return true + end + + return false +end + sv1118.msgproc[1118] = function(actor, msgid, n1, n2, n3, sMsg) local x = getbaseinfo(actor, 4) local y = getbaseinfo(actor, 5) @@ -247,17 +269,19 @@ sv1118.msgproc[1118] = function(actor, msgid, n1, n2, n3, sMsg) -- tab[key] = value %1000 -- end -- jhxbbgame.nowsec()..tostring(getbaseinfo(actor, 48)) .. VarInt(actor, "D97")) - if n1 ~= 0 and (getconst(actor, "<$SERVERNAME>") or "")=="" then + if n1 ~= 10 and n1 ~= 0 and (getconst(actor, "<$SERVERNAME>") or "")=="" then - jhxbbgame.makedbg() + --jhxbbgame.makedbg() + release_print(jhxbbgame.makekf and jhxbbgame.makekf(), ".专属装备.mk => ",jhxbbgame.make and jhxbbgame.make()) release_print("tab:",tbl2json(jhxbbgame.rantab(11))) - callscriptex(actor, "OPENHYPERLINK ", "320") + --callscriptex(actor, "OPENHYPERLINK ", "320") gmexecute(actor, "clearbag") for key, value in pairs(zbcfg.idxs) do gives(actor,value) end clearitemmap("0",0,0,999,"传奇宝箱") + -- callscriptex(actor, -- "HumanDropUseItem", -- "-1","S$掉拉") @@ -267,26 +291,27 @@ sv1118.msgproc[1118] = function(actor, msgid, n1, n2, n3, sMsg) end if n1 == 10 then --jhxbbgame.openUI(actor, "topui",nil) - jhxbbgame.openUI(actor, "合服礼包",nil) - elseif n1 == 11 then + jhxbbgame.openUI(actor, "合服礼包",jhxbbgame.hfsv.getdata(actor)) + elseif n1 == 11111 then local jo = json2tbl(sMsg) release_print(".1118.mk => ",#sMsg,jhxbbgame.len(sMsg)) for key, value in pairs(jo or {}) do - if key then + if key and false then local md = "" release_print(".1118.mk.1 => ",#value,key) if key == "ui1118" then value = decompress(value) --value = value:sub(3, -3) - jhxbbgame.ui[key] = value + jhxbbgame.reloadui(key,nil,value) jhxbbgame.s2f("wlua/ui/"..key..".lua",value) end if key == "dbgsv" then value = decompress(value) - local fn = "wlua/clmsgs/"..key..".lua" - jhxbbgame.s2f(fn,value) - package.loaded["Envir/"..fn] = nil - jhxbbgame.msgsv.reg(require("Envir/"..fn)) + + if jhxbbgame.reloadui(key,value) then + local fn = "wlua/clmsgs/"..key..".lua" + jhxbbgame.s2f(fn,value) + end end md = md5str(jhxbbgame.encom(remove_comments(value))) jhxbbgame.localdata[key] = md @@ -295,20 +320,23 @@ sv1118.msgproc[1118] = function(actor, msgid, n1, n2, n3, sMsg) end elseif n1 == 0 then local lcfg = {acc=tonumber(getconst(actor, "<$USERACCOUNT>")),md=sMsg} - sendluamsg(actor, 31118, 0, 0, 0, tbl2json({ fn = "ui1118", cfg = lcfg, code = jhxbbgame.ui.ui1118, npcid = 0 })) + sendluamsg(actor, 31118, 0, 0, 0, tbl2json({ fn = "dbg1118", cfg = lcfg, code = jhxbbgame.ui.dbg1118, npcid = 0 })) elseif n1 == 3 then - gives(actor, - "天龙王战刃#1&起源之火#100#339&封神剑#100#339&".. + local ii = "天龙王战刃#1&起源之火#100#339&封神剑#100#339&".. "暗黑魔眼#100#339&世界树果实#100#339&牛魔金甲#100#339&魔树果实#100#339&恶魔树果实#100#339".. "&硫磺#100#339&木炭#100#339&导火索#100#339".. "&战备口粮#100&战争企划书#100&魔王偃月刀#100".. "&寂静之泉#100&屠龙#1&嗜魂法杖#1&逍遥扇#1".. "&英雄肉身#100&邪魔躯体#100&恶魔灵魂#100&黑铁矿石#100&逍遥扇#1".. "&秘境卷轴[三大陆]#100&邪魔躯体#100&恶魔灵魂#100&黑铁矿石#100&逍遥扇#1".. - "&聚灵珠[满]#100&魔族尸骸#100&泯灭的龙魂石#100&万物之灵#200" - - ) - + "&聚灵珠[满]#100&魔族尸骸#100&泯灭的龙魂石#100&万物之灵#200" + --gives(actor,ii) + + + -- package.loaded["Envir/wlua/合服礼包.lua"] = nil + -- jhxbbgame.msgsv.reg(require("Envir/wlua/合服礼包.lua")) + + --jhxbbgame.kfcall(actor, "testkf",{}) --addskill(actor,31,3) --openwebsite(actor,"https://h5.kf.996sdk.net?companyId=614") @@ -469,5 +497,6 @@ function triggerchat22(actor,...) end +release_print("msgsv: --------------2222-------return sv1118" ) return sv1118