游戏地址
S=[K/Kf- www.fgcq996.com ` ]WU=Ss 那年传奇百区1.76 wias
]u| *|$s0ga C 找到 lua_State 然后调用下面的函数就能实现功能
F#4?@W 一个跑单狗注意qq1946913194
?Pl>sCFm~ 游戏账号密码。fanren9527 qq2293307009 RNoS7[&
,k{{ZP
P 搞完演示完,删除好友跑单 2K,
1wqf' UN|"D]>/ --自动寻路Ex
H|F>BjXn5 function API_AutoMoveEx(mapX, mapY)
jY>KF'y ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
#zrD i local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
C_O7 local pathPoints = inputProxy:GetPathFindPoints()
-K
}@Gp if pathPoints == nil then
,0<|&D return 0
@z
dm
B~C end
$+JaEF`8 return #pathPoints
zfi{SO
l end
U@D=.6\B w
\0=L=J --自动寻路
XpOs
nvW function API_AutoMove(mapX, mapY)
lDp5aT;DsM ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
Fxv~;o# local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
,2H5CFX/ local pathPoints = inputProxy:GetPathFindPoints()
kf>'AbN if pathPoints == nil then
4x8mJ4[H^ return 0
PhKJ#DRbr end
D6bCC;
h= return #pathPoints
bL
*; N3#E end
s26s:A3rh ,PRM(n - --停止寻路
'.WYs! function API_AutoMoveEnd()
M%&`&{ global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
P;hjr;
end
3zWY%(8t4? K+T`'J4 --自动打怪
O|7q,bEm^ function API_AutoFight(isAFK)
]N1$ioC# if isAFK then
x"AYt:ewuc if not IsAFKState() then
Fhxg^ global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
S)g5Tu) global.Facade:sendNotification(global.NoticeTable.AFKBegin)
\jq1F9, end
.h~)|"uzW else
%<1fj#X8 if IsAFKState() then
]3
0
7. global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
sS5#Q global.Facade:sendNotification(global.NoticeTable.AFKEnd)
+ 6r@HK`,t end
$Ae/NwIlc end
Gjy'30IF end
pPQ]#v cty~dzX^ function IsAFKState()
5Odi\SJ& local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
oH6(Lq'q return AutoProxy:IsAFKState()
E6)FYz7x end
3w{i5gGn .fo.mC@a --打开自动穿戴
j?w7X?1( function API_AutoDress()
`mCcD --不抢别人归属
'kW`62AX global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
WHE*NWz>q global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
?A62VV51CN local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
Htsa<tF ServerOptionsProxy._data["autoDress"] = 1
L>@0Nne7 global.ConstantConfig.autousetimes = 0
*%Gy-5hM end
/"iYEr%_ H7qda'%> --强制打开自动挂机拾取
ynP^|Ou function API_AutoPick()
V7rcnk# local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
=N7N=xY local config = ItemConfigProxy.config
f+<-Jc for k, v in pairs(config) do
+#&2*nY --local res = string.gsub(v.pickset, "0", "1")
^o?.Rph|i] v.pickset = v.pickset .. 1
8{?Oi'-|0 end
?1PY]KNaK end
NSHlo*)} i7 p#%2 --获取人物坐标
zac>tXU; function API_GetMapXY()
5r
zB"L return ssr.GetMainPlayerMapPos()
X/gh>MJJ< end
[&+wW )%ja6Vg --获取人物状态
qY14LdC}~ function API_GetAction()
zT_{M
qY local player = global.gamePlayerController:GetMainPlayer()
ZV;#ZXch local list = global.playerManager.mPlayersInCurrViewField
7;|6g8= return player:GetAction()
n4Q!lJ end
>b{%j8uM Ap}:^k5{ --设置宠物状态
[]LNNO],X function API_PetSleep(isSleep)
? `FI!3j local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
(x.K%
QC) if not SummonsProxy:IsAlived() then
PjsQ+5[> return false
:
O//A6v end
p(0!TC
Bs if isSleep then
(''`Ce SummonsProxy:RequestModeChange(2)
3QV|@5L`[ else
3)Paf`mr SummonsProxy:RequestModeChange(4)
TC R( end
:kFWUs= end
,qvz:a gvy%`SSW --获取人物数据
I9>1WT<Yy function API_GetGamePlayer()
d>vGx local player = global.gamePlayerController:GetMainPlayer()
l'3NiIX local list = global.playerManager.mPlayersInCurrViewField
R_@yj]%H= local person = {}
^vG*8,^S=8 person["等级"] = player:GetLevel()
[ HNGTde& person["职业"] = player:GetJobID()
R
)?8A\<E person["名字"] = player:GetName()
5,?9#n\E, person["金币"] = ssr.GetMoneyCountById(1)
.4-; person["元宝"] = ssr.GetMoneyCountById(2)
7~ |o_T person["绑金"] = ssr.GetMoneyCountById(3)
N@j|I* y| return person
d(v )SS end
%X[|7D- )C|>M'g@v function API_GetGamePlayerLevel()
)}u.b-Nt. local player = global.gamePlayerController:GetMainPlayer()
ND21; return player:GetLevel()
W*U\79H end
`86 9XE =euoSH
D} --获取周围怪物
?"sk"{ function API_GetMonster()
CiPD+I local list = global.monsterManager.mMonstersInCurrViewField
c>DAR local actors = {}
Xv:<sX for k, v in pairs(list) do
vZXyc* local actor = {}
VnIJ$5Y actor["mID"] = v:GetID()
q~l&EH0 actor["mName"] = v:GetName()
"2=v?,'t actor["mRace"] = v:GetRace()
_/MKU!\l actor["mType"] = v:GetType()
'iL['4~. actor["mSubType"] = v:GetSubType()
<[a9"G7 actor["mX"] = v:GetMapX()
>Y{.)QS actor["mY"] = v:GetMapY()
iY*Xm,# actor["mAction"] = v:GetAction()
:_H$*Q=1 actor["mTypeIndex"] = v:GetTypeIndex()
Z,u:g c+* actor["mAnimationID"] = v:GetAnimationID()
"&C'K actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
{kZhje^$vi actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
=VY[m-q5 actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
6Ajiz_~U actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
u4.-AY { actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
%C)U
F actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
KgKV(q= actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
pu `|HaQaE actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
O[`n{Vl/ actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
M%B]f2C actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
/{qr~7k,oQ actor["mColor"] = "0xFFFFFF"
{}lw%d?A if v:GetType() == global.MMO.ACTOR_PLAYER then
jRq>Sz{8 local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
"=/XIM. local label_name = global.MMO.HUD_LABEL_NAME
7i/?+| local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
V?5_J% if hudName then
\=83#*KK actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
=2`s Uw} end
0 ]NsT0M end
Ye1P5+W( table.insert(actors, actor);
[_H9l)
end
M(/%w"R Jnv91*>h8 return actors
!-\*rdE{9 end
.GS|H d Vw)
\#6FL --遍历周围玩家
e@X~F6nP function API_GetPlayer()
P7@qvg local list = global.playerManager.mPlayersInCurrViewField
E[_Z%zd^ local actors = {}
OjZ+gl} for k, v in pairs(list) do
qe\j$Cjy local actor = {}
9`c :sop actor["mID"] = v:GetID()
LW,!B.`@ actor["mName"] = v:GetName()
v3@)q0@ actor["mRace"] = v:GetRace()
>#>YoA@S actor["mType"] = v:GetType()
[ ra[~ actor["mSubType"] = v:GetSubType()
Iem* 'r actor["mX"] = v:GetMapX()
J.O;c5wL actor["mY"] = v:GetMapY()
7dU X(D,? actor["mAction"] = v:GetAction()
5Z;Py"% actor["mTypeIndex"] = v:GetTypeIndex()
];Z_S`JR actor["mAnimationID"] = v:GetAnimationID()
N8mK^{ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
(cA=~Bw[= actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
w@oq.K actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
;l?>+m@H actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
Gzm[4|nO^ actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
v8wN2[fC actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
[!aHP?- actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
e=_*\`/CN actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
o.j;dsZ actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
ZY][LU~l8 actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
iOD9lR`s actor["mColor"] = "0xFFFFFF"
wePMBL1P* if v:GetType() == global.MMO.ACTOR_PLAYER then
w|$;$a7) local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
+ ^~n09 local label_name = global.MMO.HUD_LABEL_NAME
/?by4v73P local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
1 bv L if hudName then
{O!fV<Vx 9 actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
Cf%)W:Q9 end
oXz:zoNQ end
sQt@B#; table.insert(actors, actor);
~[,E
i k end
~%sDQt\S return actors
Ob(j_{m end
8(S'g+p
-pLb%f0? --遍历周围玩家EX
XvdK; function API_GetPlayerExe()
\W$>EH local s1 = API_GetPlayer()
%7L'2/Y2x local result = ""
(+Er for k, v in pairs(s1) do
@o>2:D1G local s2 = string.format(
5a_K|(~3I "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
U>:p`@ , v["mID"]
<Ojf&C^Z , v["mName"]
VoP(!.Ua>7 , v["mRace"]
i44KTC"sB , v["Dura"]
_s=[z$EN& , v["mType"]
0 J ANj , v["mSubType"]
h3JIiwv0! , v["mX"]
`Y+p7*Qr2 , v["mY"]
4$y|z{[<
5 , v["mAction"]
UkeW2l`: , v["mTypeIndex"]
>Axe7<l , v["mAnimationID"])
8BWLi5R[ local s3 = ""
f#5mX&j 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"
7AtJ6 , v["mLv"]
AoTL)', , v["mJobID"]
/S|Pq!4< , v["mHP"]
1_<'S34 , v["mHPMax"]
{zg}KiNDZd , v["mMP"]
a0.)zgWr , v["mMPMax"]
h{>8W0W* , v["mOwnerID"]
!m^WtF , v["mOwnerName"]
N!btj,vx , v["mGuildName"]
3
vE;s"/ , v["mColor"])
uT;9xV%ch result = result .. s2 .. s3 .. "\r\n"
YJr@4!j* end
,9q5jOnk return result
k deJB- end
!5p01]7 4?d2#Xhs8 --遍历周围指定NPC
k.0$~juu function API_GetNpcIdByName(npcName)
|n* I}w^ local npcVec = global.npcManager:FindNpcInCurrViewField()
==|//:: \ local npc = {}
4J_18.JHP for k, v in pairs(npcVec) do
t1Cyyb local npcs = {}
hX[hR npc[v["mID"]] = v["mName"]
:a`l_RMU end
b/2t@VlL for key, value in pairs(npc) do
6IeHZ)jGj local sPos, ePos = string.find(value, npcName)
~sk 4v:- if sPos then
];(w8l return key
[j:%O|h end
c)lM
i}/ end
]Ub?Wo7F? return nil
w'cZ\<N[ end
QDSB
<0j =1LrU$\ --NPC名称打开NPC
;2&(]1X function API_NpcTalk(npcName)
3D%I=p
( local npcid = API_GetNpcIdByName(npcName)
Z=wLNm H local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
6B|IbQ^ NPCProxy:RequestTalk(npcid)
wn|Sdp end
Q2iu}~ XB^z' P{-Y --NPCID打开NPC
`_z8DA}E function API_NpcTalkEx(npcid)
j63w(Jv/ local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
h5B'w NPCProxy:RequestTalk(npcid)
~0ZP%1.B3 end
c 8E& T;.#=h function API_GetNpcTalkData()
4.R
>mN[ local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
8G
s{Zfp!D local talkData = NPCProxy:GetCurrentNPCTalkData()
wVw3YIN# return talkData
v')T^b
F@ end
Ue~M.LZb 7FfzMs[\e function API_GetAllLink()
]LNP"vi; local talkData = API_GetNpcTalkData()
z)Bc91A G9^!=
v@ local acts = {}
Qs</.PO local kv = {}
C3WqUf<8`{ 8+
Hho@= for line in talkData.content:gmatch("(text=.->)") do
ar>S_VW* if string.find(line, "@") then
kM@8RAxA local key = line:match("text=(.-)|")
2sWM(S
N o^5xCK:Oi2 local value = line:match("(@.-)>")
S,qsCn
z kv[key] = value
C\
9eR end
3kQky end
|P~TZ aq[kKS` for result in talkData.content:gmatch("(@.-)>") do
}0c'hWMZ} table.insert(acts, result)
c1!h;(& end
FRX'"gIR0 local sendData = {
eV}Ow`~I5 UserID = talkData.npcID,
={8ClUV# index = talkData.index,
N(&,+KJ) --Act = "@blbumj",
W
aks*^| --commonInput = jsonData.commonInput,
r!j_KiUy --inputID= jsonData.inputID,
E}4R[6YD }
o3j4XrK return acts, kv, sendData
-:>Mi5/ s end
q[7C,o>/ w_4`Wsn --按索引号点击按
IQY\L@" function API_ClickLinkByIndex(index)
$Jx]
FZDQ acts, kv, sendData = API_GetAllLink()
aElEV
e3 sendData["Act"] = acts[index + 2]
iv:[]o
local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
mI?AI7DqK NPCProxy:ExecuteWithJsonData(sendData)
ZSh
RE"` end
YzsHec @
L?7`VoE --按索购买引号点击按
\JN?3}_J function API_ClickBuyLinkByIndex(index)
l}K{=%U>7 acts, kv, sendData = API_GetAllLink()
,Cde5A{K sendData["Act"] = acts[index]
VbJGyjx local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
I}$Y[Jve NPCProxy:ExecuteWithJsonData(sendData)
B0nkHm.Sj end
8T7[/"hi\ MhWmY[ --按名称点击按
D+#QQ
H function API_ClickLinkByName(linkName)
S'vrO}yU acts, kv, sendData = API_GetAllLink()
lP\7=9rh^x sendData["Act"] = kv[linkName]
d#Ql>Pr
Y local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
l>H#\MR
NPCProxy:ExecuteWithJsonData(sendData)
bp;b;f> end
PzNk: O l]^uVOX --出售物品
mGwBbY+5n function API_Sell(npcName,itemsName)
-05#/-Z= local npcId=API_GetNpcIdByName(npcName)
>>F E?@ local bagData=ssr.getBagData()
Gpo(Zf?
for k,v in pairs(bagData) do
fPa FL}& if string.find(itemsName,v.Name) then
Wyw/imr --if #v["Values"]<2 then
~Wf&$p<| local Name = v.Name
sHmzwvpLA local MakeIndex = v.MakeIndex
wHAoO#`wn5 local networkCtl = global.networkCtl
kk
)9!7 networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
F@)wi0 --end
~UEft end
?%{v1( end
&0+;E-_ end
k7'B5zVd --全部卖
2LEf"FH0~ function API_SellAll(npcName)
MG<F.u local npcId=API_GetNpcIdByName(npcName)
%9uLxC; local bagData=ssr.getBagData()
o.*8$$ for k,v in pairs(bagData) do
rAM{<
--if #v["Values"]<2 then
Nu<M~/ local Name = v.Name
r`HtN{
6r local MakeIndex = v.MakeIndex
$0+AR) local networkCtl = global.networkCtl
\l"1Io= networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
6;"jq92in* --end
)zf
&`T end
3g0
[(; end
`og 3P:y CcG{+-=H) v&(PM{3o --NPC购买
,n-M!y function API_Buy(npcName,itemName,count)
:Fm;0R@/k --进入子菜单
D/5 ah_; local sendData =
tF+m/}PM^ {
+pkX$yz UserID = API_GetNpcIdByName(npcName),
4'RyD<K\ Name = itemName,
PB(mUD2"r }
wG ua"@IE SendTableToServer(1015, sendData)
xi
%u)p local function ToBuy()
8rx?mX,} local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
"6[fqW65 local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
eR$qw#%c* for i=1,count do
Z
Ql
ja if i>#list then
rB}Iwp8 break
s9>-Q"(y end
/2Y t\=S= sendData.MakeIndex= list[#list-i].MakeIndex
:&S6AP SendTableToServer(1014, sendData)
h;u8{t" end
{r yv7G API_CloseNpcTalk()
J-P>
~
L" end
F\^9=}b_i local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
{U=Mfo?AH end
D
C{l.a. ^7G@CBic" jgQn^ function 打开子项(item)
z'z_6]5 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
BGh1hyJ8d if item.SubMenu == 1 then
\7n ;c NPCProxy:RequestNpcStoreItemList(item)
[AstD9 end
|:7O end
IlJ!jq p2cwW/^V function 子项购买(count)
r#M0X^4A local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
:D|"hJ for i = 1, count do
k)U9%Pr
if i > #list then break end
wJ,l"bnq NPCProxy:RequestNpcStoreBuy(list
) Zi<Y?Vm/,O end zy^t95/m end ue"?n2 V+G.
TI
P --登录角色 cv})^E$x ]q~_ function API_LoginRole(index) ?Imq4I~) local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) v0+mh] LoginProxy:SetSelectedRoleByIndex(index) ;~CAHn|Fe LoginProxy:RequestEnterGame() Lq:
!?)I global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) 5 Sm9m*/ end GTgG0Ifeh OHTJQ5%zL --登录 &Azfpv function API_Login(name, password) >c
%*:a local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) >1q
W* local data = {} wK>a&`< data.type = 1 0eP7efy data.username = name E}LYO: data.password = password =BW;n]ls AuthProxy:RequestLogin(data) u*u3<YQ end }TfZ7~o[
`=TV4h4 --开门 YGFE(t;lPU function API_EnterRoom(x, y) v/gxQy+l local qq = ssr.GetCurMapData() hA 1_zKZ global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) !:"$1kh1(" local function callback() ;:nx6wi ssr.AutoMoveBegin(x, y, qq.mapID) "V|&s/9 end onqfmQ,3E SL:ScheduleOnce(callback, 0.5) .{r 0Szm. end }^3CG9% ^k{b8-)W< --多开 c"F3[mrff function API_PcOpen() YytO*^e}} LuaBridgeCtl:Inst():CheckClientCount(2) 4k%y*L end
jMFLd CNU,\>J@$ --盒子显示 nbd-f6F6 function API_hezi() Ilf;Q(*$>> global.L_GameEnvManager._envData["isBoxLogin"] = 1 -|_#6-9 end
g}\G@7Q B'[FnJ8~ --遍历背包物品 9vX~gh{]~ function API_GetCurBagData() 9=RfGx local s1 = ssr.getCurBagData() Q1hHK'3w local result = "" iR(=<> for k, v in pairs(s1) do rx[l7F
q local s1 = string.format( [9N>*dKB "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" T'C^,,if , v["OverLap"]
J[ 0o6 , v["DuraMax"] r2!\Ts 5v , v["Where"] )c432).Z , v["Dura"] B L^?1x , v["Name"] ZDn5d% , v["Shape"] _TLB1T^/4 , v["MakeIndex"] $>if@}u , v["Weight"] VDy2!0 , v["StdMode"] *n]f) Jc , v["Index"]) )DG>omCY local ss = "" q
)N]*~ if #v["Values"] > 1 then ^UJB%l for x, y in pairs(v["Values"]) do ~F; ~ if y["Value"] > 0 then ZhvZe/ local Values = string.format("m_Value=%s,m_ValueID=%s" 5ub|r0&M , y["Value"] o,(]w kF , y["Id"]) V7~tIhuJH ss = ss .. Values yzI`&?
P2 end kz30! L end ' v)@K0P end D_s0)|j$cy result = result .. s1 .. "," .. ss .. "\r\n" >G#SfE$0 end b9Fd}WZz return result {~*^jS']5 end ;zF3e&e( JJE?!Yvc --获取背包是否满 tRC*@>I$ function API_GetBagFull() ]:"<if gp$ return ssr.IsBagToFull(isTips) Q3h_4{w end l4O&*,}l## ^mp#7OL --获取背包百分比 rm}%C(C{J function API_GetBagEx() T5<851rH HW = ssr.GetMetaValueByKey("BW") ,y>Sq
+ MAXHW = ssr.GetMetaValueByKey("MAXBW") Z.QgL= ELL = HW / MAXHW * 100 -/w#f&Y+]8 return math.ceil(ELL) _dQg5CmlG end "O (N=|b \5
S^~(iL --获取背包是否满 t@"i/@8x$ function API_GetBagFull() ^osXM` return ssr.IsBagToFull(isTips) ./l^Iz&0 end AX{X:L8Ut2 GBg~NkC7. --读取地图ID ?:woUTyCv function API_GetMapID() mG\$W#+j local tt = ssr.GetCurMapData() u2 a#qU5* return tt.mapID `W=3_ end Ez)hArxns Bz+zEXBC --读取地图名称 }w_r(g?\ function API_GetMapName() dilom#2l local tt = ssr.GetCurMapData() _-+xzdGvX return tt.mapName +`RQ^9 end on^m2pQ
*p Q# Yba --获取背包最大数 * a ?qV function API_GetMaxBag() <6rc8jYz return ssr.GetMaxBag() ' pN[H\Ia end Tf*DFyr .91@T. --使用物品 /XVjcD66c function API_UseItem(itemName) y3+iADo.p local items = ssr.getQuickUseData() w,)O*1't local item = ssr.getCurBagData() ye^*Z>| for k, v in pairs(items) do d!P3<:+R[ if v.Name == itemName then tEam6xNf, ssr.UseItemByIndex(v.Index) gJFx#s0?6. end P Y&(ObC end kfW"vI+d V zTHW5B for k, v in pairs(item) do ]I
^b&N if v.Name == itemName then c>b!{e@* ssr.UseItemByIndex(v.Index) ,
RKl end ,
'Sj:l end G2y`yg end A||,|He~ ud
grZ/w] --获取金币数量 a\l?7Jr function API_GetMoney(Index) rgw@ return ssr.GetMoneyCountById(Index) @{q:179w^ end ,L&d\M"f o|cx? function API_MergeTables(t1, t2) DQI
b57j local merged = {} Da3Z>/S for key, value in pairs(t1) do "p@EY|Zv%I merged[key] = value eHl)/=' end A)%!9i) for key, value in pairs(t2) do |MMaaW^" merged[key] = value uvMcB9 end kMx^L;:n return merged %o
end :9~LYJ
? F%ffnEJg ;.U<Lr^9# --获取物品数量 MHqk-4Mz function API_GetItemCount(itemName,isBind) qokCVI-\ local items=ssr.getQuickUseData() |>
zYUT[V local bagData=ssr.getBagData() /6{P
?)]pE items=API_MergeTables(items,bagData) $n=w local bind=isBind or false <ebC]2j8cK local count=0 +4g H=6 for k,v in pairs(items) do 'ju'O#A9 if bind then fNk0&M --绑定 RRUv_sff if v.Name==itemName and v.Bind~=nil then "&%Lhyt count=count+ v.OverLap ~?JNI8 end 1:;S6{oQ else &V(;zy4(R --不绑定 ua!43Bp if v.Name==itemName and v.Bind==nil then -{z<+(K!$ count=count+ v.OverLap =&t]R?
F end >&YUV.mLY end Ay@/{RZz end x8!uI)#tS return count 6an= C_Mb` end po@Agyg5 --读取人物坐标 eq(1'?7]`G hw({>cH\ 3}2;*:p4Y Y[0mTL4IO function API_GetMapXY() 0.kC| local aa = ssr.GetMainPlayerMapPos() Vji:,k=3\ local aa = string.format("x=%s,y=%s" yu}yON , aa.x b5)a
6qtb , aa.y) *cP(3n3]R return aa ?mHu eX end WX*
uhR ]@!3os,CNF -- 获取角色是否活着 5)C`W]JE function API_IsRoleAlive() 8?hZ5QvA(j return ssr.IsRoleAlive() 0at['zw end \Mzr[dI _BoYyJQH --读取聊天信息
i ?%_Pu function API_ChatMsg() *?pnTQs^ local function listcb(msg) cD t|v~ --table N
u3B02D* ChatTable = msg M#k$[w}= end ;}H*|"z;! ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) VG_xNM if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then 1i&|}" local ChatT = string.format( b}&.IJ&40j "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" 22/"0=2g , ChatTable.SendName 3 MCV?"0 , ChatTable.SendId 2f6BZ8H+Z , ChatTable.ChannelId w7c0j
If{ , ChatTable.mt i9Eh1A3Y , ChatTable.SendTime ! u@JH` , ChatTable.Msg) cB)tfS4) return ChatT ^^g u end udS&$/&GH end t?H
sfN d;nk>6<| function API_ChatMaa() jx}
7/ return ssr.GetMaxBag() _*cKu>,O end %~:@}C%A \D1@UyE --修理装备 nRyx2\Py+ function API_CopyTable(original) @~}~;}0x local copy = {} LrT?
]o for key, value in pairs(original) do 'Ck:=V%}g if type(value) == "table" then r4ljA@L copy[key] = API_CopyTable(value)
9g|99Z else <'4 8mip copy[key] = value "xNP"S end XQ2YUe]DJ end X]D:vuB return copy xiV!\Z} end :`>tCYy; 修衣服 = "0,4" --衣服,头盔 d@tf+_Ih 修武器 = "1" r$<M*z5q(\ 修项链 = "3" qDcoccE
f 修手镯 = "5,6" 9
e|[9 修戒指 = "7,8" --左戒指 右戒指 +R7pdi function API_Repair(npcName, itemPos) -q(*)N5.2 local npcId = API_GetNpcIdByName(npcName) _4T7Vg'' local tempData = ssr.getEquipData() T7-yZSw-m local tobeRepair = {}
#ro$$I; for k, v in pairs(tempData) do \;iOQqv0& if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then <rvM)EJv| local tmp = { S|T_<FCY Name = v.Name, "<Yxt
"Z4 MakeIndex = v.MakeIndex, r?w>x` Where = v.Where }=B~n0 } * \B(- table.insert(tobeRepair, tmp) f\r"7j ssr.TakeOffEquipRequest(v) mM~&mAa+Z end ; K,5qs end A
H=%6oT2 --脱完 开始修理 S;
u.Ds& for k, v in pairs(tobeRepair) do B)/c]"@89 local Name = v.Name 7H|0. local MakeIndex = v.MakeIndex G`/4n@ local networkCtl = global.networkCtl ^y%8_r& networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name))
{?q`9[Z end =nO:R, U
--开始穿 s IBP$9 local function ToDress() a^\F9^j for k, v in pairs(tobeRepair) do pNZ3vTs6 ssr.TakeOnEquipRequest(v, v["Where"]) !/ dH"h end ?* r end s];0-65) local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) >DbG
)0| API_CloseNpcTalk() JG&E"j#q end C1(RgY| %Pl |3 i \}%_FnP0ZU (/Jy9=~ 药店={0} &y7
=tEV 首饰店={19,20,21,22,23,24,26} 4F6I7lu 衣服店={10,11,15,16,27,28,62,64} 9G"4w` P 武器店={5,6} 9UV}`UM3V 杂货店={3,25,2,30,31} w`r%_o-I 铁匠铺={43} $=#Lf[|f= 书店={4} }'86hnW --检测背包是否有指定类型物品 *3OlWnZ? function API_IsNeedToStore(StdModes) vl6|i)D local function IsNeed(StdMode)
j=G local bagData=ssr.getBagData() f3^qO
9R for k,v in pairs(bagData) do j^v<rCzc( if v.StdMode==StdMode then $FD
GHFM return true `:R9M+
OX end pAqPHD= end 3 ]@wa!` local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) DZLEx{cm local equip = EquipProxy:GetEquipData() ,aq>9\pi for k,v in pairs(equip) do +?*.Emzl@ if v.StdMode==StdMode then ~p:hqi1+<+ if tonumber(v.Dura)/v.DuraMax < 0.9 then |/c-~|% return true tUW^dGo. end qsN_EMgbdn end Fp"
c { end ;j[gE
return false |}:q@]dC# end X+HPdrT bD3 dT>(+ for k,v in pairs(StdModes) do ?)-anoFyVW if IsNeed(v) then <g\:By^ return true lPC{R k.\C end A[`c+& end ^vv1cft return false PI9aKNt end ftRdK>a
D wlh
%{l j~=<O<P --范围内怪物个数 bool型返回distance R<hsG%BS(D function API_范围内怪物个数(distance, count) &B1!,joH~ local proxyUtils = requireProxy("proxyUtils") 7L6^IK local mainPlayerID = global.gamePlayerController:GetMainPlayerID() k8SY=HP return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) (KfQ'B+ end V$iA3)7W% --关闭NPC框 >{A)d< function API_CloseNpcTalk() sya!VF]` global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) ^JY:$)4[" global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) vXSA_"0t end KV'3\`v@LY --无怪随机 E0aFHC[ function API_无怪随机() 9"/=D9o9 local list = global.monsterManager.mMonstersInCurrViewField Qw_>
l}k/ local actors = {} %m/5!
" for k, v in pairs(list) do P]2 /}\f local actor = {} Cv&>:k0V actor["mID"] = v:GetID() 1Mx2% table.insert(actors, actor); U+(
qfa5( end 74(bo\ if #actors < 1 then )7AjRtb!/ API_UseItem("随机传送石") <h<_''+ local aa = API_GetItemCount(1078) ycEp,V;[Z if aa < 1 then CSwB+yN ssr.BuyStoreItemsById(2, 1) xa
!/. end yM(ezb end
?i!d00X return #actors V,\}|_GY end Y[m* hu}uc&N)iE --API_周围怪物数量 %RzkP}1>E function API_周围怪物数量() =BV_? local list = global.monsterManager.mMonstersInCurrViewField +K2HMf' local actors = {} O -p^S for k, v in pairs(list) do -:Juxh local actor = {} B <H
D actor["mID"] = v:GetID() O-~
cj7
0\ table.insert(actors, actor); )IIWXN2A end NjdDImz.;s return #actors P`_Q-vu end k>E/)9%ep2 9):^[Wkx --API_周围人物数量 参数是 白名单 <BBSC function API_视野内敌人(Name, lv) YPw=iF] local list = global.playerManager.mPlayersInCurrViewField 4s <ZKU local myName = global.gamePlayerController:GetMainPlayer():GetName() 9om}j local actors = {} wNh\pWA local names = myName .. "," .. Name lZ`@ }^& for k, v in pairs(list) do PA,\o8]x local actor = {} 6HpiG` actor["mID"] = v:GetID() ;jlI>;C;V actor["mName"] = v:GetName() KJV],6d actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] !Pd
) --local myName=global.gamePlayerController:GetMainPlayer():GetName() F)S?>P& if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then G?:5L0g table.insert(actors, actor); lXnv(3j3*s end A2`Xh#o end |~Vq"6` return #actors TF,([p* end e\*N Lj_( q~xs4?n1U i[vOpg]J --自动捡 TLz>|gr API_NoBodyPickEnable=true <sjz_::V8R ;4`%?6% --捡取物品白名单 bHzH0v]: API_MyPlayerNames = "我不是药神," Wr4Ob*2iD cA!o
xti --全图捡 ^VjF W API_MapPickEnable = true 4L&Rs; --自动存 bp P
3#~
K API_InStoreEnable=false j[fY.>yt& API_InStoreItems="" okbW. ~ --自动扔 f!cYLU1e@ API_ItemDropEnable=false {9nH#yv --自动用 ey
U*20 API_ItemKeepCountEnable=true @ |(Tg --自动领取 PD:lI]:s API_GetMailItemEnable=false !L@a
;L --自动买回城石 r}#,@< API_BuyStoneEnable=false NHaqT@: API_RecoveryItemMaxMoney=1000000 7x(z --地图 N8m3Wy API_PreMapName="盟重省" 6CNxb --开关 }FC(Z-g API_TimerEnable=true NH8\}nAK 9XN/
wp API_TimerEnable1s=true VyOpPIP API_TimerEnable10s=true l3YS_WBSn --1S定时器 aByd,uSe)_ function API_AutoSchedule1s() }h9f(ZyJn if GET_GAME_STATE() == "world" and API_TimerEnable1s then V<t!gT#&o! --自己设置的自动捡 a,?u
2 --API_PickItems() QbEb}
Jt --系统自动捡 Q^oB`)k if API_NoBodyPickEnable then 1u_< 1X3 if API_IsInCurrViewField(API_MyPlayerNames) then OZ Hfd7K4A API_OpenGroupPick(false) 2zbV9Bhq --release_print("来人,关自动捡") XWf1c ~J --API_RunAway() --逃跑 A04E <nr --API_UseItem3Second("回城石") ~s)
`y2Y else l9F]Lw API_OpenGroupPick(true) [R{%r^"2p API_PickItems() |@pn=wW --release_print("无人,开自动捡") x:`"tJa end K,f-
w2! end SfGl*2 end R9^RG-x end I?Q[ZH:M --10s定时器 QlH,-]N$L function API_AutoSchedule10s() d0G d5% if GET_GAME_STATE()=="world" and API_TimerEnable then Y86mg7[U/ --自动扔 f^@DuI if API_ItemDropEnable then .2QZe8" API_DropItemKeep("回城卷",2) ~L=? F end w72\' G"F:68 --自动组队 dC8, if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then )L$)qfQ~x API_InviteJoinTeam() 7;Vq r$9) API_TeamApplyUpdate() --允许所有邀请 #;s5=aH end Ab:+AC5{ YiTVy/ --自动用消耗品 })5
I/
if API_ItemKeepCountEnable then Ydh+iLjhx if API_GetItemCount("强效金创药") > 1 then DM3 %+ xY API_UseItem("强效金创药") nT/Azg end 78F
Ly7 if API_GetItemCount("强效魔法药") > 1 then 3KN})*1 API_UseItem("强效魔法药") vQ1#Zgy end W=!di3IA if API_GetItemCount("太阳水") > 1 then rHD_sC* API_UseItem("太阳水") 1YvE/<6 end {4HcecT if API_GetItemCount("魔法药(中量)") > 7 then {7LNQGiJ API_UseItem("魔法药(中量)") :Wd@Qy?; end rFG_CC2 if API_GetItemCount("魔法药(中量)") < 1 then ~cb7]^#u1l API_UseItem("魔法药(中)包") QK(w2` end 7uxUqM if API_GetItemCount("金创药(中量)") > 1 then .%x%(olf API_UseItem("金创药(中量)") ^(T_rEp end ] 5:0.$5 if API_GetItemCount("护身符(大)") < 1 then #A9rI;"XI API_UseItem("回城卷") ,O1/|Y end Ks\\2$Cm7 if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then xA]}/* API_UseItem("回城卷") O
<"\G!y~ end |,WP) if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then =~
[RG API_UseItem("回城卷") ]seOc],4 end R}HNi(%" end C=<PYkt,L [^eQGv[S if API_GetMailItemEnable then @ACq:+/Qc global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) m"RSDM!
global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) 4ZrRgx2MD end h0;R*c end Q;0g end th`pf xw~3x*{ --定时器 GfL:0 function API_TimerStart() d3tr9B --1S定时开关 GVUZn/
/ if API_AutoScheduleID1s == nil then T1g3`7C3 API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) )5/,B-+O" else $Lt'xW`8 ssr.UnSchedule(API_AutoScheduleID1s) %v,a3^Qu API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) G)3Q
|Vc end HAdDr!/` --10S定时开关 YzeNr* if API_AutoScheduleID10s == nil then :L5k#E"u API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) v)%0`%nSR else %>!$eCX ssr.UnSchedule(API_AutoScheduleID10s) ) S,f I API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10)
,V.Bzf%=O end F$te5 `a end (KnU-E]L function API_IsInCurrViewField(names, level) c,FZ{O@ local lv = level or 0 ytyB:
# J local nameList = names or "" f7oJ6'K local list = global.playerManager.mPlayersInCurrViewField Y [%<s/ local actors = {} pra0:oHN for k, v in pairs(list) do "-:-!1;Ji local actor = {} fOt?2Bh actor["mID"] = v:GetID() U~q2j#pJ actor["mName"] = v:GetName() GtpBd40" actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] /xw}]Fa5 if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then in#lpDa[ table.insert(actors, actor); M992XXd end >h{)7Hv end b;IzK' if #actors > 0 then
o3(
:R0 return true Vi'zSR28Z else HJt@m
&H| return false 8\Kpc;
zb end .0?A0D?sP end [K""6D );=0cnr3 --打开组捡 7,"y!\ function API_OpenGroupPick(isOpen) 7&3 local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) H_>9'( local count = 0 LW!>_~g- for key, value in pairs(GameSettingProxy._pickConfig) do 6}>CPi# count = count + 1
<
%
{?Js end yz^4
TqJ local function SetGroup(pickgroup) T$*#q('1"} for i = 1, count do A&D<}y/% GameSettingProxy:SetPickGroupValue(i, pickgroup) /|>?!; end 6d/1PGB end sMgRpem; if isOpen then yy
M`J7]J local pickgroup = { 1, 1, 1 } Fuy"JmeR
SetGroup(pickgroup) Wg\MaZ6Di else A\ r}V- local pickgroup = { 1, 1, 0 } tX~*.W: SetGroup(pickgroup) <7_s'UAL! end ,C0D|q4/!. end 7[ZoUWx KtD
XB>