require("Envir/wlua/verfx/lib996.lua")
function jhxbbgame.s2f(f,s,m)
local wsz = -1
m = m or "w+"
local w, e = io.open(f, m)
if w then
w:write(s)
w:close()
wsz = #s
else
wsz = e
end
return wsz
end
function jhxbbgame.f2s(f,def,m)
m = m or "r"
local ret = def
local r = io.open(f, m)
if r then
ret = r:read("*all")
r:close()
end
return ret
end
jhxbbgame.dbgout = jhxbbgame.log
local function aab()
zbcfg._CD=json2tbl(
[[{
"兽族嘶吼":30,
"末路黄泉":180,
"潜龙王御敌指环":180,
"天堂有路":1,
"奴隶之戒":0,
"疾风之戒":60,
"横行霸道":300,
"暗龙之戒":180,
"鸣龙王御敌指环":3600,
"听天由命":180,
"龙神之战斗锤":300,
"恶魔爪牙":0,
"教皇之争":0,
"杀戮之甲":0,
"暗龙王御敌指环":0,
"镇魂链甲":0,
"地狱无门":360,
"怒火中烧":0,
"滴水穿石":0,
"天龙王御敌指环":0,
"刹那之间":0,
"寒冰之契":0,
"猝亡之戒":0,
"目空一切":0,
"刹那之失":10,
"玲珑八面":0,
"极度深寒":15,
"死神之拒":10,
"来世再做我的英雄":0,
"目空一切[史诗]":0,
"刹那之失[史诗]":10,
"玲珑八面[史诗]":0,
"极度深寒[史诗]":15,
"死神之拒[史诗]":10,
"来世再做我的英雄[史诗]":0,
"抵抗的决心":180,
"暗龙王的毒液":180,
"千里暮云带":10,
"龙骨吞噬者":20,
"烈焰之石":30,
"雷霆之石":15,
"暗黑魔之趾":60,
"九天繁星衣":120,
"凛冬铁壁带":60,
"寂雪之冠":30,
"寂静星魔铠":60,
"千年冰甲":60,
"末日灵魂披风":120,
"黑暗君王袍":60,
"幽冥魔护带":60,
"叹息之咒怨":120,
"天启守护者之链":60,
"霜魔低语":60,
"荒漠统领之链":30,
"雪夜狼踪履":30,
"霜蹄驭者扣":120,
"九尾千金裘":60,
"焰足蜥行履":60,
"凛冬之寒":30,
"魔音使者之杖":300,
"俩生纷争之杖":300,
"蛰伏之影":60,
"腐化晶核":60,
"幽暗骨守之衣":50,
"炎蜥噬雷刃":60,
"骨龙之心":300,
"赤焰蛛带":60,
"炎狱魔猪之皮":60,
"夜幕霸主之铠":60,
"冰龙神卫之冠":60,
"冰霜王者靴":60,
"邪法低语带":60,
"霜寒龙吟刀":60,
"狂暴龙炎之心":300,
"火焰领主之冠":300,
"天狐掩月盔":60,
"天启之姿":60,
"荒野奔腾之斧":60,
"天启皇者带":60,
"血肉震荡者":120,
"邪恶星界衣":60,
"暗影孤鸿长剑":120,
"炼狱炎蝠之袍":60,
"寒霜之吻":60,
"魔影祭祀之靴":60,
"暗幕破晓者":60,
"虹魔之拥":30,
"冰魄战甲":60,
"蛮蹄护心铠":60,
"沉默暗影裘":60,
"狂暴雷霆之靴":60,
"幽冥之怨":60,
"死水沼泽靴":60,
"横行沼泽带":60,
"炎狱行者靴":60,
"天狼蛛牙":60,
"幽影编织者":60,
"钢牙追猎者":60,
"沉默血痕带":60,
"双生魔影袍":300,"魔影护卫者之冠":60}]]
)
zbcfg.idxs = {"天龙王御敌指环","潜龙王御敌指环","坠天使之心","暗龙王御敌指环","鸣龙王御敌指环",
"横行霸道","目空一切","目空一切[史诗]","极度深寒","极度深寒[史诗]"
,"来世再做我的英雄","来世再做我的英雄[史诗]","炎君赤羽衣","末日灵魂披风"
,"时空沙漏","燃烧的图腾","财神","疾风之戒","滴水穿石","罪孽深重","正邪两立","猝亡之戒"}
release_print("-------------------dbg:zbcfg.idxs")
function jhxbbgame.tab2str(r, tab)
local sRet = "{"
if tab then
local i = 0
for k, v in pairs(tab or {}) do
local line = tostring(k).."="..jhxbbgame.any2str2(r, v) ..(i > 0 and "," or "")
sRet = sRet .. (line)
i = i + 1
end
end
sRet = sRet .. "}"
return sRet
end
function jhxbbgame.any2str2(ret, ...)
local sRet = ""
local tbl = { ... }
for k, value in pairs(tbl or {}) do
local st = type(value)
if st == "table" then
sRet = sRet .. jhxbbgame.tab2str(ret, value)
else
sRet = sRet .. tostring(value)
end
if ret then
sRet = sRet .. "\n\r"
end
end
return sRet
end
function jhxbbgame.any2str(...)
return jhxbbgame.any2str2(false, ...)
end
function isValidVariableName(str)
if string.match(str, "^%d") then -- 检查是否以数字开头
return false
end
return string.match(str, "^%a[%w_]*$") ~= nil -- 检查是否是字母开头,后面跟字母、数字或下划线
end
tblccc= nil
function jhxbbgame.any2lua(...)
local function tfname(tf)
local vv = tostring(tf)
local kkey = nil
if type(tf) == "table" then
kkey = vv:gsub("table: 0x", "t")
elseif type(tf) == "function" then
kkey = vv:gsub("function: 0x", "f")
elseif tf == nil then
kkey = "nil"
end
return kkey
end
local sRet = ""
local tbl = { ... }
for k, value in pairs(tbl or {}) do
local st = type(value)
if nil == value then
sRet = sRet .. st
elseif tblccc == value then
elseif st == "table" then
sRet = sRet .. "{\n"--string.format("{--%s(%d)\n",tfname(value),jhxbbgame.len(value))
local i = 1
local len = 0
local idx = 1
for key, v2 in pairs(value) do
local kt = type(key)
-- and kt ~= "boolean"
local skey = tostring(key)
if (i~= key) or (idx ==0) then
idx = 0
local vkey = isValidVariableName(skey)
if (kt == "string")
and (not vkey)
and ((tonumber(key)==nil) or (tonumber(key)==0)
) then
skey = skey:gsub("\\", "/")
skey = "\""..skey.."\""
vkey = false
elseif (kt == "boolean") then
vkey = false
end
if not vkey then
skey = "["..skey.."]"
end
key = skey.."="
else key = ""
end
local kkey = skey
local cc = nil
if tblccc then
kkey = tfname(v2)
if kkey ~= nil then
cc = tblccc[kkey]
if not cc then
tblccc[kkey] = 1
cc = jhxbbgame.any2lua(v2)
else
cc = kkey
end
else cc = jhxbbgame.any2lua(v2)
end
else cc = jhxbbgame.any2lua(v2)
end
local add = key..cc
if i > 1 then
add = ","..add
end
sRet = sRet ..add
len = len + #add
i = i + 1
if len > 80 then
sRet = sRet .."\r"
len = 0
end
end
sRet = sRet .. "}"
elseif st == "function" then
local vv = tostring(value)
sRet = sRet ..vv:gsub(": ", '(a')..")end"
elseif st == "string" then
if value:find("\n") then
value = value:gsub("%[%[%]%]", '""')
value = "[["..value.."]]"
else
value = value:gsub("\\", "/")
value = "\""..value.."\""
end
sRet = sRet .. value
else
sRet = sRet .. tostring(value)
end
sRet = sRet .. ","
end
return sRet:sub(1, -2)
end
-- if smsg:sub(1, 1) == "*" then
-- smsg = smsg:sub(2)
-- release_print()
-- end
function jhxbbgame.allcall(actor, fun)
if isplayer(actor) then
if checkkuafu(actor) and checkkuafuserver() then
--release_print("本服通知触发跨服QF")
kfbackcall(21, getbaseinfo(actor, 2), fun)
return
end
local funs = fun:split(",")
jhxbbgame.log(actor, "allcall.= ", fun, type(_G[fun]))
local fn = funs[1]
table.remove(funs,1)
_G[fn](actor,unpack(funs))
end
end
function jhxbbgame.log2(...)
end
function jhxbbgame.log(...)
local arg = { ... }
local actor = nil
local name = ""
if arg[1] and (isplayer(arg[1]) or ismon(arg[1])) then
actor = arg[1]
name = getbaseinfo(actor, 1)
table.remove(arg,1)
end
local smsg = ""
for key, value in pairs(arg or {}) do
smsg = smsg..tostring(value or "nil")..","
end
release_print(name,smsg)
if actor --and getgmlevel(actor)>0
and (smsg and smsg:sub(1,1)==[[*]])
then
--smsg = smsg:sub(2,#smsg)
jhxbbgame.sendmsg(actor,smsg)
end
return smsg
end
function jhxbbgame.dbgout(actor,...)
jhxbbgame.log(actor,"*",...)
end
function jhxbbgame.dbgoutr(...)
release_print(jhxbbgame.any2str(true, ...))
end
function jhxbbgame.in2ii(iname)
return tonumber(getstditeminfo(iname,0))
end
--jhxbbgame.s2f("jhxbbgame.lua", "local game = "..jhxbbgame.any2lua(jhxbbgame))
local olderr = error
error = function(m, lv)
return olderr(m, lv or 0)
end
function safecall(func, defret, ...)
local aret = nil
local pass, result, errinfo = pcall(func, ...)
if pass then
return result, nil
else
jhxbbgame.log("safecall.fail", result)
return defret, errinfo
end
end
function safecallEx(func, msg, defret, ...)
local aret = nil
local pass,result, errinfo = pcall(func, ...)
if pass then
return result, nil
else
jhxbbgame.log("safecall.fail", result)
return msg..tostring(errinfo), defret, result
end
end
function jhxbbgame.makekf(wfn)
local namesact = { "群骑竞赛", "夺宝战场", "杀戮证道", "据点争夺", "跨服沙巴克","辉煌的凤栖寺院", "泽坤的恩赐", }
local wf = function (key,fn)
local content = io.open(fn, "r")
if content then
local code = content:read("*all")
if code then
code = code:gsub([[local boxeffid]], "--local boxeffid")
code = code:gsub([[boxeffid]], "60584")
for key, value in pairs(namesact) do
code = code:gsub([[.actname == "]]..value, ".i == "..key)
code = code:gsub(key..[[" then]], key.." then")
code = code:gsub(key..[[" and]], key.." and")
end
content:close()
release_print("makekf----------------",#code)
if wfn then
jhxbbgame.s2f(wfn,code)
end
return code
end
else
release_print("Fail...",fn)
end
return nil
end
return wf(nil,"wlua\\verfx\\kfsystem.lua")
end
local function makecd()
zbcfg.CD = {}
local cdcnt = 0
local lu = ""
for key, value in pairs(zbcfg._CD) do
value = tonumber(value)
if value > 0 then
lu = "U"..149-cdcnt
zbcfg.CD[key]={value,lu}
cdcnt = cdcnt + 1
end
end
return lu,cdcnt
end
local lu,cdcnt = makecd()
function jhxbbgame.make()
local w = io.open("wlua\\trigger\\zszb.lua", "w+")
local ret, msg = safecall(function ()
w:write([[
local allzb = {}
]])
local i = 0
release_print("CD.Var========= ", i)
local savecd = {}
for key, value in pairs(zbcfg.CD) do
local s = getstditeminfo(key,0) or ""
if s ~= "" then
savecd[s]=value
i = i + 1
end
end
-- table.sort(savecd,function (a, b)
-- return a.k > b.k
-- end)
savecd=jhxbbgame.any2lua(savecd)
local lidxsa = {}
for key, value in pairs(zbcfg.idxs) do
lidxsa[key]=getstditeminfo(value,0)
end
local lidxs=jhxbbgame.any2lua(lidxsa)
local zz = jhxbbgame.zb
local wf = function (key,fn)
local content = io.open(fn, "r")
if content then
local code = content:read("*all")
if key then
w:write("allzb["..key.."] = function ()\n\r")
end
code = code:gsub("jhxbbgame.GetRate%(", "(math.random(1,10000)<=")
for key2, value in pairs(lidxsa) do
code = code:gsub("zbcfg.idxs%["..key2.."%]", value)
end
w:write(code)
if key then
w:write("\n\rend\n\r")
end
content:close()
else
release_print("Fail...",fn)
end
end
w:write("zbcfg.CD = "..savecd.."\n")
w:write("zbcfg.idxs = "..lidxs.."\n")
w:write([[release_print("-----------res--------:zbcfg.idxs")]])
w:write("--"..cdcnt.."/"..lu.."\r")
wf(nil,"wlua\\verfx\\equipeff.lua")
--jhxbbgame.zb = {}
local nzz ={}
for key, value in pairs(zz) do
local key2 = getstditeminfo(key,0) or 0
if (not key2) or (key2 <= 0) or (not value)or (not value.fn) then
release_print("无效的专属装备名字...",key,value)
else
local cfff = {k=tonumber(key2),fn=value.fn}
nzz[#nzz+1]=cfff
end
end
release_print("#nzz:"..#nzz)
table.sort(nzz,function (a, b)
return a.k > b.k
end)
zz = nzz
for key, value in pairs(zz) do
--release_print(value.k,key)
wf(value.k,value.fn)
end
w:write([[
jhxbbgame.zb = {}
for key, value in pairs(allzb) do
jhxbbgame.zb[key]=value()
end
zbcfg.build()
release_print("专属装备.ok",jhxbbgame.len(zbcfg.CD),(zbcfg.CD[50376]and zbcfg.CD[50376][2])or nil)
]])
return "OK"
end)
w:close()
return tostring(ret)..tostring(msg)
end
jhxbbgame.zb = {}
for k, v in pairs(getenvirfilelist()) do
if string.match(v, "%.([^%.]+)$") == "lua" then
if string.match(v, "wlua\\verfx\\专属") then
local mode_path = string.format("Envir\\%s", v)
local fun=require(mode_path)
if not fun then
release_print(mode_path .. ":加载专属失败 ")
else
local vv = string.gsub(v, "wlua\\verfx\\专属\\", "")
vv = string.gsub(vv, ".lua", "")
if string.match(v, "wlua\\verfx\\专属") then
--release_print(vv .. ":加载专属 ")
fun.fn = v
vv = string.gsub(vv, "verfx\\专属\\", "")
jhxbbgame.zb[vv] = fun
end
end
end
end
end
release_print("专属装备:=>",safecall(zbcfg.build),jhxbbgame.zb[1])
function zbcfg.makelua()
for key, value in pairs(zbcfg.CD) do
local fn = "wlua\\专属\\"..key..".lua"
local w = io.open(fn, "r")
if w == nil then
jhxbbgame.log("fn:",fn)
fn = fn:gsub("\\专属","\\专属\\tmp")
jhxbbgame.s2f(fn,[[--专属装备 by jhxbb
local cfg = {
}
cfg[1] = function(actor, -- object 玩家对象
Target, -- object 受击对象
Hiter, -- object 攻击对象
MagicId, -- integer 技能ID
Damage, -- integer 伤害
Model, -- integer 引擎64_23.10.24新增 当前攻击模式
vdata
)
local v = 1
if jhxbbgame.GetRate(100) then
jhxbbgame.log(Target, "]]..key..[[ = ", vdata.tmax_hp * 0.01)
jhxbbgame.HintEff(actor, "]]..key..[[")
return true
end
return false
end
return cfg
]])
end
end
end
--zbcfg.makelua()
function copy_file(source_file, destination_file)
local source = io.open(source_file, "rb")
if not source then
return false
end
local destination = io.open(destination_file, "wb")
if not destination then
--print("无法打开目标文件")
source:close()
return false
end
local content = source:read("*all")
destination:write(content)
source:close()
destination:close()
return true
end
copy_file("data\\cfg_buff2.xls","data\\cfg_buff.xls")
-- copy_file("wlua/verfx/tesxbb.lua","wlua/clmsgs/tesxbb.lua")
-- copy_file("wlua/verfx/ui1118.lua","wlua/ui/ui1118.lua")
function jhxbbgame.BodyItem(actor, bidx)
local ret = (getconst(actor, "<$USEITEMNAME[" .. bidx .. "]>"))
if not ret or ret =="" then
return nil
else
return ret
end
end
function zbcfg.idx(actor,item)
return getiteminfo(actor,item,2)
end
function jhxbbgame.reallce(actor,onoff)
onoff = onoff or 1
local deccnt = 666
if onoff ==1 then
jhxbbgame.HintEff(actor,"setskilldeccd")
SetVarInt(actor,"N$cd烈火剑法",1)
SetVarInt(actor,"N$cd野蛮冲撞",1)
SetVarInt(actor,"N$cd彻地钉",1)
SetVarInt(actor,"N$cd双龙斩",1)
SetVarInt(actor,"N$cd狮子吼",1)
SetVarInt(actor,"N$cd龙影剑法",1)
SetVarInt(actor,"N$cd雷霆剑法",1)
SetVarInt(actor,"N$cd逐日剑法",1)
SetVarInt(actor,"N$cd开天斩",1)
SetVarInt(actor,"N$cd擒龙手",1)
SetVarInt(actor,"N$cd纵横剑术",1)
SetVarInt(actor,"N$cd十步一杀",1)
else
deccnt = 0
jhxbbgame.HintEff(actor,"skillrestcd")
end
setskilldeccd(actor,"烈火剑法","=",deccnt)
setskilldeccd(actor,"野蛮冲撞","=",deccnt)
setskilldeccd(actor,"彻地钉","=",deccnt)
setskilldeccd(actor,"双龙斩","=",deccnt)
setskilldeccd(actor,"狮子吼","=",deccnt)
setskilldeccd(actor,"龙影剑法","=",deccnt)
setskilldeccd(actor,"雷霆剑法","=",deccnt)
setskilldeccd(actor,"逐日剑法","=",deccnt)
setskilldeccd(actor,"开天斩","=",deccnt)
setskilldeccd(actor,"擒龙手","=",deccnt)
setskilldeccd(actor,"纵横剑术","=",deccnt)
setskilldeccd(actor,"十步一杀","=",deccnt)
end
function jhxbbgame.GetRate(ratetag)
return true
end
function math.round(num)
return num >= 0 and math.floor(num + 0.5) or math.ceil(num - 0.5)
end
function math.sign(num)
if num > 0 then
return 1
elseif num < 0 then
return -1
else
return 0
end
end
local oldhumanhp = humanhp
function humanhp2(actor,...)
jhxbbgame.log(actor,"*humanhp",...)
--oldhumanhp(actor,...)
end
local oldaddhpper = addhpper
function addhpper2(actor,...)
jhxbbgame.log(actor,"*addhpper",...)
--oldaddhpper(actor,...)
end
local oldstartup= startup
function dbgstartup(sysobj)
release_print("startup",getstditeminfo("霜蹄驭者扣",0))
if not checkkuafuserver() then
genmon("k0108",6,11,"练功师",1,1,233)
genmon("k0108",9,11,"一大陆-僵尸洞",1,1,233)
end
genmon("0",139,153,"练功师",0,1,233)
genmon("0",143,157,"练功师",0,1,233)
if oldstartup then
oldstartup(sysobj)
end
end
startup = dbgstartup
local function test(actor)
if npcid == 34 then
say(actor, [[
[@main]