游戏地址
cPNc$^Y www.fgcq996.com >20
dK 那年传奇百区1.76 J:glJ'4E -Z$u[L [c 找到 lua_State 然后调用下面的函数就能实现功能
6{HCF-cQd 一个跑单狗注意qq1946913194
ybE2N 游戏账号密码。fanren9527 qq2293307009 WEif&<Y T!KwRxJ23 搞完演示完,删除好友跑单 CCe>*tdf ">z3i`#C' --自动寻路Ex
ZDbe]9#Xh function API_AutoMoveEx(mapX, mapY)
@
|c]) ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
ChG7>4:\ local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
_7<{+Zzm local pathPoints = inputProxy:GetPathFindPoints()
o#,^7ln if pathPoints == nil then
SnmUh~`L~ return 0
8Ejb/W_ end
~r5S{& return #pathPoints
II}M|qHaK end
U
WvVYdy7 @e
GBF
Ns --自动寻路
,Q7;(&x~ function API_AutoMove(mapX, mapY)
#Ir?v ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
Dz6xx? local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
DI{*E local pathPoints = inputProxy:GetPathFindPoints()
9"]#.A^Q* if pathPoints == nil then
n@p@@ return 0
+)"Rv%. end
@|vH5P
i return #pathPoints
zZ8 *a\ end
qrlC
U4 , i5 _4 --停止寻路
+K`A2&F9 function API_AutoMoveEnd()
|50sGJE( global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
")STB8kQ end
u/u(Z& Nb`qM]& --自动打怪
ngl +`|u function API_AutoFight(isAFK)
`z0q:ME if isAFK then
Pa{ if not IsAFKState() then
Y-a global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
0>N6.itOz global.Facade:sendNotification(global.NoticeTable.AFKBegin)
y]fI7nu& end
>9dD7FH else
x~!|F5JbM if IsAFKState() then
Pp tuXq%U global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
KddCR& global.Facade:sendNotification(global.NoticeTable.AFKEnd)
KaNs>[a8 end
P8,Ps+ end
CC`_e^~y=F end
*b.
> BA]$Fi.Mw function IsAFKState()
I1U2wD local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
lFyDH{! return AutoProxy:IsAFKState()
i9DD)Y< end
\H@1VgmR;
-9i7Ja --打开自动穿戴
?!U[~Gq function API_AutoDress()
@5S' 5)4pB --不抢别人归属
tO3R&"{ global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
<]M.K3> global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
V^5d5Ao local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
K%? g6j ServerOptionsProxy._data["autoDress"] = 1
jRS{7rx%MH global.ConstantConfig.autousetimes = 0
p/HDG
^T:u end
2H)4}5H E>|X'I?r^ --强制打开自动挂机拾取
rQVX^ function API_AutoPick()
wgS,U}/i local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
Ww2@!ng local config = ItemConfigProxy.config
Q,&Li+u| for k, v in pairs(config) do
Z)#UCoK!c --local res = string.gsub(v.pickset, "0", "1")
gVOAB-nw v.pickset = v.pickset .. 1
1*TbgxS~W end
F+V!p4G end
r[a7">n .+/d08] --获取人物坐标
YOD.y!.zq7 function API_GetMapXY()
xf]K return ssr.GetMainPlayerMapPos()
Y"GNJtsL " end
F^75y? a4__1N^Qj --获取人物状态
rR> X< function API_GetAction()
'j6O2=1 local player = global.gamePlayerController:GetMainPlayer()
IT_I.5*A2 local list = global.playerManager.mPlayersInCurrViewField
2M-[x"\1/ return player:GetAction()
,KW
Q
6 end
lb-1z]YwQ @owneSD qN --设置宠物状态
-Lh7!d function API_PetSleep(isSleep)
"%gsGtS local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
vt|
R)[, if not SummonsProxy:IsAlived() then
l4oyF|oJTH return false
|1~n<=`Z end
M Irx,d if isSleep then
No'?8 +i SummonsProxy:RequestModeChange(2)
9Rnypzds else
=1l6(pJ SummonsProxy:RequestModeChange(4)
g"evnp end
$Iwvecn?I end
go uU JNfL
jfE)< --获取人物数据
MY^{[#Q function API_GetGamePlayer()
`r`8N6NQ&] local player = global.gamePlayerController:GetMainPlayer()
(90/,@66l local list = global.playerManager.mPlayersInCurrViewField
/*mF:40M; local person = {}
4N,mcV person["等级"] = player:GetLevel()
(jM0YtrD person["职业"] = player:GetJobID()
MEiP&=gX! person["名字"] = player:GetName()
O,Q.- person["金币"] = ssr.GetMoneyCountById(1)
$
v|
W2k person["元宝"] = ssr.GetMoneyCountById(2)
::|~tLFu person["绑金"] = ssr.GetMoneyCountById(3)
mH'~pR>t return person
5`QcPDp{z end
hJ@vlMW 'u7-Qetj function API_GetGamePlayerLevel()
U#` e~d t< local player = global.gamePlayerController:GetMainPlayer()
j~Aq-8R= return player:GetLevel()
YX0ysE*V:& end
ai{>rO3 }I f2i:I1 p(" --获取周围怪物
{ qNPhi function API_GetMonster()
t~) P1Lof\ local list = global.monsterManager.mMonstersInCurrViewField
A9$x8x*Lt local actors = {}
<xOX+D for k, v in pairs(list) do
Yq+1kA local actor = {}
kJWg},-\ actor["mID"] = v:GetID()
E7:xPNU actor["mName"] = v:GetName()
!@ ^6/= actor["mRace"] = v:GetRace()
iVXt@[ actor["mType"] = v:GetType()
Q.g/ actor["mSubType"] = v:GetSubType()
^`&'u_B!+ actor["mX"] = v:GetMapX()
7
zb^Z] actor["mY"] = v:GetMapY()
;A*SuFbV actor["mAction"] = v:GetAction()
'a['lF actor["mTypeIndex"] = v:GetTypeIndex()
8D='N`cN+ actor["mAnimationID"] = v:GetAnimationID()
/T w{JO#Q actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
ANM#Kx+ actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
)/T[Cnx.Nc actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
HZyA\FS actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
6>a6;[ actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
*GT=U(d actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
9P?0D actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
VfX^iG r actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
->sxz/L actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
b(Nv`'O actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
EhcJE;S) actor["mColor"] = "0xFFFFFF"
4l$OO;B if v:GetType() == global.MMO.ACTOR_PLAYER then
jf~](TK local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
i+Z)` local label_name = global.MMO.HUD_LABEL_NAME
9L=mS local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
[n2B6Px if hudName then
m8q4t,<J actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
gq7tSkH@ end
+[7~:e}DZ end
\Z[1m[{ table.insert(actors, actor);
c|&3e84U end
~KBa-i%o T6U/}&{O return actors
m ptFd end
i9; B/twak\ --遍历周围玩家
&9L4
t%As function API_GetPlayer()
5R7x%3@L local list = global.playerManager.mPlayersInCurrViewField
KGz Nj% local actors = {}
2Y
vr|] \8 for k, v in pairs(list) do
V(MYReaPC] local actor = {}
=&}@GsXdo actor["mID"] = v:GetID()
)^>LnQ_u actor["mName"] = v:GetName()
:<QknU}dwy actor["mRace"] = v:GetRace()
".?4`@7F\ actor["mType"] = v:GetType()
3g
A %Q`" actor["mSubType"] = v:GetSubType()
aZOn01v;!& actor["mX"] = v:GetMapX()
0a~t actor["mY"] = v:GetMapY()
_f1o!4ocx actor["mAction"] = v:GetAction()
(2g
a:}K actor["mTypeIndex"] = v:GetTypeIndex()
)4yP(6|lx actor["mAnimationID"] = v:GetAnimationID()
M3(N!xT actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
R'>!1\?Iq actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
C8U3+ s actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
FlqGexY5 actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
<J/ =$u/ actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
k9Pvh,_wp actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
*WwM"NFHDd actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
3Z!%td5n actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
6 d-\+t8 actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
ov6xa*'a actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
*_(X$qfoW actor["mColor"] = "0xFFFFFF"
|7qt/z if v:GetType() == global.MMO.ACTOR_PLAYER then
x/*lNG/ local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
oz)[- local label_name = global.MMO.HUD_LABEL_NAME
E9:@H;Gc local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
;J%:DD if hudName then
o`bch?] actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
$R9D
L^iD end
)GD7rsC`< end
qE[S>/R" table.insert(actors, actor);
u,^CFws_ end
Vao:9~ return actors
!nv wRQ end
W__ArV2Z_ (Ou%0
KW --遍历周围玩家EX
\TQZZ_Z function API_GetPlayerExe()
8Q'Emw
| local s1 = API_GetPlayer()
lSxb:$g local result = ""
Rs %`6et}\ for k, v in pairs(s1) do
1[FN: hm local s2 = string.format(
v=U<exM6% "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
02;jeZ#z , v["mID"]
w0Qtr>" , v["mName"]
]PXM;w , v["mRace"]
~iL^KeAp
, v["Dura"]
e;]tO-Nu , v["mType"]
kK6OZhLH , v["mSubType"]
g`XngRb|j , v["mX"]
'p@f5[t , v["mY"]
hZ&KE78? , v["mAction"]
@@65t'3S , v["mTypeIndex"]
I2Xd"RHN , v["mAnimationID"])
d:=' Xs local s3 = ""
%yR XOt2( 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"
8q2a8I9g , v["mLv"]
++cS^ Lo , v["mJobID"]
n;g'?z=hy , v["mHP"]
lx)^wAO4 , v["mHPMax"]
d$t"Vp
, v["mMP"]
BoD{fg , v["mMPMax"]
UP~28%>X , v["mOwnerID"]
70'OS:J=\ , v["mOwnerName"]
p.DQ|
? , v["mGuildName"]
*uvM6F$ut , v["mColor"])
PL/g| ; result = result .. s2 .. s3 .. "\r\n"
V6]6KP#D end
p~D}Iyww1_ return result
Jw)JV~/0 end
,06Sm]4L, J'44j;5& --遍历周围指定NPC
3I6ocj[, function API_GetNpcIdByName(npcName)
$7x2TiAL local npcVec = global.npcManager:FindNpcInCurrViewField()
o! a,r3 local npc = {}
Cf%
qap# for k, v in pairs(npcVec) do
l_I)d7 local npcs = {}
S
'a- E![ npc[v["mID"]] = v["mName"]
&K ~k'P~m end
:eN&wQ5q for key, value in pairs(npc) do
_$~>O7 local sPos, ePos = string.find(value, npcName)
BWt`l,nF if sPos then
).~
" return key
VkQ@c;C end
(3Db}Hnn end
_imuyt".+ return nil
I^NDJdxd end
5'2kP{;
1`cH
E Aa --NPC名称打开NPC
`TrWtSwv function API_NpcTalk(npcName)
)6"}M;v local npcid = API_GetNpcIdByName(npcName)
`#""JTA" local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
1IXtu NPCProxy:RequestTalk(npcid)
bo0
U end
TnrBHaxbo4 N} EKV --NPCID打开NPC
W06aj ~7Z function API_NpcTalkEx(npcid)
"{q#)N local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
u]p21)m$x NPCProxy:RequestTalk(npcid)
-3K h
>b) end
@]3\*&R} K<S3gb?0 function API_GetNpcTalkData()
`7"="T~ * local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
"Q?+T:D8| local talkData = NPCProxy:GetCurrentNPCTalkData()
lC<;Q*Y return talkData
a4Q@sn;] end
DiJLWXs /%@;t@BK4 function API_GetAllLink()
Z#[?~P local talkData = API_GetNpcTalkData()
6v`3/o 5EYGA\ local acts = {}
4
cjfn'x local kv = {}
%rwvY`\ {j2V k)\[i for line in talkData.content:gmatch("(text=.->)") do
L\Se , if string.find(line, "@") then
<WXVUEea local key = line:match("text=(.-)|")
XKp&GE@Y MAh1tYs4D local value = line:match("(@.-)>")
m2]N%Y kv[key] = value
dN8Mfa) end
_w^,j" end
HuhQ|~C+~ 3j7FG%\ for result in talkData.content:gmatch("(@.-)>") do
> 0^<<=m table.insert(acts, result)
\xYVnjG, end
hD6BP local sendData = {
>|f"EK}m! UserID = talkData.npcID,
vsGKCrLwh index = talkData.index,
0eY!Z._^ --Act = "@blbumj",
[F-R*}&x --commonInput = jsonData.commonInput,
J1w;m/o
V --inputID= jsonData.inputID,
w~Tg?RH: }
sJ6.3=
c return acts, kv, sendData
d$!Q6ux; end
t G_4>-Y#w WzIUHNn'I --按索引号点击按
Xu$>$D#a function API_ClickLinkByIndex(index)
{
I#>6 acts, kv, sendData = API_GetAllLink()
yRXML\Ge sendData["Act"] = acts[index + 2]
zPt<b!q local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
kR =sr/{ NPCProxy:ExecuteWithJsonData(sendData)
$n<a`PdH end
0|&@)` W+h2 rv --按索购买引号点击按
Ho &Q}<( function API_ClickBuyLinkByIndex(index)
*EWWN?d acts, kv, sendData = API_GetAllLink()
O8]e(i sendData["Act"] = acts[index]
rA~f68h| local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
M @5&. NPCProxy:ExecuteWithJsonData(sendData)
3H2~?CaJ end
0jTReY-W .}IW!$
dq --按名称点击按
j|!,^._i function API_ClickLinkByName(linkName)
oe<i\uX8z acts, kv, sendData = API_GetAllLink()
;;0'BdsL` sendData["Act"] = kv[linkName]
=j.TDv'^nd local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
Af3|l NPCProxy:ExecuteWithJsonData(sendData)
e]4$H.dP
end
AtQ.H-8r B+W7zv --出售物品
v[dUUR f function API_Sell(npcName,itemsName)
+_GS@)L`% local npcId=API_GetNpcIdByName(npcName)
2B_|"J local bagData=ssr.getBagData()
5(>=};r+ for k,v in pairs(bagData) do
)/RG-L if string.find(itemsName,v.Name) then
b\P:a_vq --if #v["Values"]<2 then
us.#|~i<h
local Name = v.Name
=%<=Bn local MakeIndex = v.MakeIndex
:[0 R F^2} local networkCtl = global.networkCtl
7^dr[.Q[* networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
CsZ~LQ=DB --end
sN41Bz$q. end
&8$v~ end
z; GQnAG@ end
\<{a=@_k9 --全部卖
.psb#4 function API_SellAll(npcName)
2KLMFI.F local npcId=API_GetNpcIdByName(npcName)
$1yy;IyR local bagData=ssr.getBagData()
{JE [ for k,v in pairs(bagData) do
)vW'g3u _ --if #v["Values"]<2 then
nPyn~3 local Name = v.Name
Oeh A3$|# local MakeIndex = v.MakeIndex
V}y]< local networkCtl = global.networkCtl
BH:A]#_{ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
)eZK/>L& --end
56;u7 end
"&6vFm r end
J!:BCjRdw sq|\!T lV\iYX2# --NPC购买
M7=,J;@ function API_Buy(npcName,itemName,count)
9nFL70 --进入子菜单
s~M$Wo8 local sendData =
x^ `/&+m {
ng}C$d . I UserID = API_GetNpcIdByName(npcName),
1T
!o`* Name = itemName,
pGs?Y81
}
]8A*uyi SendTableToServer(1015, sendData)
[qc1
V%g local function ToBuy()
|
0 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
jQ{ @ol}n local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
g89@>?Mn for i=1,count do
Xm#W}Y' if i>#list then
w6BBu0,KC break
Rqe.=+Qs end
g5y+F]'I sendData.MakeIndex= list[#list-i].MakeIndex
&5W;E+Pub SendTableToServer(1014, sendData)
^4`aONydl end
#W~jQ5NS\ API_CloseNpcTalk()
r=Xo; d*TE end
D ,kxB~ local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
)7 57 end
n0KpKH<& qPDNDkjDD T5:Q_o] function 打开子项(item)
P@v"aa\@2) local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
p/Pus;*s if item.SubMenu == 1 then
6 f*:; NPCProxy:RequestNpcStoreItemList(item)
yCQvo(V[F end
<^YvgQ,m end
UT;%I_i!' QuR}6C function 子项购买(count)
}#ink4dK: local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
NBk0P*SI for i = 1, count do
WARiw[
if i > #list then break end
s#^0[ Rt NPCProxy:RequestNpcStoreBuy(list
) a>47k{RSzE end !)bZ.1o end 7O55mc>cF ?lC>E[ --登录角色 )LGVR3# d6n_Hpxw^ function API_LoginRole(index) \5a.JfF local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) "rBB&l LoginProxy:SetSelectedRoleByIndex(index) =Kj{wA
O LoginProxy:RequestEnterGame() _r:Fmn_%- global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) JwI99I' end )+N{D=YM v0C+DKi --登录 \,13mB6 function API_Login(name, password) pS$9mzY local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) z"f@iJX?2 local data = {} wUaWF$~y data.type = 1 "z9C@T data.username = name [/a
AH<9b data.password = password Sr
\y1nt AuthProxy:RequestLogin(data) }H
~-oYMu end qA>#;UTp OlT8pG5Oa --开门 (\ab%M function API_EnterRoom(x, y) d*8*9CpO: local qq = ssr.GetCurMapData() ny
KfM5s_ global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) }u;K<<h: local function callback() m!ZY]:)$ ssr.AutoMoveBegin(x, y, qq.mapID) 9J/[7TzSZ end g+B7~Z5, SL:ScheduleOnce(callback, 0.5) _y4O2n[e end SJ]6_4=y* t=B1yvE" --多开 I8XP`Ccq function API_PcOpen() k2
Ju*W& LuaBridgeCtl:Inst():CheckClientCount(2) `,}7LfY end C>|.0:[% t+v%%N_ --盒子显示 o< @![P
function API_hezi() ~cc }yDe global.L_GameEnvManager._envData["isBoxLogin"] = 1 G2|jS@L# end S%- kN; _:[@zxT<x --遍历背包物品 kWW2N0~$ function API_GetCurBagData() SZH`-xb!+5 local s1 = ssr.getCurBagData() YrnC'o` local result = "" V/#Ra for k, v in pairs(s1) do u\ _yjv# local s1 = string.format( dFBFXy "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" P2vG)u , v["OverLap"] 7<su8*? , v["DuraMax"] p3vf7 eqn , v["Where"] 1^|#QMT , v["Dura"] ^]sb=Amw , v["Name"] 0si1:+t-[+ , v["Shape"] Mp/l*"( , v["MakeIndex"] 254V)(t^QM , v["Weight"] >@7$=Y>D , v["StdMode"] Q/g!h}>(. , v["Index"]) *Z#OfB4} local ss = "" Qyw@ r if #v["Values"] > 1 then j!agD_J for x, y in pairs(v["Values"]) do !=eNr<:V. if y["Value"] > 0 then [gT}<W local Values = string.format("m_Value=%s,m_ValueID=%s" <|l}@\iRX , y["Value"] u\Cf@}5( , y["Id"]) KO" /
ss = ss .. Values z%
bH?1^o end vCP[7KhGj end X\`']\l end (iq>]-=< result = result .. s1 .. "," .. ss .. "\r\n" pa46,q&M end P4@`C{F5m return result a,Pw2Gcid end TVNgj.`+u! ;qaPK2a8 --获取背包是否满 lU doMm function API_GetBagFull() PIU@}:} return ssr.IsBagToFull(isTips) t+a.,$U end eN<L)a:J_ + ,Krq 3P --获取背包百分比 6FzB-], function API_GetBagEx() 0h A: =r HW = ssr.GetMetaValueByKey("BW") =.z;:0]'n MAXHW = ssr.GetMetaValueByKey("MAXBW") -)(5^OQ ELL = HW / MAXHW * 100 l7g'z'G return math.ceil(ELL) Bf*>q*%B{ end G%sq;XT61 Nf([JP% 4 --获取背包是否满 d3:GmB . function API_GetBagFull() !'H$08Ql} return ssr.IsBagToFull(isTips) JaUzu3*= end l_
}d Q&R i2Wvu3,D3- --读取地图ID b*Y Wd3 function API_GetMapID() 9^F3r]bH local tt = ssr.GetCurMapData() QdgJNT<=H, return tt.mapID $w*L'
< end !64Tx Dnd; N/9 --读取地图名称 Tc(=J7*r& function API_GetMapName() e@vtJaSu local tt = ssr.GetCurMapData() (T*$4KGV return tt.mapName (6$P/k8 end s)- ;74( Y'iI_cg --获取背包最大数 kB
Z1)? function API_GetMaxBag() E[t0b5h return ssr.GetMaxBag() 2
`>a( end ~5+RK16 @$jV"Y --使用物品 l$&~(YE f function API_UseItem(itemName) y.A3hV%6b local items = ssr.getQuickUseData() lQ?jdi local item = ssr.getCurBagData() v82wnP-~7 for k, v in pairs(items) do ;p+'?%Y} if v.Name == itemName then bg Ux
&3 ssr.UseItemByIndex(v.Index) ZGZNZ}~# end U5kKT.M end Rq}lW.<r -Fd&rq:GB( for k, v in pairs(item) do \'Ae,q|w if v.Name == itemName then k7iko{5D ssr.UseItemByIndex(v.Index) y nmjIQ
end > T* `Y0P end 'yPKQ/y$x end 9
" q-Bb A
SHU0v --获取金币数量 I4"p]>Y" function API_GetMoney(Index) Y5tyFi#w[ return ssr.GetMoneyCountById(Index) iv >MIdIm end 3A`Gx# fz^j3'!\ function API_MergeTables(t1, t2) ^m%#1Zd local merged = {} }T4|Kyu? for key, value in pairs(t1) do /:F^*] merged[key] = value
] :;x,$k end *#YZm>h for key, value in pairs(t2) do Z jmQ merged[key] = value ?C[?dg{n end w*6b%h%ww return merged O?X[&t
end YJv$,Z&;HO uj6'T Sl &1Ndi<Y^ --获取物品数量 ]^C 8Oh< function API_GetItemCount(itemName,isBind) ]i#p2?BR local items=ssr.getQuickUseData()
;v.[aq local bagData=ssr.getBagData() Gt.'_hf Js items=API_MergeTables(items,bagData) U|3!ixk>>w local bind=isBind or false j"nOxs local count=0 pbAL& } for k,v in pairs(items) do j4owo#OB- if bind then nmU1xv_ --绑定 g$s;;V/8e if v.Name==itemName and v.Bind~=nil then -~{Z*1`, count=count+ v.OverLap E@ :9|5 end 5z_d$.CIc else dO82T3T --不绑定 ^+76^*0 if v.Name==itemName and v.Bind==nil then ?z1v_Jh count=count+ v.OverLap ) bFl- end rk8pL
[| end LH4A!a] end Dylm=ZZa return count 9;#RzelSp end #`u}#( --读取人物坐标 w&?XsO@0W $!_
X9)e /i"hViCrlG +b-ON@9]J` function API_GetMapXY() AfA"QCyO local aa = ssr.GetMainPlayerMapPos() Lyhuyb)k5^ local aa = string.format("x=%s,y=%s" R->x_9y-R , aa.x V#oz~GMB , aa.y) 'V7LL1K^> return aa -US:a8` end |H
t5a. 6axxyh% -- 获取角色是否活着 /u$'=!<b; function API_IsRoleAlive() >T[/V3Z~K return ssr.IsRoleAlive() Y$L`
G end
ARu_S
B zhw*
Bed< --读取聊天信息 }i!+d,|f function API_ChatMsg() R@K\ local function listcb(msg) 6o^>q&e}% --table *|=D 0 ChatTable = msg eJo" Z end !Axe}RD' ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) 8QTry% if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then ,LA'^I? local ChatT = string.format( ipn-HUrE@ "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" aLh(8 ;$ , ChatTable.SendName y5sH7`2+5 , ChatTable.SendId U"7o;q , ChatTable.ChannelId <'4Wne.z! , ChatTable.mt FFqK tj's , ChatTable.SendTime *5PQ>d
G , ChatTable.Msg) ya&=UoI return ChatT } [#8>T end WPRk>j end ]pvHsiI: q8$t4_pF function API_ChatMaa() Leb
Kzqe return ssr.GetMaxBag() ]Uw
p\2Bc end %<>:$4U@] iW6O9~ --修理装备 B!Wp=9)G function API_CopyTable(original) >.qFhO\1so local copy = {} ;$iT]S for key, value in pairs(original) do *W8n8qG%T if type(value) == "table" then QDn_`c copy[key] = API_CopyTable(value) Ln#o:" E else E,m|E]WP copy[key] = value 50MM05aC end @m5J%8>k
end aLg,-@ return copy 6>)fNCe` end sa+
JN^[X 修衣服 = "0,4" --衣服,头盔
aA4RC0' 修武器 = "1" :=B.)]F.) 修项链 = "3" ^(TCUY~f& 修手镯 = "5,6" STwGp<8 修戒指 = "7,8" --左戒指 右戒指 zn>lF
function API_Repair(npcName, itemPos) )(]rUJ~+~A local npcId = API_GetNpcIdByName(npcName) k)3N0]q6 local tempData = ssr.getEquipData() qefp3&ls local tobeRepair = {} c
\??kQH for k, v in pairs(tempData) do ~3bV~H#~m if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then 0G8@UJv6 local tmp = { ]ePg6 Name = v.Name,
b*Qd9 MakeIndex = v.MakeIndex, qR.FjQOvn Where = v.Where ^P9mJ: } V<9L-7X 8 table.insert(tobeRepair, tmp) dLYM )-H`> ssr.TakeOffEquipRequest(v) ~S('\h)1 end h^(U:M=A end ?>+uO0*S --脱完 开始修理 W%+02_/) for k, v in pairs(tobeRepair) do 7;p/S#P: local Name = v.Name J~KO#` local MakeIndex = v.MakeIndex 'yCVB&`b local networkCtl = global.networkCtl &Z~_BT networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) 9C \}bT end vT#R>0@mi --开始穿 o*204BGB local function ToDress() }`L;.9 for k, v in pairs(tobeRepair) do Tp-W/YC ssr.TakeOnEquipRequest(v, v["Where"]) jP<6J( end Lz1KDXr`)+ end "=Z=SJ1D local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) diNSF-wi,, API_CloseNpcTalk() z/91v#}. end Ct `)R #v(As)4^ e r_6PV h.?<(I 药店={0} Ei:m@}g 首饰店={19,20,21,22,23,24,26} K-]) RIM 衣服店={10,11,15,16,27,28,62,64} cy@oAoBq 武器店={5,6} `pfgx^qG 杂货店={3,25,2,30,31} ( 72%au 铁匠铺={43} Dl.<(/ 书店={4} Ly(iq --检测背包是否有指定类型物品 3DO*kM1s@ function API_IsNeedToStore(StdModes) oPs asa local function IsNeed(StdMode) }uMu8)Q local bagData=ssr.getBagData() ulALGzPh for k,v in pairs(bagData) do }N9PV/a if v.StdMode==StdMode then eY`z\I return true +On2R&m end s[7$%|~W end 06HU6d, local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) }*J04o$oI local equip = EquipProxy:GetEquipData() M+")*Opq for k,v in pairs(equip) do @8 c@H#H if v.StdMode==StdMode then y3(~8n if tonumber(v.Dura)/v.DuraMax < 0.9 then "d-vs t5 return true |34k;l]E end
)Jvo%Y end !QdX+y<re end JVg}XwR return false 8cfsl lI end ]foS.D, )r"R for k,v in pairs(StdModes) do . ?#Q(eLj if IsNeed(v) then jA^yUd- return true yx#!2Z0hw end CHS}tCfos> end yUcU-pQ return false q>%.zc[x end LntRLB' al Rz@N &u9,|n]O9 --范围内怪物个数 bool型返回distance L"0dB. function API_范围内怪物个数(distance, count) KYkS^v local proxyUtils = requireProxy("proxyUtils") A]iT
uu5 p local mainPlayerID = global.gamePlayerController:GetMainPlayerID() nEUH; z return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) ,^C
G\); end a:P+HU: --关闭NPC框 dgQ<>+9]6 function API_CloseNpcTalk() @[FO;4w global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) 9k93:#{WE global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) !|9@f$Jv end X%I@4 B7Ts --无怪随机 R{H8@JLD function API_无怪随机() IRLAsb3 local list = global.monsterManager.mMonstersInCurrViewField w:I!{iX local actors = {} @=g{4(zR^ for k, v in pairs(list) do y+^KVEw
local actor = {} YO.ddy*59 actor["mID"] = v:GetID() 7&etnQJ{ table.insert(actors, actor); Rex86!TO end fvta< if #actors < 1 then , MqoX-+ API_UseItem("随机传送石") F'wG% local aa = API_GetItemCount(1078) 86KK Y2 if aa < 1 then v#9
i| ssr.BuyStoreItemsById(2, 1) "&qAV'U end >8>s
K(S] end T
g(\7Kq return #actors L end dM}c-=w` ,W'P8C --API_周围怪物数量 pQZ`dS\ function API_周围怪物数量() ENA"T-p local list = global.monsterManager.mMonstersInCurrViewField I<W<;A local actors = {} iqoMQ7% for k, v in pairs(list) do K
d#(eGe local actor = {} Z1$S(p=)L actor["mID"] = v:GetID() 2ETv H~23 table.insert(actors, actor); '4GN%xi end >BJBM | return #actors 'o=DGm2H end /V/)A\g |U'` Sc --API_周围人物数量 参数是 白名单 kxrYA|x function API_视野内敌人(Name, lv)
^0{t local list = global.playerManager.mPlayersInCurrViewField +i /4G.=* local myName = global.gamePlayerController:GetMainPlayer():GetName() >}Mw"
local actors = {} Nj?Q{ztS local names = myName .. "," .. Name C!K&d,M for k, v in pairs(list) do s{c|J#s local actor = {} $? Z}hU actor["mID"] = v:GetID() +u |SX/C actor["mName"] = v:GetName() m+dQBsz\ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] \ %xku: --local myName=global.gamePlayerController:GetMainPlayer():GetName() a_VWgPVdDS if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then @G>eCj table.insert(actors, actor); "J&WH~8+N end rw
2i_,.*~ end $qpW?<>,0 return #actors !mVq+_7] end iu 0'[ W3('1 giIPK& --自动捡 L;Y
n q<x API_NoBodyPickEnable=true J}-e9vK-# wU/fGg*M2 --捡取物品白名单 Z" l].\=
F API_MyPlayerNames = "我不是药神," 4j,6t|T FBrh!vQ< --全图捡 ^\S~rW.3_ API_MapPickEnable = true ~4#D
G^5 --自动存 U0W2 API_InStoreEnable=false 6c>:h)? API_InStoreItems="" L*
rCUv ` --自动扔 [Tvdchl OC API_ItemDropEnable=false =~
,2E;#X --自动用 G `e
U API_ItemKeepCountEnable=true Rw63{b/ --自动领取 zDm3$P= API_GetMailItemEnable=false }YiFiGf, --自动买回城石 #l* w=D? API_BuyStoneEnable=false )2^r
0(x API_RecoveryItemMaxMoney=1000000 mU[ --地图 `PLax@]2 API_PreMapName="盟重省" L[5U(`q[ --开关 J
}bLp
Z API_TimerEnable=true 2/F8kVx{ (B*,|D[J@i API_TimerEnable1s=true ;i [;% API_TimerEnable10s=true `Um-Y'KE --1S定时器 rNm_w>bq function API_AutoSchedule1s() ;S&anC#E if GET_GAME_STATE() == "world" and API_TimerEnable1s then V<}chLd, --自己设置的自动捡 ww+,G
nV --API_PickItems() /nh3/[u --系统自动捡 1;,<UHF8N if API_NoBodyPickEnable then oBnes* if API_IsInCurrViewField(API_MyPlayerNames) then
1=X1<@* API_OpenGroupPick(false) *6}'bdQbNP --release_print("来人,关自动捡") 4UPxV"H --API_RunAway() --逃跑 ;eW)&qzK --API_UseItem3Second("回城石") 7 > _vH] else _$vbb#QXZG API_OpenGroupPick(true) t3v_
o4`& API_PickItems() X-CoC
--release_print("无人,开自动捡") xMpgXB!' end k5}Qx'/l end 9B>P Qbs end +'w6=qI end 150x$~{/ --10s定时器 (6
RWI# function API_AutoSchedule10s() )RWY("SUy1 if GET_GAME_STATE()=="world" and API_TimerEnable then %5n'+- XVj --自动扔 e?o/H if API_ItemDropEnable then
w%oa={x API_DropItemKeep("回城卷",2) W%MS,zkAE end SY}"4=M?l LOwd mj --自动组队 $&jVEMia if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then
b`GKGqb J API_InviteJoinTeam() pz{ ]O_px API_TeamApplyUpdate() --允许所有邀请 (BK_A{5 end `4Fw,:+e Hh&qjf --自动用消耗品 _$ 8:\[J if API_ItemKeepCountEnable then #7YJ87<E if API_GetItemCount("强效金创药") > 1 then 4T~wnTH0Xg API_UseItem("强效金创药") |WT]s B0Eq end Uu Zjf9} if API_GetItemCount("强效魔法药") > 1 then !@arPN$ API_UseItem("强效魔法药") : S-{a end oykb8~u}} if API_GetItemCount("太阳水") > 1 then F0kAQgUv API_UseItem("太阳水") 4)XB3$< end SC3_S. if API_GetItemCount("魔法药(中量)") > 7 then s._,IW;
API_UseItem("魔法药(中量)") j(>xP*il end * vqUOh if API_GetItemCount("魔法药(中量)") < 1 then Vhe$vH API_UseItem("魔法药(中)包") ,sg\K>H= end rzvKvGd#N if API_GetItemCount("金创药(中量)") > 1 then ]{t!J^Xn API_UseItem("金创药(中量)") L)9Z Op5 end *
]D{[hV if API_GetItemCount("护身符(大)") < 1 then 4l>d^L API_UseItem("回城卷") iMV=R2t 2 end ZC^NhgX if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then 5Z:qU{[ API_UseItem("回城卷") 7^d7:1M end N>)Db if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then NE Zu?g API_UseItem("回城卷") ?jvuTS 2 end ,.|/B^jV end {lppv(U {#pwr WG if API_GetMailItemEnable then Uaj_,qb( global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) Jm 0.\[J global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) ^HE@ [b end Czy}~;_Ay end E},zB*5TH end hL}ZPHA ;Z`R
! --定时器 H%}/O;C function API_TimerStart() _S-@|9\ --1S定时开关 /?S^#q>m% if API_AutoScheduleID1s == nil then ao|n<*} API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) =u.23#. else "];@N!dA ssr.UnSchedule(API_AutoScheduleID1s) 8 0o'=E}" API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) rP!GS
_RG end )$d~
HA@B --10S定时开关 Krl9O]H/[ if API_AutoScheduleID10s == nil then L
gy^^. API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) 3kwkU else (I+e@UUiL ssr.UnSchedule(API_AutoScheduleID10s) AYp~;@ API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) eYu 0") end T)ISDK4>S" end ov
i^bNQ function API_IsInCurrViewField(names, level) YJ~mcaw local lv = level or 0 Z
B!~@Vf local nameList = names or "" @Q;s[Kg{! local list = global.playerManager.mPlayersInCurrViewField /f AAQ7 local actors = {} _]eyt_ for k, v in pairs(list) do jmP;(j.| local actor = {} }O| 9Qb actor["mID"] = v:GetID() C\dk}A actor["mName"] = v:GetName() mGk
Qx
-| actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] (<e<Q~( if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then {9^p3Q+:P table.insert(actors, actor); ,^DP end P^<to(| end -YrMV
oZl if #actors > 0 then cF?0=un return true ?a1pO#{Dg else ' d?6 L return false {.y_{yWo end +!$`0v end roBb8M|q ,]Xn9W --打开组捡 Bx5kqHp^1 function API_OpenGroupPick(isOpen) 8yH)9#>
local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) }Fox local count = 0 !?+q7U for key, value in pairs(GameSettingProxy._pickConfig) do L1y71+iqU count = count + 1 T4[/_;1g end !aL=R)G&e local function SetGroup(pickgroup) _c5*9')-) for i = 1, count do "7jE&I GameSettingProxy:SetPickGroupValue(i, pickgroup) O}}rosA end /?Mr2!3N end sNP
; if isOpen then $TK= :8HY local pickgroup = { 1, 1, 1 } ooC9a>X SetGroup(pickgroup) f/iM
I)J else tE-g]y3 local pickgroup = { 1, 1, 0 } T
Z!@IBu SetGroup(pickgroup) N0JdU4' end eg1F[~YL/ end es=OWJt^ .*.eY?,V