游戏地址
]ua3I}_B6v www.fgcq996.com {DO 9%ej) 那年传奇百区1.76
F/Goq` EOPx4+o 找到 lua_State 然后调用下面的函数就能实现功能
ZR>BK, 一个跑单狗注意qq1946913194
osV6= 游戏账号密码。fanren9527 qq2293307009 J
,W<ha*
"ubp`7%67 搞完演示完,删除好友跑单 #~0N
k6*u L*z=!Dpo --自动寻路Ex
6v%yU3l function API_AutoMoveEx(mapX, mapY)
mxNd ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
%ms%0% local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
F)3+IuY local pathPoints = inputProxy:GetPathFindPoints()
*^>"
h@J if pathPoints == nil then
+Z`=iia> return 0
D(b01EQ;d end
fk*(8@u> return #pathPoints
z?/_b end
a~}q]o?j *V>?m6y/ --自动寻路
'%$Vmf)= function API_AutoMove(mapX, mapY)
InP E_ ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
^WA7X9ed local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
F^,:p.ihm< local pathPoints = inputProxy:GetPathFindPoints()
$]7f1U_e if pathPoints == nil then
*WE8J#]d return 0
&raqrY|V end
6St= r)_ return #pathPoints
zJQh~) end
OB>Hiy
VcjbRpTy& --停止寻路
!'f7;%7s function API_AutoMoveEnd()
N8A)lYT]_u global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
Ek+R end
k4+vI1Cs }#z1>y!# --自动打怪
K EAXDF function API_AutoFight(isAFK)
vCa8`
m if isAFK then
wt($trJ if not IsAFKState() then
8/e-?2l global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
-CPtYG[s global.Facade:sendNotification(global.NoticeTable.AFKBegin)
_p$/.~Xo9 end
_^ hg7&dF else
*'@Oo if IsAFKState() then
=v2|QuS$ global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
I}f`iBG global.Facade:sendNotification(global.NoticeTable.AFKEnd)
U`v2Yw3E end
"@ >6<(Ki end
qS?o22
end
~aC ?M& zt
.kNb function IsAFKState()
7_~ A*LM local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
~yv7[`+Tgg return AutoProxy:IsAFKState()
i)#-VOhX) end
Cqd\n#d/~ ljFq ;!I5 --打开自动穿戴
2z>-H595az function API_AutoDress()
%=**cvVy --不抢别人归属
;|Cdq global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
b.*LmSX# global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
Q)75?mn local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
+p 6Ty2rz ServerOptionsProxy._data["autoDress"] = 1
!73y(Y%TE global.ConstantConfig.autousetimes = 0
c5]Xqq, end
*-0s
`rC
<':h/d --强制打开自动挂机拾取
oR#W@OK@is function API_AutoPick()
i/:L^SQAq local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
R"ON5,E local config = ItemConfigProxy.config
gt{kjrTv& for k, v in pairs(config) do
20Zxv! --local res = string.gsub(v.pickset, "0", "1")
Zue3Z{31T v.pickset = v.pickset .. 1
zx@!8Z
end
ly[yn{ end
IQ&PPC @*%3+9`yq --获取人物坐标
EP:`l function API_GetMapXY()
^h?fr` return ssr.GetMainPlayerMapPos()
G'|ql5Zw end
o30C\ Jr!^9i2j' --获取人物状态
{-A|f function API_GetAction()
l!ow\ZuQBF local player = global.gamePlayerController:GetMainPlayer()
Wf
c/?{ local list = global.playerManager.mPlayersInCurrViewField
>n7h%c return player:GetAction()
0CzQel)L: end
=O}I{dNKZV ERPg TZT --设置宠物状态
(%_X{R' function API_PetSleep(isSleep)
l";Yw]:^ local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
|5u~L#P if not SummonsProxy:IsAlived() then
i(~DhXz*T return false
BTAbDyH5 end
99yWUC, if isSleep then
)>@S8v,( SummonsProxy:RequestModeChange(2)
BX_yC=S else
|>Q>d8|k SummonsProxy:RequestModeChange(4)
-A#p22
D,5 end
8LV6E5Q end
z;JV3)E 3IYFvq~ --获取人物数据
^E}?YgNp function API_GetGamePlayer()
`v-[& local player = global.gamePlayerController:GetMainPlayer()
=lAjQt local list = global.playerManager.mPlayersInCurrViewField
u
X,n[u local person = {}
1!uBzO6/$ person["等级"] = player:GetLevel()
('x]@ person["职业"] = player:GetJobID()
4,y7a=qf3 person["名字"] = player:GetName()
l~J d>9DwY person["金币"] = ssr.GetMoneyCountById(1)
suE K;Bk9 person["元宝"] = ssr.GetMoneyCountById(2)
bM?gAY]mB8 person["绑金"] = ssr.GetMoneyCountById(3)
dN5{W0_ return person
/&Q{B f end
TcZ.5Oe6h#
wra0bS)4 function API_GetGamePlayerLevel()
XFWpHe_ L local player = global.gamePlayerController:GetMainPlayer()
p]L]=-(qI return player:GetLevel()
Y` }X5(A@ end
c64^u9 YR'F]FI --获取周围怪物
]:e_Y,@ function API_GetMonster()
S
]3CRJU3` local list = global.monsterManager.mMonstersInCurrViewField
sVx
}(J local actors = {}
"_/ih1z] for k, v in pairs(list) do
puPI^6y% local actor = {}
b8K]>yDAh actor["mID"] = v:GetID()
mZ71_4X# actor["mName"] = v:GetName()
*RkUF!)( actor["mRace"] = v:GetRace()
}MaY:PMA actor["mType"] = v:GetType()
O2fq9%lk actor["mSubType"] = v:GetSubType()
.wNXvnWr actor["mX"] = v:GetMapX()
4iA F<|6s actor["mY"] = v:GetMapY()
bK:U:vpYm actor["mAction"] = v:GetAction()
A8f.h5~9 actor["mTypeIndex"] = v:GetTypeIndex()
n])#
<0 actor["mAnimationID"] = v:GetAnimationID()
<AU*lLZ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
_ [k
\S|iY actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
W
^'|{9&m actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
<,
CrE5Pl actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
N3"Jo uP actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
<0d2{RQ; actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
40?RiwwD actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
0+SDFh actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
"Not /
8J actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
PC9,;T&7_ actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
5x+]uABE actor["mColor"] = "0xFFFFFF"
Zv!`R($ if v:GetType() == global.MMO.ACTOR_PLAYER then
` <1Wf local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
i"&FW&W local label_name = global.MMO.HUD_LABEL_NAME
.D@J\<,+l local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
P<g(i 6] if hudName then
[wQ48\^ actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
4r(0+SO end
i#-v4g
end
\Th<7WbR6# table.insert(actors, actor);
hDxq9EF end
#Hrzk!&9 Mj;V.Y return actors
m*m),mZ" end
>Y>R1b% JP8}+ --遍历周围玩家
u"h/ERCa function API_GetPlayer()
l.@1]4. local list = global.playerManager.mPlayersInCurrViewField
d-b04Q7DQ local actors = {}
F*P0=DD for k, v in pairs(list) do
X+!+&RAN* local actor = {}
Ef] Hpjvp actor["mID"] = v:GetID()
m(8Tup| actor["mName"] = v:GetName()
<>6j>w_| actor["mRace"] = v:GetRace()
%>FtA) actor["mType"] = v:GetType()
>._d2.Q' actor["mSubType"] = v:GetSubType()
5{'hsC
actor["mX"] = v:GetMapX()
#,tT`{u1q actor["mY"] = v:GetMapY()
_v&fIo actor["mAction"] = v:GetAction()
R!dC20IMvH actor["mTypeIndex"] = v:GetTypeIndex()
,4'gj0 actor["mAnimationID"] = v:GetAnimationID()
8e?/LA%MU actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
= Pv_,% actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
PCl5,]B} actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
dJR[9T_OF actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
}xsO^K actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
k|-\[Yl . actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
s70Z&3A actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
DMUirA; actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
+Kk1[fh-
actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
0j@mzd2 actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
'?C6P5fm actor["mColor"] = "0xFFFFFF"
uo`R if v:GetType() == global.MMO.ACTOR_PLAYER then
mGE!,!s} local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
cK'g2S local label_name = global.MMO.HUD_LABEL_NAME
!Ubm 586! local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
necY/&Ld- if hudName then
[Vs\r&qL actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
,)`_?^\$f end
-$8ew+ end
{VAih-y table.insert(actors, actor);
-m@c{&r end
Um+_S@h return actors
k o@ej
^ end
R&|.Lvmc/ L3{(Bu --遍历周围玩家EX
akvi^]x function API_GetPlayerExe()
m]jA( local s1 = API_GetPlayer()
qA[lL( local result = ""
ZxvH1qx8 for k, v in pairs(s1) do
h:fiUCw local s2 = string.format(
vx9!KWy} "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
]nsjYsT , v["mID"]
y`RzcXblIZ , v["mName"]
L
hO\a , v["mRace"]
SWrTM , v["Dura"]
`bQ_eRw} , v["mType"]
vgeqH[: , v["mSubType"]
.RpJZ[E , v["mX"]
8Qg{@#Wr , v["mY"]
.{ v$;g , v["mAction"]
@JGmOwZ , v["mTypeIndex"]
4vg3F( , v["mAnimationID"])
$5pCfW8> local s3 = ""
gC?}1]9c local s3 = string.format("mLv=%s,mSx=%s,mJD=%s,mHP=%s,mHPx=%s,mMP=%s,mMPx=%s,mOID=%s,OwN=%s,mGld=%s,mCor=%s"
?"@Fq2xgB4 , v["mLv"]
v*.R<-X: , v["mJobID"]
hi,="
/9 , v["mHP"]
b/_Zw^DPC , v["mHPMax"]
jq
H)o2"/ , v["mMP"]
_%Z.Re , v["mMPMax"]
=RWTjTZ , v["mOwnerID"]
btg= # u , v["mOwnerName"]
&%fcGNzJQ , v["mGuildName"]
CA#g(SiZ , v["mColor"])
g}%ODa !H result = result .. s2 .. s3 .. "\r\n"
<ww D*t end
D=ej%]@iw return result
:[<Y#EX. end
d.+*o
4.,EKw3 --遍历周围指定NPC
G`
l\R:Q function API_GetNpcIdByName(npcName)
e_b,{l# local npcVec = global.npcManager:FindNpcInCurrViewField()
a{ST4d'T local npc = {}
Rs=Fcvl for k, v in pairs(npcVec) do
8;g
i8Y local npcs = {}
4<[?qd3v= npc[v["mID"]] = v["mName"]
eV"%(<{ end
i\CA6I for key, value in pairs(npc) do
nZioFE} local sPos, ePos = string.find(value, npcName)
GQt5GOt if sPos then
]~;*9`: return key
P|Aac,nE+^ end
[#GBn0BG) end
<.)=CK return nil
M@TG7M7Os end
k1,k 9BK 30HUY?'K --NPC名称打开NPC
e]1=&:eX#d function API_NpcTalk(npcName)
2mEqfy local npcid = API_GetNpcIdByName(npcName)
x/<ow4C local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
IBNg2Y NPCProxy:RequestTalk(npcid)
TFkG"ev end
PzPNvV/o \hX,z = --NPCID打开NPC
bkJ bnW= function API_NpcTalkEx(npcid)
=OK#5r[UV local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
dSwfea_ NPCProxy:RequestTalk(npcid)
\udB4O end
<4TI;yy6? +jE)kaV% function API_GetNpcTalkData()
2xN7lfu1RB local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
"[ LUv5 local talkData = NPCProxy:GetCurrentNPCTalkData()
A}Iyl return talkData
E6GubU end
<qR$ `mLN a>GA=r
function API_GetAllLink()
nC3+Zka local talkData = API_GetNpcTalkData()
wwl,F=| Y ).k
U7;0 local acts = {}
{APfSD_4 local kv = {}
lH3.q4D
5 #)S }z+I for line in talkData.content:gmatch("(text=.->)") do
mH,s!6j?Vp if string.find(line, "@") then
b_Y+XXb< local key = line:match("text=(.-)|")
9SeGkwec?$ ,P<I<QYu local value = line:match("(@.-)>")
\!-]$&,j4 kv[key] = value
Qb@j8Xa4[ end
1le9YL1_g end
;,-)Z|W wA
{)9. for result in talkData.content:gmatch("(@.-)>") do
++~
G\T9H table.insert(acts, result)
;d<XcpK} end
G5qsnTxUJ local sendData = {
XF: wsC UserID = talkData.npcID,
&3/`cl[+ index = talkData.index,
9-n]_AF`0 --Act = "@blbumj",
t'F$/mx. --commonInput = jsonData.commonInput,
q<\r}1Dm --inputID= jsonData.inputID,
9]3l' }
o2(w return acts, kv, sendData
R}Zaz3( Hd end
*?Eu{J){7%
#4|RaI|. --按索引号点击按
F-@yH function API_ClickLinkByIndex(index)
GYw/KT~$ acts, kv, sendData = API_GetAllLink()
s-*N_Dv sendData["Act"] = acts[index + 2]
_dd_Z40R local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
Jha*BaD~N NPCProxy:ExecuteWithJsonData(sendData)
%;4#?.W8 end
TJNE2 ;7Qe m& --按索购买引号点击按
q"Bd-?9 function API_ClickBuyLinkByIndex(index)
7eq.U
yUxs acts, kv, sendData = API_GetAllLink()
qF3S\
C sendData["Act"] = acts[index]
:C;fEJN local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
(NUXK NPCProxy:ExecuteWithJsonData(sendData)
t>]W+Lx#
end
5 n 4/}s NH/jkt&F[ --按名称点击按
?bd!JW bg` function API_ClickLinkByName(linkName)
Mxz
X@GBX acts, kv, sendData = API_GetAllLink()
4oF,;o+v\4 sendData["Act"] = kv[linkName]
"Io-%Su+ local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
3Dc^lfn NPCProxy:ExecuteWithJsonData(sendData)
a?Om;-i2`S end
JK)|a@BtOT r;f
\^hVy --出售物品
J>dj]1I function API_Sell(npcName,itemsName)
bY`Chb. local npcId=API_GetNpcIdByName(npcName)
;\"Nekd| local bagData=ssr.getBagData()
@uC-dXA" for k,v in pairs(bagData) do
aJm5`az) if string.find(itemsName,v.Name) then
F4(;O7j9 --if #v["Values"]<2 then
a:|]F| local Name = v.Name
:8n?G local MakeIndex = v.MakeIndex
)FB<gCh7X local networkCtl = global.networkCtl
Q3lVx5G>4 networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
_)-2h[ --end
R7Tl1!,h end
XF{2'x_R end
:%Z)u:~': end
Ct/6< --全部卖
a
w~a/T: function API_SellAll(npcName)
;2 o{6 local npcId=API_GetNpcIdByName(npcName)
Qvny$sr2 local bagData=ssr.getBagData()
<\:*cET3 for k,v in pairs(bagData) do
fR.raI4et --if #v["Values"]<2 then
z=k*D^X local Name = v.Name
0T3r#zQ local MakeIndex = v.MakeIndex
qyyLU@hd local networkCtl = global.networkCtl
}J5iY0 networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
/x-tl)(s= --end
p38s&\-kEN end
HH
!SqkwT end
9LQy0Gx oi3Ix7 P)TeF1~
T --NPC购买
=L$RY2S" function API_Buy(npcName,itemName,count)
^(xVjsHp# --进入子菜单
yyR@kOGga local sendData =
AO$aW yI {
VyU!r*
o UserID = API_GetNpcIdByName(npcName),
nkk GJV! Name = itemName,
t
ORDtMM9+ }
bVRxGn @l SendTableToServer(1015, sendData)
,v| vgt local function ToBuy()
/C<} :R local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
a(o[ bH.|; local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
# 9f
4{=\ for i=1,count do
cNN_KA if i>#list then
9DX
u*} break
,Ur~DXY end
}=3W(1cu- sendData.MakeIndex= list[#list-i].MakeIndex
'\m\$
{ SendTableToServer(1014, sendData)
GLl@
6S>v end
7f=9(Zj API_CloseNpcTalk()
_ )^n[_E end
/=OSGIJzm local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
Q~*3Z4)j end
9]8M {L N~arxe(K I^A01\p function 打开子项(item)
S67T:ARS local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
a-TsD}'X if item.SubMenu == 1 then
cmh/a~vYaY NPCProxy:RequestNpcStoreItemList(item)
I|[a
a$G end
sEfGf. end
gk6j5 $Y"< CtDS lJ function 子项购买(count)
Vo2frWF$ local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
UE\@7 for i = 1, count do
J2#=`|t" if i > #list then break end
B<'V7#L_ NPCProxy:RequestNpcStoreBuy(list
) RZE:WE;5 end [dL?N end 1[`l`Truz b_Ky@kp --登录角色 s?K4::@Fv oB Bdk@ function API_LoginRole(index)
?Ve5}N local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
S+OI?QS LoginProxy:SetSelectedRoleByIndex(index) J>Rt2K LoginProxy:RequestEnterGame() =Jl1D*B* global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) .'AHIR&> end u&I~%s 7!N5uR --登录 uJp}9B60_ function API_Login(name, password) `TsfscN local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) M!6bf local data = {} z8"=W,2 data.type = 1 !xqG-rd
' data.username = name ow`c B data.password = password B&Ci*#e AuthProxy:RequestLogin(data) #WpO9[b> end Z*e7W O. 1@qb.9wZ6 --开门 !%M-w0vC9 function API_EnterRoom(x, y) 1aMBCh<}JN local qq = ssr.GetCurMapData()
3x9C] global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) r@<; local function callback() +#H8d1^5 ssr.AutoMoveBegin(x, y, qq.mapID) izWl5}+'B end o_*|`E SL:ScheduleOnce(callback, 0.5) WE~3(rs#X# end qP<,"9!I \
T]"pE+8l --多开 x}>tX function API_PcOpen() R+JI?/H LuaBridgeCtl:Inst():CheckClientCount(2) 17Gdu[E end S@"=,Xj M et ~gO!1:* --盒子显示 +m7x>ie) function API_hezi() ".i{WyTt global.L_GameEnvManager._envData["isBoxLogin"] = 1 =L
wX+c end # nYGKZ /eMZTh*1P --遍历背包物品 =nL*/ function API_GetCurBagData() @Q1j
H~t local s1 = ssr.getCurBagData() A07P$3>/W local result = "" h'fD3Gr& for k, v in pairs(s1) do &s;%(c04A local s1 = string.format( mVL,J=2 "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" E;d 5$ , v["OverLap"] tx1jBh:e= , v["DuraMax"] X5/{Mx`8Oz , v["Where"] `U1%d7[vY , v["Dura"] -5 W0 K} , v["Name"] <d5vVn , v["Shape"] (Mm{"J3uv , v["MakeIndex"] *nW9)T , v["Weight"] cnPXvD^kY , v["StdMode"] lM
1!2d'P , v["Index"]) !^fJAtCN] local ss = "" ?-84_i if #v["Values"] > 1 then ipp_?5TL for x, y in pairs(v["Values"]) do hCvn(f if y["Value"] > 0 then W=\dsdnu* local Values = string.format("m_Value=%s,m_ValueID=%s" *f#4S_ws` , y["Value"] q
|^O , y["Id"]) 4vQHr!$Ep ss = ss .. Values Fi/G, [q end CzEn_ZMb end t3>rf3v end jgo@~,5R result = result .. s1 .. "," .. ss .. "\r\n" S7q&|nI end #Fd([Zx#. return result bg*{1^
end bgK(l d` QPcB_wUqu --获取背包是否满 kZ.3\ function API_GetBagFull() 66 Xt=US return ssr.IsBagToFull(isTips) |YFD| end G!;[If:<e QMxz@HGa| --获取背包百分比 ~+C#c,Nw function API_GetBagEx() C|zH {.H HW = ssr.GetMetaValueByKey("BW") ?BZ][~n-Q MAXHW = ssr.GetMetaValueByKey("MAXBW") G0Eq}MyF ELL = HW / MAXHW * 100 Yc V~S#b return math.ceil(ELL) /_a *C.a6 end Aii[=x8 Xh/av[Q --获取背包是否满 ~=mM/@
HD function API_GetBagFull() ui{_w @o return ssr.IsBagToFull(isTips) ">9CN$]J end *n'xS L NGY I%: --读取地图ID v+sbRuo8 function API_GetMapID() T!a[@,)_
local tt = ssr.GetCurMapData() pzr-}>xrZ return tt.mapID %S#"pKE6R end \veL 5 8 vw]u_e --读取地图名称 !v L:P2 function API_GetMapName() W8NA.
local tt = ssr.GetCurMapData() ^e,RM_. return tt.mapName yMkd|1 end R4(8]oUW -*M:OF"Zh --获取背包最大数 [AzN&yACE function API_GetMaxBag() +3>4 ?,^g return ssr.GetMaxBag() 8!SiTOzR? end >[@d&28b% j2Y(Q/i --使用物品 ?$c function API_UseItem(itemName) #+PbcL local items = ssr.getQuickUseData() i|^6s87"N2 local item = ssr.getCurBagData() *~uuCLv_ for k, v in pairs(items) do ZRm\d3x4 if v.Name == itemName then bVHi3=0{ ssr.UseItemByIndex(v.Index) u
Cfp+ end sK?
-@ end 8Q -F \Agg6tYr for k, v in pairs(item) do <pU
ou if v.Name == itemName then c7IR06E ssr.UseItemByIndex(v.Index) .A/H+.H; end Rk[ * p end 9Ol_z\5 end l5ds`uR# [9_ (+E[} --获取金币数量 NF!1) function API_GetMoney(Index) r![JPhei return ssr.GetMoneyCountById(Index) oLMi vy4 end & }}WP:U :Qo function API_MergeTables(t1, t2) Y`?X Fy: local merged = {} p'k
+0= for key, value in pairs(t1) do ~{G:,|` merged[key] = value F5MPy[ end z44~5J] for key, value in pairs(t2) do o~&!M_ED merged[key] = value E57{*C end #aX@mPm
return merged XSjelA? end CZRo{2!?U D#1~]d S5KYZ
W --获取物品数量 u/'sdt function API_GetItemCount(itemName,isBind) E}9ldM=]s local items=ssr.getQuickUseData() rI+w1';C1 local bagData=ssr.getBagData() D])YP0|} items=API_MergeTables(items,bagData) "|*Kf# local bind=isBind or false ld}$Tsy0 local count=0 {dXBXC/Ju for k,v in pairs(items) do mS}x2& if bind then ,GU/l)os` --绑定 Z[S+L"0 if v.Name==itemName and v.Bind~=nil then ~!9Px j* count=count+ v.OverLap yGG
B end :qTcxzV else S!W/K!wf
--不绑定 ;OU>AnWr(& if v.Name==itemName and v.Bind==nil then UH-uU~ count=count+ v.OverLap s[@>uP end +JS/Z5dl+} end >TnQ4^;v. end |;m`874 return count lV6[d8P end fR%1FXpK& --读取人物坐标 .]s(c!{y RL
OQ>vYY -Dxhq&
}Y #x@lZ! Y function API_GetMapXY() {V%O4/ local aa = ssr.GetMainPlayerMapPos() S/<"RfVU#o local aa = string.format("x=%s,y=%s" hdJwNmEA> , aa.x ,]_(-tyN| , aa.y) k5;Vl0Ho return aa q,+kPhHEgy end i6#]$ B zZ"U9!T -- 获取角色是否活着 ~uR6z//% function API_IsRoleAlive() <-B"|u return ssr.IsRoleAlive() 'Rd*X6dv end _<RR` _s^:zPl --读取聊天信息 {hRie+ function API_ChatMsg() 3u0<v%Qi local function listcb(msg) ,,gLrVk --table N46$EsO!h ChatTable = msg k7|z$=zY end 66@3$P%1p ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) K}E7|gdG if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then W#jZRviyq! local ChatT = string.format( A:
bPIXb "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" EH*ym#Y , ChatTable.SendName -F+P;S , ChatTable.SendId wYO"znd , ChatTable.ChannelId O< tnM<"( , ChatTable.mt }i7U}T , ChatTable.SendTime k)usUP' , ChatTable.Msg) koEX4q return ChatT JV]u(PL end
gr`Ar; end [}ZPg3Y j H.Ju|nO function API_ChatMaa() Wd`
QpW return ssr.GetMaxBag() rH&r6Xv[ end %:w% o$ yvooM'R --修理装备 '*N9"C function API_CopyTable(original) k/_8!^:' local copy = {} FL#g9U> for key, value in pairs(original) do (ND5CKCR^ if type(value) == "table" then S`@6c$y k copy[key] = API_CopyTable(value) H8-D'q>R else ke9QT#~p!- copy[key] = value ;j>Vt?:Pw end _m7U-;G end o d}E
M_ return copy 33<fN:J]f end e@:P2(WWl 修衣服 = "0,4" --衣服,头盔 -<51CD w, 修武器 = "1" oa &z/`@ 修项链 = "3" ^\[LrPqe 修手镯 = "5,6" }xf='lE 修戒指 = "7,8" --左戒指 右戒指 EN-H4F function API_Repair(npcName, itemPos) ?#* local npcId = API_GetNpcIdByName(npcName) {;iHYr-zs local tempData = ssr.getEquipData() lQdnL.w$.4 local tobeRepair = {} :Dk@?o@2;C for k, v in pairs(tempData) do Y0PGT5].@' if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then 9jMC|oE local tmp = { C](z#c~c Name = v.Name, LGo2^Xx MakeIndex = v.MakeIndex, t$H':l0 Where = v.Where jKj=#O } sArje(5Eo table.insert(tobeRepair, tmp) ;;YcuzQI3 ssr.TakeOffEquipRequest(v) %|*nmIPq( end ?{"XrQw end U
EEBWz H --脱完 开始修理 xz"Z3B for k, v in pairs(tobeRepair) do XJmFJafQD local Name = v.Name lHcZi local MakeIndex = v.MakeIndex #5y9L local networkCtl = global.networkCtl "B9[cDM& networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) [Y22Wi end Jm %ynW --开始穿 %Ui{=920 local function ToDress() \m=-8KpU for k, v in pairs(tobeRepair) do 8
_4l"v
p ssr.TakeOnEquipRequest(v, v["Where"]) oI_oz0nHk end >,>;)B@J end a
IpPL8a local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) 9U|<q API_CloseNpcTalk() }{&ln end >P\h,1 f`hyYp`d5 \-Iny=$ Q(IJD4 药店={0} )@Zc?Da 首饰店={19,20,21,22,23,24,26} =de<WoKnu2 衣服店={10,11,15,16,27,28,62,64} 8ji^d1
G, 武器店={5,6} t{R5
E U 杂货店={3,25,2,30,31} (ve+,H6w\ 铁匠铺={43} k-WHHoU>o 书店={4} 6_R\l@a --检测背包是否有指定类型物品 cW)Oi^q%o2 function API_IsNeedToStore(StdModes) h_&4p=SQ local function IsNeed(StdMode) ptV4s=G2 local bagData=ssr.getBagData() L289'Gzg for k,v in pairs(bagData) do 1z~k1usRK if v.StdMode==StdMode then &GdL 9!hH return true G&x'=dJ end Y&vHOA end mb0n}I_AC local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) 0).fBBNG local equip = EquipProxy:GetEquipData() X0y?<G1(a for k,v in pairs(equip) do JsmbW|t^ if v.StdMode==StdMode then /x if tonumber(v.Dura)/v.DuraMax < 0.9 then 87^:<\pp return true R9tckRG# end O9t=lrYV! end SkiJpMN end r=fE8[, return false ta&Q4v&- end N9i}p^F<_ CN.6E<9'kK for k,v in pairs(StdModes) do l^k+E-w\ if IsNeed(v) then wVgi+P return true
?. zu2 end aGPqh,<QD end
uu}a:qrY return false YF}9k end b/}'Vf[ <9ma(PFa Ln
~4mN^ --范围内怪物个数 bool型返回distance N0=-7wMk(Z function API_范围内怪物个数(distance, count) EfKM*;A local proxyUtils = requireProxy("proxyUtils") .Qd}.EG local mainPlayerID = global.gamePlayerController:GetMainPlayerID() R{*_1cyW return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) p QluGIX0V end OuB2 x=B --关闭NPC框 h ZoC _\ function API_CloseNpcTalk() (E!%v`_0 global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) /@&(P#h global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) r2RBrZ@1 end &&;ex9 --无怪随机 R=`U 4Ml; function API_无怪随机() \).Nag + local list = global.monsterManager.mMonstersInCurrViewField za,6du6 local actors = {} ;K3d' U for k, v in pairs(list) do <O ;&qT*b local actor = {} qh%i5Mu actor["mID"] = v:GetID() 1'Nh jL table.insert(actors, actor); y:Z$LmPc< end %VzYqj_P" if #actors < 1 then Q"A_bdg5 API_UseItem("随机传送石") Ay2b,q local aa = API_GetItemCount(1078) +Dv 7:x7 if aa < 1 then e\`wlaP, ssr.BuyStoreItemsById(2, 1) ('=Z}~ end X$/E>I end SijtTY#r return #actors 1{^CfamF end x'@W=P 7 xXO RIlD --API_周围怪物数量 ZQ|5W6c function API_周围怪物数量() 'r~8 local list = global.monsterManager.mMonstersInCurrViewField (FuEd11R local actors = {} W+KF2(lB for k, v in pairs(list) do Zw+=ng.q? local actor = {} M3ZOk<O<R actor["mID"] = v:GetID() >wA+[81[ table.insert(actors, actor); ^Sw2xT$p{j end '}_=kp'X return #actors _0K.Fk*(! end U<Vy>gIC ^[#=L4 --API_周围人物数量 参数是 白名单 fTBVvY4( function API_视野内敌人(Name, lv) bV_j`:MD local list = global.playerManager.mPlayersInCurrViewField W;qP=DK2 local myName = global.gamePlayerController:GetMainPlayer():GetName() 47KNT7C local actors = {} *m*`}9 local names = myName .. "," .. Name y>`5Kyj3-@ for k, v in pairs(list) do byafb+x local actor = {} G%;kGi`m actor["mID"] = v:GetID() :i.t)ES actor["mName"] = v:GetName()
m;c3Z- actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] VrVDm*AGQ --local myName=global.gamePlayerController:GetMainPlayer():GetName() w^ 3|(F if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then E
${J table.insert(actors, actor); n!ZMTcK8 end #00D?nC end ^;+[8:Kb return #actors 4h;4!I| end cM3jnim M_Bu,<q^ )AI?x@ --自动捡 opXDm\ API_NoBodyPickEnable=true [,rn3C A i0\)%H
:z --捡取物品白名单 })PO7: API_MyPlayerNames = "我不是药神,"
>zQOK- R
pYcD --全图捡 Hte[TRbM API_MapPickEnable = true m^Glc?g< --自动存 Pubv$u
2 API_InStoreEnable=false LX\)8~dp API_InStoreItems="" B X*69 --自动扔 P].eAAXnP API_ItemDropEnable=false Fwb5u!_, --自动用 yplG18 API_ItemKeepCountEnable=true p-xd k|'[ --自动领取 cAb>2]M5V API_GetMailItemEnable=false q4/909x= --自动买回城石 Jl
d\8= API_BuyStoneEnable=false 1DqX:WM6 API_RecoveryItemMaxMoney=1000000 o,1Dqg4P3 --地图 z3W3=@ API_PreMapName="盟重省" [X<Pk --开关 P3!Atnv2 API_TimerEnable=true @MOCug4 xz8G
}Ku API_TimerEnable1s=true Z5$fE7ba+ API_TimerEnable10s=true *}w+68eO --1S定时器 zW5C1:.3K function API_AutoSchedule1s() *GJ:+U&m[ if GET_GAME_STATE() == "world" and API_TimerEnable1s then e\D|
o?v --自己设置的自动捡 RJhK$\ --API_PickItems() Yh4e\]ql~N --系统自动捡 vK|dP3 if API_NoBodyPickEnable then L8!xn&uyP= if API_IsInCurrViewField(API_MyPlayerNames) then Wvcj\2'yd API_OpenGroupPick(false) Xmtq~}K> --release_print("来人,关自动捡") c/pT2/y --API_RunAway() --逃跑 lqu1H& --API_UseItem3Second("回城石") HmQuRW else w2Pkw'a{ API_OpenGroupPick(true) K^9!Qp API_PickItems() V
k[m$ --release_print("无人,开自动捡") :U?Kwv8 s end Pg5 1}{ end OrHnz981K end ! k&< end QarA.Ne~ --10s定时器 Al
0zL function API_AutoSchedule10s() P E.^!j if GET_GAME_STATE()=="world" and API_TimerEnable then .4U::j} --自动扔 qdzc"-gH` if API_ItemDropEnable then M7En%sBp API_DropItemKeep("回城卷",2) I,.>tC end xez~Yw2 J5IQ --自动组队 n;4`IK| if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then c^I_~OwaE API_InviteJoinTeam() 7Ij FSN
> API_TeamApplyUpdate() --允许所有邀请 wz;IKdk[ end MLaH("aen
eFbr1I
V --自动用消耗品 Da
aLRMQ= if API_ItemKeepCountEnable then ]Y:|%rvVH if API_GetItemCount("强效金创药") > 1 then Haiuf)a API_UseItem("强效金创药") GtbIw end s&z+j%;+o if API_GetItemCount("强效魔法药") > 1 then Q;SMwCB0M API_UseItem("强效魔法药") Q-(twh end "5]GEzM3O if API_GetItemCount("太阳水") > 1 then k_$w+Q API_UseItem("太阳水") 2,'m]`;GNr end r=<,`_@Y if API_GetItemCount("魔法药(中量)") > 7 then p)d'yj API_UseItem("魔法药(中量)") ]0g<][m end lY0^Z if API_GetItemCount("魔法药(中量)") < 1 then i9uJ%nd: API_UseItem("魔法药(中)包") |no '^ end G[)QGZ}8b if API_GetItemCount("金创药(中量)") > 1 then @ScH"I];uA API_UseItem("金创药(中量)") b?qtTce end
\,lgv if API_GetItemCount("护身符(大)") < 1 then r0}Z&>]66N API_UseItem("回城卷") %6HDLG6@^} end vY:A7yGW if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then !3}vl
Y1 API_UseItem("回城卷") MHk\y2`/; end X5'foFE' if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then V6Z2!Ht API_UseItem("回城卷") C%0 |o/Wi end (Z;-u+ }. end rl[&s\[ \A
Y7%>
if API_GetMailItemEnable then td&W>(3d global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) cYq<.A(hVj global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) Whod_Uk end 2t*@P"e
! end do C8! end Fz~-m# T
s -#|J --定时器 n;y<!L7 function API_TimerStart() S2h?Q$e3 --1S定时开关 aB+Ux<
- if API_AutoScheduleID1s == nil then -(ABQgSO] API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) +m]$P,yMt else ZFY t[: ssr.UnSchedule(API_AutoScheduleID1s) :dLfM)8} API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) *dL!)+:d end d7qHUx'=z --10S定时开关 X~G!{TT_x6 if API_AutoScheduleID10s == nil then FhHcS
>]:. API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) hj4Kv else /T!S)FD\/v ssr.UnSchedule(API_AutoScheduleID10s) |#Z
:v1]" API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) Ir }r98lz end
/MO|q end n
PD5/xW function API_IsInCurrViewField(names, level) {YT!vD9. local lv = level or 0 &ScADmZP^d local nameList = names or "" eI/9uR% local list = global.playerManager.mPlayersInCurrViewField JFIUD{>fp local actors = {} XL1v&'HLV for k, v in pairs(list) do swntz local actor = {} V \,Z ( actor["mID"] = v:GetID() |Qo
;=~7 actor["mName"] = v:GetName() HE,# pj(D actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] !g-|@W if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then pc
J5UJY table.insert(actors, actor); pZ}4'GnZI end RU|{'zC\v end PTXy:
>]M if #actors > 0 then BC =U6>`/ return true dd@qk`Zl&A else !U/iY%NE return false K1AI:$H end $
z)r(N$ end )4vZIU# |X,T>{V?y --打开组捡 s`B "qw function API_OpenGroupPick(isOpen) $*tq$DZ4& local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) %qfql local count = 0 "qYPi for key, value in pairs(GameSettingProxy._pickConfig) do l\vtz5L count = count + 1 !ZPaU11 end |[7xTD local function SetGroup(pickgroup) \cP\I5IW:s for i = 1, count do 8%nb1CA GameSettingProxy:SetPickGroupValue(i, pickgroup)
>jD,%yG end ] cdKd ) end uW3`gwwlU if isOpen then V\^3I7F local pickgroup = { 1, 1, 1 } WLma)L`L SetGroup(pickgroup) tIR"y:U+ else NpG5$? local pickgroup = { 1, 1, 0 } Iww.Nd2 SetGroup(pickgroup) wu"6Kyu end {+_pyL end "T|%F D&[ M.iR5Uh