游戏地址
xO2CgqEb www.fgcq996.com !_#2$J*s^D 那年传奇百区1.76
/DN!" 2C_/T8 找到 lua_State 然后调用下面的函数就能实现功能
Hlye:.$ 一个跑单狗注意qq1946913194
J}3 7 9 游戏账号密码。fanren9527 qq2293307009 i2(lqhaP }KCb5_MDF 搞完演示完,删除好友跑单 3lD1G~ .0f6b --自动寻路Ex
m(?ZNtBQt function API_AutoMoveEx(mapX, mapY)
-iJ @K ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
"fX9bh^ local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
Y<EdFzle local pathPoints = inputProxy:GetPathFindPoints()
_vgFcE~E@ if pathPoints == nil then
z]O,Vqpl? return 0
~AbTbQ 3 end
P{_Xg,Z return #pathPoints
H_<hZUB end
-P7JaH/Q r&?i>.
Kz8 --自动寻路
yi$ Jk}w function API_AutoMove(mapX, mapY)
w,v~ ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
NM:\T1 local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
ZVX!=3VT local pathPoints = inputProxy:GetPathFindPoints()
b Q6<R4 if pathPoints == nil then
@Ap~Wok return 0
=`%"-A end
>@wyiBU return #pathPoints
XDcA&cM}p end
{Wp5Ane `U[s d*C" --停止寻路
8KhE`C9z function API_AutoMoveEnd()
UOAL7 global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
oD>j26Q end
:Mq-4U.e !Al?B9KJ --自动打怪
3ZEV*=+T5 function API_AutoFight(isAFK)
-^+!:0'; if isAFK then
>qhoGg if not IsAFKState() then
^wm>\o;
global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
)`B
n"= global.Facade:sendNotification(global.NoticeTable.AFKBegin)
3'D<'S}[ end
Zr
U9oy&!C else
I? o)X! if IsAFKState() then
F1aI4H<(T global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
sGdlS&08( global.Facade:sendNotification(global.NoticeTable.AFKEnd)
2N$yn end
H^N
5yOj/ end
uw,p\:D& end
BqA N!
N>/9 function IsAFKState()
6 (@U+` local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
{D9m>B3"{ return AutoProxy:IsAFKState()
}E%#g# end
e;ej/)no` Yf=Puy}q
--打开自动穿戴
vq&u19iP function API_AutoDress()
mcB8xE --不抢别人归属
~xSAR;8 global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
}uaRS9d global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
bO2s'!x local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
cXY;Tw45 ServerOptionsProxy._data["autoDress"] = 1
O)E8'Oe"Q global.ConstantConfig.autousetimes = 0
q!+&|F end
lE@ V>%b )lsR8Hi8 --强制打开自动挂机拾取
IxQ(g#sj_k function API_AutoPick()
vOl<
local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
1ehl=WN local config = ItemConfigProxy.config
e dv&! for k, v in pairs(config) do
jR[3{ Reo --local res = string.gsub(v.pickset, "0", "1")
]gHi5]\NC v.pickset = v.pickset .. 1
9X- w5$< end
.3QX*]{ end
m5/d=k0l !QTfQ69Y0 --获取人物坐标
-lNq.pp3-$ function API_GetMapXY()
E0o?rgfdq return ssr.GetMainPlayerMapPos()
a\BV%'Zqg end
E"l/r4*f@ ToVi; --获取人物状态
71GyMtX function API_GetAction()
GV"Hk E; local player = global.gamePlayerController:GetMainPlayer()
&+v!mw
> local list = global.playerManager.mPlayersInCurrViewField
5!p
of\/a return player:GetAction()
WK<:(vu. end
2[8C?7_K0? ;I^+u0ga --设置宠物状态
`$5
QTte function API_PetSleep(isSleep)
l9eCsVQ~V local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
`f~\d.*U if not SummonsProxy:IsAlived() then
IW<nfg return false
d@ ?++z end
jLZ^EM- if isSleep then
wG\ +C'&~ SummonsProxy:RequestModeChange(2)
Jiv%Opo/| else
ZgP~VB0)$ SummonsProxy:RequestModeChange(4)
j~Cch%%G end
'q_^28rK end
nGqD{!i< #2~-I --获取人物数据
i:coNK)4 function API_GetGamePlayer()
XFiP8aX< local player = global.gamePlayerController:GetMainPlayer()
F^/1 u local list = global.playerManager.mPlayersInCurrViewField
8o SNnT local person = {}
ipThwp9 person["等级"] = player:GetLevel()
sOY+X person["职业"] = player:GetJobID()
f=L&>X person["名字"] = player:GetName()
bkvm-$/ person["金币"] = ssr.GetMoneyCountById(1)
;`f14Fb person["元宝"] = ssr.GetMoneyCountById(2)
i6Kcj person["绑金"] = ssr.GetMoneyCountById(3)
6|Qg=4_FHt return person
nbECEQ:|B end
UbnX%2TW m@Vz42g~+ function API_GetGamePlayerLevel()
V4.&"0\n # local player = global.gamePlayerController:GetMainPlayer()
G'M;]R9EP return player:GetLevel()
<V~B8C!) end
H>qw@JiO! ,R~{$QUl --获取周围怪物
|v6kZ0
B< function API_GetMonster()
7`c\~_Df_ local list = global.monsterManager.mMonstersInCurrViewField
y|7sh local actors = {}
h'tb for k, v in pairs(list) do
,3As
Ng local actor = {}
FZ0wtS2 actor["mID"] = v:GetID()
ruKm_j#J actor["mName"] = v:GetName()
Q^H8gsv actor["mRace"] = v:GetRace()
5>e#SW actor["mType"] = v:GetType()
b-+~D9U< actor["mSubType"] = v:GetSubType()
5S
EyAhB actor["mX"] = v:GetMapX()
;
m]KKB actor["mY"] = v:GetMapY()
%\|9_=9Wn actor["mAction"] = v:GetAction()
{%"n[DLps actor["mTypeIndex"] = v:GetTypeIndex()
O_kBAC-|R( actor["mAnimationID"] = v:GetAnimationID()
fy6<KEea actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
;tZ;C(;< actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
lzE{e6 actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
T|%pvTIe actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
1[g -f, actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
u Sl&d actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
T.}wcQf&* actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
5x=aJl;G actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
y$Rr,]L actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
bl8EzO actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
8?za&v actor["mColor"] = "0xFFFFFF"
C;UqLMrOI if v:GetType() == global.MMO.ACTOR_PLAYER then
Xj Rk1~ local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
T{"[Ih3Mbl local label_name = global.MMO.HUD_LABEL_NAME
ye-EJDZN local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
?DwI
>< W if hudName then
:"~SKJm actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
5vmc'Om end
=1vl-*uYh end
_-M27^\vV table.insert(actors, actor);
cOq'MDr end
5uidi z[0+9
=<Y return actors
)
43\q Iu\ end
Bo#,)%80 &qjc+-r{l --遍历周围玩家
w1&\heSQ function API_GetPlayer()
s<XAH7?0 local list = global.playerManager.mPlayersInCurrViewField
jv4O local actors = {}
J_|LGrt}) for k, v in pairs(list) do
d5z=fH9 local actor = {}
;K$ !c5 actor["mID"] = v:GetID()
Mxmo}tt actor["mName"] = v:GetName()
_&wrA3@/L actor["mRace"] = v:GetRace()
%2;Nj;
J$ actor["mType"] = v:GetType()
2I|`j^ actor["mSubType"] = v:GetSubType()
X9-WU\?UC actor["mX"] = v:GetMapX()
[XKudw% actor["mY"] = v:GetMapY()
J\@W+/#dF actor["mAction"] = v:GetAction()
^vHh*Ub actor["mTypeIndex"] = v:GetTypeIndex()
yZ:AJNb actor["mAnimationID"] = v:GetAnimationID()
@CTSvTt$ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
yd|ro G/ actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
VL?sfG0 actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
'xP&u<(F actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
z]%c6ty actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
mM $|cge" actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
F{*h~7D-| actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
LJc"T)>$` actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
lM|}K-2 actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
#hZ`r5GvTj actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
E-`3}"{ actor["mColor"] = "0xFFFFFF"
k',#T932x1 if v:GetType() == global.MMO.ACTOR_PLAYER then
@BmI1 local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
$SOFq+-T local label_name = global.MMO.HUD_LABEL_NAME
3T= ?!|e local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
#aua6V!" if hudName then
]J(BaX4 actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
Ct<]('Hm( end
Img$D*BM end
s 0To^I table.insert(actors, actor);
(6crWw{3 end
cp)BPg return actors
!0Mx Bem end
)yt_i'D} ~z kzuh --遍历周围玩家EX
GyZpdp! function API_GetPlayerExe()
7@1GSO: Yf local s1 = API_GetPlayer()
x##0s5Qn local result = ""
nf0]
<x2 for k, v in pairs(s1) do
)Ggv_mc h local s2 = string.format(
Mp7X+o/ "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
(k^o[H F , v["mID"]
o}p^q:T* , v["mName"]
_m.w5nJ , v["mRace"]
Tfz_h~D , v["Dura"]
Bc*FH>E , v["mType"]
c<a)Yq
f"] , v["mSubType"]
QG=K^g , v["mX"]
jAcrXB* , v["mY"]
T!ww3d , v["mAction"]
>\o._?xSA , v["mTypeIndex"]
0sA+5*md
M , v["mAnimationID"])
rk-GQ#SKU local s3 = ""
EvKzpxCh 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"
Ntt*}|:QV< , v["mLv"]
W>j@E|m$ , v["mJobID"]
2;w`W58
, v["mHP"]
M-8
`zA2 , v["mHPMax"]
N`HiNb
[ , v["mMP"]
~Jh1$O,9o , v["mMPMax"]
Q@
Ze+IhK` , v["mOwnerID"]
/U
3Uuk: , v["mOwnerName"]
+WjX@rSq[ , v["mGuildName"]
|[Rlg`TQ;* , v["mColor"])
b]b+PK*h result = result .. s2 .. s3 .. "\r\n"
2oo/KndU end
B2,c_[UZ. return result
&<LBz| end
NXCvS0/h %6W%-` --遍历周围指定NPC
g.*DlD%% function API_GetNpcIdByName(npcName)
]SmN}Iq1 local npcVec = global.npcManager:FindNpcInCurrViewField()
3c=>;g local npc = {}
7|PB6h3 for k, v in pairs(npcVec) do
+^DDWVp local npcs = {}
>/4N :=.h npc[v["mID"]] = v["mName"]
p/U{*i]t end
]5r@`%9 for key, value in pairs(npc) do
,rS?^"h9 local sPos, ePos = string.find(value, npcName)
NZ"nG<;5 if sPos then
\2^o,1r/ return key
!<3!ORFO end
#\8"d end
)*XD"-9 return nil
EeR} 34 end
"WzKJwFr jVPX]
8 --NPC名称打开NPC
WDi2m" function API_NpcTalk(npcName)
FyQr$;r local npcid = API_GetNpcIdByName(npcName)
_CMNmmp`e local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
U,K=(I7OBX NPCProxy:RequestTalk(npcid)
a*&(cn end
kMx)G] I.[Lv7U- --NPCID打开NPC
ALQ-aXJ function API_NpcTalkEx(npcid)
4a=QTq0p local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
[DZ
|Ltv NPCProxy:RequestTalk(npcid)
s1]m^, end
5P{[8PZxbV 1,(WS
F
function API_GetNpcTalkData()
klR\7+lK local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
\(MIDCZ@- local talkData = NPCProxy:GetCurrentNPCTalkData()
63i&< return talkData
8'"=y}]H~ end
TM5 Y(Q* TwsI8X function API_GetAllLink()
);zLgNx, local talkData = API_GetNpcTalkData()
5eiKMKW[ !
nsx!M local acts = {}
LS$zA>: local kv = {}
\U3v5|Q $XI.`L *g for line in talkData.content:gmatch("(text=.->)") do
.I?~R:(Ig if string.find(line, "@") then
e%lxRN"b local key = line:match("text=(.-)|")
;0U*N &
f /i~x.i3 local value = line:match("(@.-)>")
k1.%ZZMM kv[key] = value
4.p:$/G
TS end
uBl&{$< end
pm=m~ ,{; *b
v for result in talkData.content:gmatch("(@.-)>") do
@^Rl{p table.insert(acts, result)
*M)M!jTv end
?rjB9AC_;t local sendData = {
J 5(^VKj UserID = talkData.npcID,
iu?gZVyka index = talkData.index,
osl\j]U8 --Act = "@blbumj",
&1Cs' --commonInput = jsonData.commonInput,
U:z5`z! --inputID= jsonData.inputID,
%!r.)Wx|2 }
wn;)La return acts, kv, sendData
d_Jj&:"l end
%Zp|1J'" dVUe!S` --按索引号点击按
tpblm|sW function API_ClickLinkByIndex(index)
'b0r?A~c= acts, kv, sendData = API_GetAllLink()
f
Tso[r:F. sendData["Act"] = acts[index + 2]
7=D,D+f local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
qW`?,N)r NPCProxy:ExecuteWithJsonData(sendData)
>(-A"jf end
p|(SR~;6 /K
h, --按索购买引号点击按
nEUUD3a function API_ClickBuyLinkByIndex(index)
VEp cCK acts, kv, sendData = API_GetAllLink()
pztfm' sendData["Act"] = acts[index]
4l7
Ny\J local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
I(Z\$ NPCProxy:ExecuteWithJsonData(sendData)
I tb_ H end
q^:VF()d_z RRXp9{x` --按名称点击按
@mJ~?d95v function API_ClickLinkByName(linkName)
;NH^+h acts, kv, sendData = API_GetAllLink()
Af\ sendData["Act"] = kv[linkName]
9;'#,b*( local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
'$c9 S
[ NPCProxy:ExecuteWithJsonData(sendData)
r6nnRN/S= end
hbg$u$1`, /z_]7] --出售物品
v$D U
q+ function API_Sell(npcName,itemsName)
KIcIYCBz local npcId=API_GetNpcIdByName(npcName)
#N"u 0 local bagData=ssr.getBagData()
b8_F2 for k,v in pairs(bagData) do
jo^c>
ur if string.find(itemsName,v.Name) then
r^a:s] --if #v["Values"]<2 then
1yZA_x15: local Name = v.Name
*`rfD* local MakeIndex = v.MakeIndex
t>AOF\ local networkCtl = global.networkCtl
<:Mz2Rg networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
@({=~
W^ --end
@TQ/Z$y end
d]Y;rqjue end
%ioVNbrR7 end
#%2 d;V --全部卖
*FktI\tS function API_SellAll(npcName)
-pIz-* local npcId=API_GetNpcIdByName(npcName)
>[Wjzg local bagData=ssr.getBagData()
Gx8!AmeX for k,v in pairs(bagData) do
y|)VNnWM --if #v["Values"]<2 then
Q`W2\Kod] local Name = v.Name
b*.aaOb local MakeIndex = v.MakeIndex
araXE~Ac local networkCtl = global.networkCtl
33EF/k3vW networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
bU}v@Uk --end
+ZwoA_k{ end
!:m.-TE end
6Iqy"MQuq 0ki- /{;
q"
f65d4c --NPC购买
8>t,n,k function API_Buy(npcName,itemName,count)
p #{y9s4h --进入子菜单
@ ?M\[qeF@ local sendData =
v7SYWO# {
;
Y[D#Ja- UserID = API_GetNpcIdByName(npcName),
#G.eiqh$a Name = itemName,
p<{P#?4 g }
OxYAM,F SendTableToServer(1015, sendData)
ol*,&C:{ local function ToBuy()
-iS^VzI|I local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
W;yc)JB local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
bD0l^?Hu! for i=1,count do
*!ng)3# if i>#list then
D*ZjoU break
jLVG=rOn end
v\5O\ I ^ sendData.MakeIndex= list[#list-i].MakeIndex
v
UVFW'- SendTableToServer(1014, sendData)
[#C6K ' end
L2,2Sn*4i API_CloseNpcTalk()
`!/[9Y#H p end
mf3,V|>[\ local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
uE41"?GS
end
]c~yMA+]FZ 4U\}"Mk L7Hv) function 打开子项(item)
M2 |!,2 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
y $\tqQ if item.SubMenu == 1 then
9-/q-, NPCProxy:RequestNpcStoreItemList(item)
"qNFDr(WM end
K<wFr-z
end
Ga5*tWj OemY'M?ZQ function 子项购买(count)
5, ,~k= local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
|67Jw2 for i = 1, count do
L?j0t*do if i > #list then break end
CYLab5A NPCProxy:RequestNpcStoreBuy(list
) Q{|%kU" end jkx>o?s)z end b9RHsr]V X2@Ef2EkM --登录角色 YD'gyP4 Cd_@< function API_LoginRole(index) h/t;ZLUAZP local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) \^*:1=|7u] LoginProxy:SetSelectedRoleByIndex(index) } Xo#/9 LoginProxy:RequestEnterGame() hN M8H global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) A{
~D_q end B`Z3e%g# [M[<'+^* --登录 $C;i}q# function API_Login(name, password) JI[8n$pr] local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) j*<J&/luYZ local data = {} [j-?) data.type = 1 !:!(=(4$P data.username = name /iFn=pk1? data.password = password 'RV96lX< AuthProxy:RequestLogin(data) Ku l<Q< end Vo@7G@7K( ]JjS$VMauX --开门 x[)-h/&Fh function API_EnterRoom(x, y) K2zln_W local qq = ssr.GetCurMapData() PPB/-F]rr global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) |@iM(MM[? local function callback() oI{.{] ssr.AutoMoveBegin(x, y, qq.mapID) M5ZH
6X@5 end a]u.Uqyx2w SL:ScheduleOnce(callback, 0.5) iHG
VR end 7K\v= N:)x67, --多开 "00j]e. function API_PcOpen() GIM/ T4!) LuaBridgeCtl:Inst():CheckClientCount(2)
22ON=NN end 7]vmtlL C P}fxDW --盒子显示 e'.BTt58Y function API_hezi() iz# R)EB/g global.L_GameEnvManager._envData["isBoxLogin"] = 1 qU!dg end ;[}OZt miaH,hm --遍历背包物品 zsXgpnlHT function API_GetCurBagData() 4{YA[' local s1 = ssr.getCurBagData() X$>F78e* local result = "" <=">2W
P{ for k, v in pairs(s1) do b!]O]dk# local s1 = string.format( ]ub"OsXC "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" oZiW4z*Wh , v["OverLap"] yMz#e0k , v["DuraMax"] BA c+T , v["Where"] ]&%KU)i? , v["Dura"] TRGpE9i , v["Name"] ChTq !W , v["Shape"] HLW_Y|QaFo , v["MakeIndex"] o~~;I , v["Weight"] MW7~=T , v["StdMode"] ._G,uP$ , v["Index"]) jg710.v: local ss = "" ;
BN81; if #v["Values"] > 1 then {s
mk<NL for x, y in pairs(v["Values"]) do ojy^A if y["Value"] > 0 then fEZuv?@ local Values = string.format("m_Value=%s,m_ValueID=%s" +c))fPuV , y["Value"] 1?Y>X
z , y["Id"]) ~#sD2b`0 ss = ss .. Values >[;W~* end $pES>>P end \#HW.5 end +& B?f result = result .. s1 .. "," .. ss .. "\r\n" 2T&
MVl!% end 2R&\qZ<
return result CM_hN>%w[ end qLmzA@Cv uvbVb"\"Yk --获取背包是否满 8gP1]xD function API_GetBagFull() mH$tG
$ return ssr.IsBagToFull(isTips) '5BD%#[ end (SyD)G\rj F0<)8{s --获取背包百分比 y|6n:<o function API_GetBagEx() _"1RidhH HW = ssr.GetMetaValueByKey("BW") V'&;r'#O MAXHW = ssr.GetMetaValueByKey("MAXBW") a<<4gXx ELL = HW / MAXHW * 100 -Q n-w
3~& return math.ceil(ELL) 4/b.;$ end kkq1:\pZ]a Kyh>O)"G^% --获取背包是否满 61S;M8tNv function API_GetBagFull() SY+0~5E return ssr.IsBagToFull(isTips) OT
0c5x end 5skN'*oG EB[T 5{ --读取地图ID ]Lub.r function API_GetMapID() duG3-E local tt = ssr.GetCurMapData() "U}kp#) return tt.mapID <N vw*yA end ^X96yj'? <l<O2 l --读取地图名称 qdix@@ function API_GetMapName() Te-p0x?G. local tt = ssr.GetCurMapData() u"HGT=Nl return tt.mapName |{ N{VK end L
BbST! hTtn
/j
--获取背包最大数 6$R9Y.s>Z function API_GetMaxBag() e=0]8l>\V return ssr.GetMaxBag() zKd@Ab end ;ek*2Lh PFJ$Ia| --使用物品 KW .4 9 function API_UseItem(itemName) 3+ 6Ed;P local items = ssr.getQuickUseData() (Mk7"FC7 local item = ssr.getCurBagData() V'i-pn2gyu for k, v in pairs(items) do '0HOL)cIz if v.Name == itemName then $,}jz.R@ ssr.UseItemByIndex(v.Index) 'zI(OnIS end !/}3/iU end 7 9tE u_k[<&$ for k, v in pairs(item) do "W7|Xp if v.Name == itemName then WQ9e
~D" ssr.UseItemByIndex(v.Index) Y*NzY*V\ end 8gS7$ EH' end 8F
uxN2 end }^&S^N7 ?@'&<o0p# --获取金币数量 Pu3oQDldV function API_GetMoney(Index) MNu0t\`p4 return ssr.GetMoneyCountById(Index) Zonjk%tC end 8qyEHUN2q g6,D Bkv2 function API_MergeTables(t1, t2) |n26[=\B local merged = {} Wlc&QOfF for key, value in pairs(t1) do oai=1vt@
merged[key] = value IbI0".o end ["3dr@T9Z for key, value in pairs(t2) do {srP3ll
P merged[key] = value j.q}OK end CYaN;HV@_ return merged ok\-IU? end ]}v]j`9m% "/'3I/} u}5CzV ` --获取物品数量 pkn^K+<n, function API_GetItemCount(itemName,isBind) /7
UvV60 local items=ssr.getQuickUseData() U ]<l-~| local bagData=ssr.getBagData() ` g] items=API_MergeTables(items,bagData) Lk(ESV;r local bind=isBind or false dbby.% local count=0 T-] {gc for k,v in pairs(items) do QC+
Z6WS; if bind then L2XhrLK.| --绑定 E=8'! if v.Name==itemName and v.Bind~=nil then 1&MCS%UTL count=count+ v.OverLap uVEJV |^/ end }-oba
_ else 3x[Cpg
, --不绑定 GL
n M1 if v.Name==itemName and v.Bind==nil then +bznKy! count=count+ v.OverLap Y
^+x< end K0gQr.J53 end 0-Mzb{n5 end G8av5zR return count Jq/itsg end 2^o7 ^S --读取人物坐标 d>p' A_ %,@pV%2 '7?Y+R@|L 0ID9=:J function API_GetMapXY() yT7$6x local aa = ssr.GetMainPlayerMapPos() :H]d1 local aa = string.format("x=%s,y=%s"
0/GBs~P , aa.x PeJ#9hI~rQ , aa.y) mUg :<.^ return aa r9ulTv
}X end J
p?XV<3Z .iy4
(P4 -- 获取角色是否活着 yNI0
Do
2 function API_IsRoleAlive() 9#z$GO|< return ssr.IsRoleAlive() `Z;Z
^c end `]KX`xGK c1Ks{%iA --读取聊天信息 h3@tZL#g function API_ChatMsg()
X)3(.L local function listcb(msg) wKM9fs --table &ksuk9M ChatTable = msg Blxa0&3 end MJGT|u8O& ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) ,U\s89 if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then d,^O[9UWo local ChatT = string.format( 23?u_?+4i "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" Tx.N#,T| , ChatTable.SendName O(-p
md, , ChatTable.SendId IhNX~Jg'^ , ChatTable.ChannelId So1TH% , ChatTable.mt B7f<XBU6> , ChatTable.SendTime \GL] I. , ChatTable.Msg) roQI;gq^ return ChatT W![K#r5T end LzU'6ah';5 end ,`H
weIq( 1$0Kvvg[ function API_ChatMaa() gy.UTAs
N return ssr.GetMaxBag() GQbr}xX.# end CP7Fe{P
[D~] --修理装备 j}u L function API_CopyTable(original) cr!8Tp;2A
local copy = {} Ih.+-!w for key, value in pairs(original) do y RxrfAdS if type(value) == "table" then Vgj#-7bdyi copy[key] = API_CopyTable(value) B'yjMY![
else 6m_mma_,& copy[key] = value aF
2vgE\ end R0Vt_7 end Eg)24C R 4 return copy
MqZ"Js end Ph=NH8
修衣服 = "0,4" --衣服,头盔 YZf{."Opj[ 修武器 = "1" vqeH<$WHvy 修项链 = "3" .)tv'V/ 修手镯 = "5,6" "KIY+7@S} 修戒指 = "7,8" --左戒指 右戒指 .aNh>`OT' function API_Repair(npcName, itemPos) :M"+ local npcId = API_GetNpcIdByName(npcName) p7|I>8ur. local tempData = ssr.getEquipData() hL3up] pZ local tobeRepair = {} @[;'b$T$ for k, v in pairs(tempData) do
9)VAEyv if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then C!+D]7\j local tmp = { $
\u\4n Name = v.Name, #|sE]\bsH MakeIndex = v.MakeIndex, GJ%^hr`P Where = v.Where 3;v)f": [ } hQ|mow@Zmz table.insert(tobeRepair, tmp) m \)B=H!bz ssr.TakeOffEquipRequest(v) _mqU:?Q5 end %tVU Rj end FDl/7P`b( --脱完 开始修理 @6"MhF for k, v in pairs(tobeRepair) do HUx`RX0> local Name = v.Name 1X)#
iY local MakeIndex = v.MakeIndex 1?.CXqK local networkCtl = global.networkCtl _x.2&S89 networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) *HD(\;i-$ end `Q*`\-8J --开始穿 x Q"uC!Gu4 local function ToDress() !gkr?yhE for k, v in pairs(tobeRepair) do b\"F6TF: ssr.TakeOnEquipRequest(v, v["Where"]) M+&~sX*a end x:)H Ii q/ end O!"K'Bm local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) *F( qg%1+ API_CloseNpcTalk() +ayC0 end Ir JSU_ D|zuj] ;{I9S' y[i}iT/~ 药店={0} s&E,$|80 首饰店={19,20,21,22,23,24,26} ]H/,Q6Q 衣服店={10,11,15,16,27,28,62,64} pb97S^K[ 武器店={5,6} -- %XkO 杂货店={3,25,2,30,31} *y4g\#o. 铁匠铺={43} QP'sS*saJ 书店={4} ;T^s&/>E --检测背包是否有指定类型物品 #mU\8M, function API_IsNeedToStore(StdModes) !}6'vq local function IsNeed(StdMode) 7]rIq\bM local bagData=ssr.getBagData() 3P0z$jh"H for k,v in pairs(bagData) do &oG>Rqkm if v.StdMode==StdMode then Qf_N,Bq{a return true
WXxnOLJr end "bej#'M# end KiXfR\S~C local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) bD,21,*z local equip = EquipProxy:GetEquipData() T
t~4'{Bc for k,v in pairs(equip) do c^w
^'< if v.StdMode==StdMode then VrW]|jIu* if tonumber(v.Dura)/v.DuraMax < 0.9 then }uDpf0;^ return true FsqH:I4O end |cC3L09 end j&
7>ph end x@Gg fH<l return false OmBM)g end sK%b16# t`6]eRR for k,v in pairs(StdModes) do %f;v$rsZ if IsNeed(v) then gxO~44" return true 5mAb9F8@ end N_g=,E=U% end X
uP%/\ return false tpSgbGzp end 7FH-l(W !mK()# 6 3rRIrrYO --范围内怪物个数 bool型返回distance P.Tnq function API_范围内怪物个数(distance, count) h?TIxo:6/ local proxyUtils = requireProxy("proxyUtils") jga;q local mainPlayerID = global.gamePlayerController:GetMainPlayerID() a?W5~?\9 return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) #f(a,,Uu' end .M:&Aj)x16 --关闭NPC框 S5JMt;O function API_CloseNpcTalk() zYM2`(Z
5B global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) 8~T}BC global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) pBAAwHD end ;.jj>1=Tnl --无怪随机 f_ MK4
function API_无怪随机() 6?,qysm06 local list = global.monsterManager.mMonstersInCurrViewField ll5;09 local actors = {} #bt z94/~O for k, v in pairs(list) do rT R$\ [C local actor = {} Cj#wY
actor["mID"] = v:GetID() Vn_&q6Pa table.insert(actors, actor); ;\th.!'rn end w#1BHx if #actors < 1 then uV gA <*0 API_UseItem("随机传送石") e^*&& local aa = API_GetItemCount(1078) NzZ(Nz5 if aa < 1 then CY?J$sN ssr.BuyStoreItemsById(2, 1) 3fLdceT end iU+SXsXLR4 end { 5 r]G return #actors |gV~U~A] end PZ/tkw ^X_ ;ZLg. --API_周围怪物数量 1R_@C.I function API_周围怪物数量() qVU<jt local list = global.monsterManager.mMonstersInCurrViewField 3z0Bg local actors = {} Dh^l:q+c for k, v in pairs(list) do ;jxX /c local actor = {} %
rB,Gl:)g actor["mID"] = v:GetID() FTUfJIVN( table.insert(actors, actor); `0ZH=*P end \X
%#-y return #actors G>pedE\ end 3q4VH q DvhFCA}z --API_周围人物数量 参数是 白名单 0VvY(j:hp function API_视野内敌人(Name, lv) to13&#o local list = global.playerManager.mPlayersInCurrViewField G9xl-ag+z local myName = global.gamePlayerController:GetMainPlayer():GetName() MY{Kq;FvRP local actors = {} <]?71{7X local names = myName .. "," .. Name HCr}|
DxyK for k, v in pairs(list) do \@PMj"p|: local actor = {} ty!DMg# actor["mID"] = v:GetID() `/1rZ# actor["mName"] = v:GetName() Q=!QCDO( actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] Jb{g{a/ --local myName=global.gamePlayerController:GetMainPlayer():GetName() P[aE3Felk if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then t[k ['<G table.insert(actors, actor); J4]"@0 ?6 end >W+,(kAS end pKXSJ"Xo return #actors hcU^!mp end kPOk.F%) >? o5AdZ 7VfXE/ --自动捡 MZVbOcSAd API_NoBodyPickEnable=true {31X
;|T|*0vY[ --捡取物品白名单 x=0Ak'1M API_MyPlayerNames = "我不是药神," 1f3g5y'z5 s]yZ<uA --全图捡 _&(Wz0 API_MapPickEnable = true &2:WezDF --自动存 bLl
?!G.
API_InStoreEnable=false PUea`rE?R API_InStoreItems="" &T-:`( --自动扔 (M;d*gNr API_ItemDropEnable=false $
^)g, --自动用 =?L16mu1& API_ItemKeepCountEnable=true )j]f
]8 --自动领取 HziQ%QR API_GetMailItemEnable=false YeJTB} --自动买回城石 >WO;q API_BuyStoneEnable=false qKXg'1#E) API_RecoveryItemMaxMoney=1000000 [*K9V/ --地图 %dw0\:P?
Q API_PreMapName="盟重省" l --开关 NjS<DzKhK API_TimerEnable=true / !h<+ 4Tuh]5 API_TimerEnable1s=true Q~^v=ye API_TimerEnable10s=true CWZv/>,% --1S定时器 D0\*WK$ function API_AutoSchedule1s() %
>nAPO+e if GET_GAME_STATE() == "world" and API_TimerEnable1s then + d>2 ' --自己设置的自动捡 `0s3to%
7 --API_PickItems() Dt5AG --系统自动捡 %eF=;q if API_NoBodyPickEnable then c 9gm% if API_IsInCurrViewField(API_MyPlayerNames) then
Lniz>gSc API_OpenGroupPick(false) p8]X Ne --release_print("来人,关自动捡") T#E,^|WEk --API_RunAway() --逃跑 S]E|a@kD3 --API_UseItem3Second("回城石") R(>
oyxA[F else ,X|
>d API_OpenGroupPick(true) Hv"qRuQ?[ API_PickItems() XR=ebl --release_print("无人,开自动捡") %N\45nYU: end xxGQXW end m k~F@ end [C
ezz5 end /"!ck2d&1 --10s定时器 ko!]vHB9` function API_AutoSchedule10s() 7F]oK0l_ if GET_GAME_STATE()=="world" and API_TimerEnable then /5KY6XxR --自动扔 c ~M'O26bW if API_ItemDropEnable then Y}}1]}VIK API_DropItemKeep("回城卷",2) {niV63$m end *` - 9R+ qw --自动组队 (CAVOed if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then =f=>buD API_InviteJoinTeam() 4D.h~X4 API_TeamApplyUpdate() --允许所有邀请 (<`>B end % T$!I (L& 1jK2*
y --自动用消耗品 , Sf:R4= if API_ItemKeepCountEnable then 4M$"0}O;[h if API_GetItemCount("强效金创药") > 1 then N#OO{`":Z` API_UseItem("强效金创药") cor!S a> end
&mJm'Ks if API_GetItemCount("强效魔法药") > 1 then ;[C_ho API_UseItem("强效魔法药") {Y+e|B0 end _B&;z $ if API_GetItemCount("太阳水") > 1 then }!kvoV)]1 API_UseItem("太阳水") Yg!fEopLb end x;JC{d# if API_GetItemCount("魔法药(中量)") > 7 then \J~@r1 API_UseItem("魔法药(中量)") o|KmKC n> end AGlFbc(L if API_GetItemCount("魔法药(中量)") < 1 then [*vR&