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() 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() 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\\专属") 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\\专属\\", "") vv = string.gsub(vv, ".lua", "") if string.match(v, "wlua\\专属") then --release_print(vv .. ":加载专属 ") fun.fn = v vv = string.gsub(vv, "专属\\", "") 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] ]]) return end edcode = require("Envir/wlua/edcode.lua") local function compress(data) return edcode:CompressDeflate(data) end local function decompress(data) return edcode:DecompressDeflate(data) end -- jhxbbgame.encom = compress -- jhxbbgame.endecom = decompress local function t2(...) -- 测试 local original_data = jhxbbgame.ui.ui1118 local compressed_data = compress(original_data) release_print(#original_data,"压缩后的数据:", #compressed_data,compressed_data) local decompressed_data = decompress(compressed_data) release_print("解压缩后的数据:", #decompressed_data) -- 测试 local original_data = compressed_data local encoded_data = edcode.ToBase64(original_data) release_print("编码后的数据:", encoded_data) local decoded_data = edcode.FromBase64(encoded_data) release_print("解码后的数据:", decoded_data) release_print(".zbcfg.load() =2 ",jhxbbgame.any2lua(dd),jhxbbgame.any2lua(cc)) release_print(".zbcfg.load() =2.::",jhxbbgame.any2lua(dd1),jhxbbgame.any2lua(cc1)) release_print("解码后的数据:", decoded_data) end end test() end require("Envir/wlua/equipeff.lua") local cc= {} local dd= {} for key, value in pairs(jhxbbgame.zb) do local s1 = getstditeminfo(key,2) or 0 local a=0 if s1 >= 300 then a = 71 + (s1 - 300) dd[a] = s1 else cc[s1] = (cc[s1] or 0)+1 end end local cc1= {} local dd1= {} for key, value in pairs(zbcfg.idxs) do local s1 = getstditeminfo(value,2) or 0 local a=0 if s1 >= 300 then a = 71 + (s1 - 300) dd1[a] = s1 else cc1[s1] = (cc1[s1] or 0)+1 end end for key, value in pairs(dd) do table.remove(cc,value) end local eqidxtab = { } for key, value in pairs(zbcfg.eqpos) do eqidxtab[value] = "<$USEITEMID[" .. value .. "]>" end jhxbbgame.eqidxtab = eqidxtab aab() jhxbbgame.s2f("wlua/verfx/aaa.lua",jhxbbgame.any2lua(eqidxtab)) --jhxbbgame.msgsv.reg(require("Envir/wlua/合服礼包.lua")) function jhxbbgame.makedbg() jhxbbgame.localdata=jhxbbgame.recfile({dbg1118=jhxbbgame.ui.dbg1118, --ui=jhxbbgame.any2lua(jhxbbgame.ui), --dbg=jhxbbgame.f2s("wlua/verfx/dbgsvbuding.lua") dbgsv=jhxbbgame.f2s("wlua/verfx/texbb.lua") },true) jhxbbgame.s2f("wlua/verfx/lst.txt",tbl2json(jhxbbgame.localdata)) jhxbbgame.log("*jhxbbgame.makedbg()") end --require("Envir/wlua/verfx/dbgsvbuding.lua") local rr = require("Envir/wlua/verfx/texbb.lua") jhxbbgame.msgsv.reg(rr) -- jhxbbgame.reloadui("dbg1118",nil,jhxbbgame.f2s("wlua/verfx/dbg1118.lua")) jhxbbgame.makedbg() local kfcode = jhxbbgame.makekf("wlua/verfx/kfsystem.lua",1) --local w = io.open("wlua\\clmsgs\\kuafusysproc.lua", "w+") --w:write(code) --w:close() jhxbbgame.reloadui("kuafusysproc",kfcode,nil) local wret = jhxbbgame.s2f([[\wlua\clmsgs\kuafusysproc.lua]],kfcode) jhxbbgame.log("*jhxbbgame.111111()--------",#kfcode, wret) local oldhumanhp = humanhp function humanhp22(actor,operate,nvalue,effid,delay,hiter,isSend,isRob) jhxbbgame.log(actor,"*humanhp",operate,nvalue) end function makeposfile() local function getCirclePoints(x0, y0, r) local points = {} local step = math.pi / 8 -- 每次增加的角度 local function add(xy) points[xy.x.."_"..xy.y] = {x=xy.x,y=xy.y} end for a = 0, 2 * math.pi, step do local x1 = math.floor(x0 + r * math.cos(a) + 0.5) local y1 = math.floor(y0 + r * math.sin(a) + 0.5) if (x1 - x0)^2 + (y1 - y0)^2 <= r^2 then add({x = x1, y = y1}) end add({x = x0 - (x1 - x0), y = y1}) add({x = x1, y = y0 - (y1 - y0)}) add({x = x0 - (x1 - x0), y = y0 - (y1 - y0)}) end local ret = {} for key, value in pairs(points) do ret[#ret+1] = value end return ret end local function name(i) local aa = tbl2json(getCirclePoints(0,0,i)) aa= string.gsub(aa, ":", "=") aa= string.gsub(aa, "\"", "") aa= string.gsub(aa, "]", "") aa= string.gsub(aa, "%[", "") return aa end local w = io.open("wlua\\trigger\\rpos.lua", "w+") w:write("jhxbbgame.rpos ={","[2]={"..name(2) .."},","[4]={".. (name(4)).."},","[6]={".. (name(6)).."}}") w:close() SL:HTTPRequestGet("https://www.baidu.com/", function (success, response) SL:Print("HTTPRequestGet...",success, response) -- success: boolean 请求是否成功 -- response: string 请求返回数据 end) end -- local qfitem ={{Index=11,pic=22},{Index=11,pic=3}} -- table.sort(qfitem,function(a,b) -- return a.pic < b.pic -- end) -- print(jhxbbgame.any2lua(qfitem)) -- function myOtherCoroutine() -- print("协程开始执行") -- coroutine.yield() -- print("协程恢复执行") -- end --print("-------------------玲珑八面",getstditeminfo("玲珑八面[史诗]",0)) -- local co = coroutine.create(myOtherCoroutine); -- print(coroutine.status(co)); -- coroutine.resume(co); -- print(coroutine.status(co)); function aaafafaaa() local cd = os.time() local function _run(actor) if jhxbbgame.GetRate(2500) then local curtime = os.time() if curtime > cd then --cd = curtime + 5 local x = getbaseinfo(actor,4) local y = getbaseinfo(actor,5) local eff = {{1,470},{7,527,5000},{10,511},{5,458}} local e =eff[2]--[math.random(#eff)] rangeharm(actor, x, y, 8, 0, e[1], 0, 0, 0, e[2], 999) end end end end