verfx/dbgsvbuding.lua

332 lines
9.1 KiB
Lua
Raw Normal View History

2024-12-07 16:08:27 +08:00
function jhxbbgame.dbgout(...)
release_print(...)
end
2024-12-07 17:15:23 +08:00
2024-12-07 20:32:08 +08:00
require("Envir/wlua/verfx/tesxbb.lua")
2024-12-07 16:08:27 +08:00
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, result
end
end
local old = {struckdamage,attackdamage,killmon,setbaseinfo}
local md ={}
local new ={}
local function rmmob(Target,Hiter,ret,Damage,flg)
local bb = false
for index, value in ipairs(md) do
if value == Target then
table.remove(md,index)
bb = true
break
end
end
local died = getbaseinfo(Target,0)
if not died then
jhxbbgame.dbgout(Hiter,Target,jhxbbgame.info(Target,true),jhxbbgame.info(Hiter),
"KMon.<2E><>г",zbcfg.last2,ret,Damage,tbl2json(attrtab(Target)))
killmonbyobj(Hiter,Target,true,false,true)
end
jhxbbgame.dbgout(Target,"KMon.Die",died,jhxbbgame.info(Target, true),flg,bb)
end
function jhxbbgame.info(actor, d)
if isnotnull(actor) then
local n,i,m,x,y,dd = getbaseinfo(actor, 1,2),
tonumber(getbaseinfo(actor, 55)),
getbaseinfo(actor, 3),getbaseinfo(actor, 4),
getbaseinfo(actor, 5),getbaseinfo(actor, 12)
local td = ""
if d then
local dis = {}
for i = 1, 11, 1 do
if checkhumanstate(actor,i) then
dis[i] = 1
else
dis[i] = 0
end
end
td = tbl2json(dis)
end
return string.format("[%s]%s:%d(%s,%d,%d)%d.",
actor,n,i,m, x,y,dd)..td
else
return "nil"
end
end
function new.struckdamage(actor, Hiter, Target, MagicId, Damage)
local ret,errinfo = safecall(old[1],Damage,actor, Hiter, Target, MagicId, Damage)
if errinfo then
jhxbbgame.dbgout(nil,"KMon.Err1",jhxbbgame.info(Target),jhxbbgame.info(Hiter),errinfo)
end
return ret
end
debug = debug or {}
debug.traceback = debug.traceback or function ()
return "none"
end
function new.setbaseinfo(actor,nID,value)
if nID == 12 then
jhxbbgame.dbgout(actor,"KMon.Set12",jhxbbgame.info(actor),value,debug.traceback())
end
return old[4](actor,nID,value)
end
function new.attackdamage(actor, -- object <09><><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD>
Target, -- object <09>ܻ<EFBFBD><DCBB><EFBFBD><EFBFBD><EFBFBD>
Hiter, -- object <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MagicId, -- integer <09><><EFBFBD><EFBFBD>ID
Damage, -- integer <09>˺<EFBFBD>
Model -- integer <09><><EFBFBD><EFBFBD>64_23.10.24<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ
)
local ret,errinfo = safecall(old[2],Damage,actor,
Target,
Hiter,
MagicId,
Damage,
Model)
if false then
local vdata = {}
for key, cfg in pairs(jhxbbgame.zb) do
vdata.zb = key
zbcfg.last = key
zbcfg.last2 = zbcfg.last
if cfg and cfg[2] and cfg[2](actor, Target, Hiter, MagicId, Damage, Model, vdata) then
local aa = getbaseinfo(Target, 12)
if aa > 0 then
jhxbbgame.log(actor,key, ".<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = ", aa)
break
end
end
zbcfg.last = nil
end
return Damage
end
if errinfo then
jhxbbgame.dbgout(nil,"KMon.Err2",zbcfg.last2,ret,Damage,jhxbbgame.info(Target),jhxbbgame.info(Hiter),errinfo)
end
if ismon(Target) then
local mdd = md[Target] or {t=os.time(),hpp = 1,pt=os.time()}
md[Target] = mdd
if getbaseinfo(Target,0) then
rmmob(Target,Hiter,ret,Damage,2)
else--@ˢ<><CBA2> һ<><D2BB>½-<2D><><EFBFBD>ö<EFBFBD>
mdd.cnt = (mdd.cnt or 0) + 1
local thp,tmax_hp = getbaseinfo(Target, 9),getbaseinfo(Target, 10) or 1
local hpp = thp/tmax_hp
--20<32><30> 1%<25><>Ѫ<EFBFBD><D1AA>û<EFBFBD><C3BB><EFBFBD><EFBFBD>
local dv = mdd.hpp-hpp
if (dv) < 0.02 and os.time()> mdd.pt then
local mid1 = getbaseinfo(Target, 55)
local mid = mid1 - 2665
--jhxbbgame.log(Hiter, ".<2E><><EFBFBD><EFBFBD><EFB1BB><EFBFBD><EFBFBD>= ", mid, mid1,getbaseinfo(Target,12))
if (mid >= 1) and (mid <= 8) then
return ret
end
local mp = getbaseinfo(Target,12)
if mp > 0 then
local dbmp = getdbmonfieldvalue(mid1,"mp")
if mp ~= dbmp then
old[4](Target,12,dbmp)
jhxbbgame.dbgout(nil,"KMon.Fix12",jhxbbgame.info(Target),mp,dbmp,getbaseinfo(Target,12))
end
end
jhxbbgame.dbgout(actor,jhxbbgame.info(Target),
"KMon.20<EFBFBD><EFBFBD> 2%<25><>Ѫ<EFBFBD><D1AA>û<EFBFBD><C3BB><EFBFBD><EFBFBD>",zbcfg.last2,ret,Damage,mdd.cnt,hpp,mdd.hpp)
mdd.pt = os.time() + 20
mdd.hpp = hpp
mdd.pcnt = (mdd.pcnt or 0) + 1
if mdd.pcnt >= 10 and (getbaseinfo(Target,12) <= 0) then
rmmob(Target,Hiter,ret,Damage,1)
end
end
if mdd.cnt > 10 and mdd.cnt %20 == 0 then
--jhxbbgame.dbgout(actor,"KMon.cnt",dv,mdd.cnt,getbaseinfo(Target, 1))
if mdd.cnt > 3000 then
rmmob(Target,Hiter,ret,Damage,3)
end
end
end
end
return ret
end
function new.killmon(actor, mon, killerType, monid, monName, mapid)
local ret = old[3](actor, mon, killerType, monid, monName,mapid)
rmmob(mon,actor,ret,mapid,111)
return ret
end
local hooks = {["makeposion"]=0,
"changehumability","changehumnewvalue","changemode","addbuff"}
local hooks = {}
for key, value in pairs(hooks) do
local old = _G[key]
if old then
_G[key] = function (actor,p1,...)
if isplayer(actor) or p1 == value then
old(actor,p1,...)
else
jhxbbgame.log(actor,key..".Fail.",p1,...)
end
end
end
end
2024-12-07 19:58:12 +08:00
function jhxbbgame.Gives(actor,sitem)
local items = sitem:split("&")
for key, value in pairs(items) do
local aitm = value:split("#")
if aitm then
giveitem(actor,aitm[1],aitm[2],1+2+16+64+256)
end
end
end
edcode = edcode or require("Envir/wlua/edcode.lua")
2024-12-07 16:08:27 +08:00
release_print("jhxbbgame.dbgout22211112:", jhxbbgame,tostring(jhxbbgame))
2024-12-07 20:03:16 +08:00
2024-12-07 19:58:12 +08:00
if jhxbbgame.any2lua then
2024-12-07 20:19:45 +08:00
jhxbbgame.localdata=jhxbbgame.recfile({ui1118=jhxbbgame.ui.ui1118,
2024-12-07 19:58:12 +08:00
--ui=jhxbbgame.any2lua(jhxbbgame.ui),
--dbg=jhxbbgame.f2s("wlua/verfx/dbgsvbuding.lua")
dbgsv=jhxbbgame.f2s("wlua/verfx/tesxbb.lua")
},true)
2024-12-07 20:03:16 +08:00
jhxbbgame.s2f("wlua/verfx/lst.txt",tbl2json(jhxbbgame.localdata))
2024-12-07 16:08:27 +08:00
end
2024-12-07 19:58:12 +08:00
release_print(("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),"jhxbbgame.dbgout2222:",jhxbbgame.len(jhxbbgame.localdata),jhxbbgame.len(rctofile), jhxbbgame)
2024-12-07 16:08:27 +08:00
local saalog = [[<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01<EFBFBD><EFBFBD> 32774177 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01<EFBFBD><EFBFBD>(<EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD>) 17426628 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1573475096 98
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD> 12423194 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10120082 98
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 27238132 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 25600594 98
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13606434 648
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13606434 328
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13935325 328
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13606434 128]]
local saalog = [[<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01<EFBFBD><EFBFBD> 32774177 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01<EFBFBD><EFBFBD>(<EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD>) 17426628 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>01<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1573475096 98
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD> 12423194 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10120082 98
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 27238132 10
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 25600594 98
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13606434 648
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13606434 328
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13935325 328
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 13606434 128]]
local aalog =saalog:gsub("\n", "\t"):split("\t")
--jhxbbgame.s2f("wlua/verfx/ccc.lua",jhxbbgame.any2lua(aalog))
local ccc = {}
for i = 1, #aalog /3, 1 do
local value = {aalog[((i-1)*3)+1],aalog[((i-1)*3)+2],aalog[((i-1)*3)+3]}
local q = value[1]
2024-12-07 19:58:12 +08:00
ccc[q] = ccc[q] or {all={},all5={},c98={},c38={}}
2024-12-07 16:08:27 +08:00
local cc= ccc[q]
local accid = tonumber(value[2])
local cnt = tonumber(value[3])
cc.all[accid] = (cc.all[accid] or 0)+value[3]
if cnt == 98 then
cc.c98[accid] = (cc.c98[accid] or 0)+1
elseif cnt == 38 then
cc.c38[accid] = (cc.c38[accid] or 0)+1
2024-12-07 19:58:12 +08:00
else
cc.all5[accid] = (cc.all5[accid] or 0)+value[3]
2024-12-07 16:08:27 +08:00
end
end
jhxbbgame.s2f("wlua/verfx/ccc.lua",jhxbbgame.any2lua(ccc))
function jhxbbgame.zxcz.readex(actor,k)
return tonumber(readini(jhxbbgame.zxcz.recfile, k, actor))
end
function jhxbbgame.zxcz.writeex(svname,actor,k, v)
release_print(svname,"<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>¼.write=>", actor,k, v)
writeini(jhxbbgame.zxcz.recfile, k, actor,v)
end
local function bfbylogq(svname,qacc)
2024-12-07 19:58:12 +08:00
local tpcfg = {c38={"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",0},c98={"<EFBFBD><EFBFBD>Ȩ",0},all5={"<EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>",0},all={"<EFBFBD><EFBFBD>ȫ<EFBFBD>ۼ<EFBFBD>",0}}
2024-12-07 16:08:27 +08:00
for tpkey, tpval in pairs(tpcfg) do
local recs = qacc[tpkey]
for acckey, value in pairs(recs) do
local tp = tpval[1]
local rec = jhxbbgame.zxcz.readex(acckey, tp)
if tpkey == "c38" then
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if rec <= 0 then
jhxbbgame.zxcz.writeex(svname,acckey, tp, value)
tpval[2] = tpval[2] +1
end
elseif tpkey == "c98" then
--<2D><><EFBFBD><EFBFBD>Ȩ
jhxbbgame.zxcz.writeex(svname,acckey, tp, 1)
tpval[2] = tpval[2] +1
2024-12-07 19:58:12 +08:00
elseif tpkey == "all5" then
jhxbbgame.zxcz.writeex(svname,acckey, tp, value)
tpval[2] = tpval[2] +1
2024-12-07 16:08:27 +08:00
elseif tpkey == "all" then
jhxbbgame.zxcz.writeex(svname,acckey, tp, value)
tpval[2] = tpval[2] +1
end
end
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,"<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>¼=>", jhxbbgame.len(value.c98), jhxbbgame.len(value.c38))
bfbylogq(key,value)
break
end
end
end
2024-12-07 17:15:23 +08:00
-- -- ʾ<><CABE><EFBFBD>÷<EFBFBD>
-- local lua_code = jhxbbgame.f2s("wlua/verfx/tesxbb.lua")
-- local code_without_comments = remove_comments(lua_code)
-- jhxbbgame.s2f("wlua/verfx/tesxbb2.lua",code_without_comments)
-- print(#code_without_comments)
2024-12-07 16:08:27 +08:00
bfbylog()