游戏地址
d
`Q$URn| www.fgcq996.com d*1@lmV
* 那年传奇百区1.76 / vge@bsE 79a{Zwdd9j 找到 lua_State 然后调用下面的函数就能实现功能
odquAqn 一个跑单狗注意qq1946913194
;sa-Bh=j^ 游戏账号密码。fanren9527 qq2293307009 (G"b)"Qum
T.HI
$(d 搞完演示完,删除好友跑单 EG0NikT? Gr#p QE2; --自动寻路Ex
3;j?i<kM
function API_AutoMoveEx(mapX, mapY)
}_M.-Xm ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
+6f5uMKUvs local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
q]5"V>D \ local pathPoints = inputProxy:GetPathFindPoints()
q01zN:|-1 if pathPoints == nil then
/PIU@$DV return 0
>.#uoW4ZV end
+iwNM+K/gQ return #pathPoints
Gz!72H end
Gn;eh~uw;l ;'pEzz?k" --自动寻路
g?i_10Xlp function API_AutoMove(mapX, mapY)
FQ?H%UcW ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
P7E}^y`e local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
5gV8=Ml"V local pathPoints = inputProxy:GetPathFindPoints()
slHlfWHq if pathPoints == nil then
|zvxKIW;wd return 0
i[^?24~ c end
bsPw Tp^ return #pathPoints
.dp~%!"Sn, end
A
A<9XC "F|OJ@M --停止寻路
,I@4)RSAH| function API_AutoMoveEnd()
uwWfL32 global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
mb?DnP,z end
5<a)SP 0 GA6Z{U{XS --自动打怪
r,MgIv(L function API_AutoFight(isAFK)
8R:H{)o~s} if isAFK then
r#]gAG4t\
if not IsAFKState() then
pp#Kb 2* global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
}k<b)
I*A global.Facade:sendNotification(global.NoticeTable.AFKBegin)
A@_F ;4X end
Z[AJat@H else
XT= #+ if IsAFKState() then
K~@-*8% global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
,vW.vq<{q3 global.Facade:sendNotification(global.NoticeTable.AFKEnd)
KE16BjX@ end
& HphE2 h end
.^djB
x end
Cz?N[dhh QD<^VY6 function IsAFKState()
ssi{(}H/Jv local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
JO7IzD\ return AutoProxy:IsAFKState()
nUhD41GJ end
!U,qr0h v>)[NAY9 --打开自动穿戴
Y#{KGVT< function API_AutoDress()
R`ZU'| --不抢别人归属
Ua V9T:)x global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
v[r:1T@ global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
nf/iZ & local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
J`} /+WN 7 ServerOptionsProxy._data["autoDress"] = 1
G+b $WQn2t global.ConstantConfig.autousetimes = 0
\(Zdd
\, end
,Xk8{= \fU{$ --强制打开自动挂机拾取
lbT<HWzNH function API_AutoPick()
'iMI&?8u local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
k'%c| kx8U local config = ItemConfigProxy.config
XOgX0cRC4 for k, v in pairs(config) do
F.PD5%/$q --local res = string.gsub(v.pickset, "0", "1")
lEZ[0oa v.pickset = v.pickset .. 1
J%f5NSSU{6 end
YcRjbF,|6 end
Zi@?g IiX x}N+
vK --获取人物坐标
Ej 'a
G function API_GetMapXY()
W3*WR,z return ssr.GetMainPlayerMapPos()
wXXv0OzK end
;-^WUf| Qh/yPOSm: --获取人物状态
+#1WOQfAD function API_GetAction()
PM=
I local player = global.gamePlayerController:GetMainPlayer()
!j %)nU local list = global.playerManager.mPlayersInCurrViewField
kc|`VB8L return player:GetAction()
y
@Y@"y end
s.C-II?e 0NpxqeIDY --设置宠物状态
1.yw\ZC\ function API_PetSleep(isSleep)
$hn_4$ local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
gA2\c5F< if not SummonsProxy:IsAlived() then
]ueq&| return false
8xg:ItJaA0 end
bU2)pD!N if isSleep then
>0@X^o SummonsProxy:RequestModeChange(2)
Gk799SDL else
3Eiy/ SummonsProxy:RequestModeChange(4)
.b N0! end
-Q 6W`*8 end
:;{U2q+ $L:g7?)k --获取人物数据
O%(:8nIgZ function API_GetGamePlayer()
c4L5"_#`x- local player = global.gamePlayerController:GetMainPlayer()
RS<c&{? local list = global.playerManager.mPlayersInCurrViewField
l+R-lsj local person = {}
E;VW6[M person["等级"] = player:GetLevel()
79:x>i= person["职业"] = player:GetJobID()
NO`a2HR$ person["名字"] = player:GetName()
]wa?~;1^& person["金币"] = ssr.GetMoneyCountById(1)
MV9{>xX person["元宝"] = ssr.GetMoneyCountById(2)
a/L?R
Uu person["绑金"] = ssr.GetMoneyCountById(3)
|%&WYm6 return person
B`RbXk68q end
YIgzFt[L c0!bn b function API_GetGamePlayerLevel()
:$/lGIz local player = global.gamePlayerController:GetMainPlayer()
@WBy:gV" return player:GetLevel()
{x2N~1!E end
oc
\rQ? G*ym[ --获取周围怪物
RF g$N@g, function API_GetMonster()
cQgmRHZ] local list = global.monsterManager.mMonstersInCurrViewField
H0tjN&O_ local actors = {}
[^ 7^&/0 for k, v in pairs(list) do
ttZ!P:H2 local actor = {}
Ik;~u8j1e actor["mID"] = v:GetID()
,D
;`t actor["mName"] = v:GetName()
z6'zNM7M actor["mRace"] = v:GetRace()
f} }Bb8 actor["mType"] = v:GetType()
YaSwn3i/@S actor["mSubType"] = v:GetSubType()
4vBZb^W;9 actor["mX"] = v:GetMapX()
uZmfvMr3 actor["mY"] = v:GetMapY()
lP9a*>=a actor["mAction"] = v:GetAction()
2',t@< U actor["mTypeIndex"] = v:GetTypeIndex()
G-M!I`P actor["mAnimationID"] = v:GetAnimationID()
N ?V5gi actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
#0G9{./C actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
1vl~[ actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
tEiN(KA!5 actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
ZW+{<XTof4 actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
t4h05 i actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
JO+ hD4L actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
fcJ#\-+E actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
`'Z ;+h] actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
;EL!TzL:8 actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
rU.ew~ actor["mColor"] = "0xFFFFFF"
Sm+Ek@Ax if v:GetType() == global.MMO.ACTOR_PLAYER then
.o|Gk
5) local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
l4;/[Q>Z local label_name = global.MMO.HUD_LABEL_NAME
sHQe0"Eo local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
{hg,F?p
' if hudName then
m]7yc>uDy actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
2R2Z6} end
TrkoLJmB end
.%WbXs table.insert(actors, actor);
x0Tb7y`
end
0qJ(3N tJHzhH) return actors
`jP\*k`~] end
2!]':(8mR 1|z>}
xP --遍历周围玩家
p+9vSM # function API_GetPlayer()
.O1g'% local list = global.playerManager.mPlayersInCurrViewField
CCl*v local actors = {}
?F?!QrL for k, v in pairs(list) do
VWLou
jB local actor = {}
bmt2~! actor["mID"] = v:GetID()
ub,Sj{Mq" actor["mName"] = v:GetName()
[|k@Suv |z actor["mRace"] = v:GetRace()
T=b5th
} actor["mType"] = v:GetType()
:kY][_ actor["mSubType"] = v:GetSubType()
x:sTE u@ actor["mX"] = v:GetMapX()
z${B| actor["mY"] = v:GetMapY()
.]v8W51Y actor["mAction"] = v:GetAction()
V-7!)&q actor["mTypeIndex"] = v:GetTypeIndex()
oB_{xu$6| actor["mAnimationID"] = v:GetAnimationID()
ym(r;mj! actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
o5Pq>Y2T actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
,6a'x~y<r actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
<bGSr23* actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
x,>@IEN7 actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
[Y'Xop6G actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
j24BB}mBB actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
Vs{|:L+ actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
/:U\U_j actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
{CQA@p:Y} actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
jw(v08u > actor["mColor"] = "0xFFFFFF"
lW^RwNcd if v:GetType() == global.MMO.ACTOR_PLAYER then
_5.7HEw>/ local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
!Otyu6& local label_name = global.MMO.HUD_LABEL_NAME
17<\Q(YQ= local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
-fG;`N5U if hudName then
U&`M G1uHe actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
ajkRL|^ end
~5cLI;4h end
E8FS jLZ table.insert(actors, actor);
x8zUGvtQ end
HK:?Y[ebs return actors
[[[p@d/Y end
!\?? [1_e v9M;W+J --遍历周围玩家EX
5^f>L2 function API_GetPlayerExe()
RE*UIh*O local s1 = API_GetPlayer()
q'c'rN^ local result = ""
Nz5gu.a6{L for k, v in pairs(s1) do
Bz7T1B&to local s2 = string.format(
^(UL$cQ> "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
nW{7L , v["mID"]
GW`9SB , v["mName"]
Sfh \4h$H , v["mRace"]
6\b B#a , v["Dura"]
5;dnxhf , v["mType"]
Du[$6
, v["mSubType"]
->K*r\T , v["mX"]
?N $ , v["mY"]
ZHw)N&Qn , v["mAction"]
Ej6vGC., , v["mTypeIndex"]
g%RL9-z , v["mAnimationID"])
";s?#c local s3 = ""
lm]4zs /A 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"
roW8 4x , v["mLv"]
<A"}Krq? , v["mJobID"]
_E&*JX , v["mHP"]
Z4E:Z}~'' , v["mHPMax"]
7CM<"pV , v["mMP"]
j6IWdqXe , v["mMPMax"]
9Z
rWG , v["mOwnerID"]
aSKI%<?xN , v["mOwnerName"]
0[9A* , v["mGuildName"]
m./lrz , v["mColor"])
|910xd`Z result = result .. s2 .. s3 .. "\r\n"
u]"oGJj1 end
JsVW:8QO~ return result
tR0o6s@v/< end
\t^q@}~0Wz =$Xdn' --遍历周围指定NPC
7c4\'dt# function API_GetNpcIdByName(npcName)
#/5jWH7U local npcVec = global.npcManager:FindNpcInCurrViewField()
(AXSQI~y local npc = {}
AP/5,M< for k, v in pairs(npcVec) do
p~+)!Z# local npcs = {}
V\)@Yk2 npc[v["mID"]] = v["mName"]
!cp
,OrO\ end
b/5;377_ for key, value in pairs(npc) do
mY;Y$fz;xL local sPos, ePos = string.find(value, npcName)
Yz.[Cmd
X if sPos then
4wBMBCJ;P return key
Tv~<W4 end
>8>`- end
(K^9$w]tf return nil
y\r8_rBo end
4J-)+C/edx u -CY- --NPC名称打开NPC
?s
p function API_NpcTalk(npcName)
h_x"/z& local npcid = API_GetNpcIdByName(npcName)
0=L:
8&m local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
V0ulIKck NPCProxy:RequestTalk(npcid)
M,q'
end
]W-:-.prh rv:
,Os_ --NPCID打开NPC
hpLo function API_NpcTalkEx(npcid)
im4V6 f;% local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
2$=?;~ NPCProxy:RequestTalk(npcid)
V A4_>6 end
$>8+t>| \W}?4kz function API_GetNpcTalkData()
73 D|gF* local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
!u>29VN local talkData = NPCProxy:GetCurrentNPCTalkData()
p24sWDf return talkData
xREqcH,vU end
>Y)jt*vQ cz&Qoyh{; function API_GetAllLink()
URX>(Y}g9^ local talkData = API_GetNpcTalkData()
c,X\1yLy vr=iG
xD local acts = {}
V:F)m! local kv = {}
9'td}S ~U ?cL-`n for line in talkData.content:gmatch("(text=.->)") do
:}e*3={4 if string.find(line, "@") then
h^?[:XBeav local key = line:match("text=(.-)|")
sAC1Pda y{U'\ local value = line:match("(@.-)>")
Ny
p5= kv[key] = value
OUnt?[U\ end
B5zu?AG end
4\dc SYeCz(H>d for result in talkData.content:gmatch("(@.-)>") do
{$oZR"MP table.insert(acts, result)
zZ
OoPE end
se2+X>@> local sendData = {
BLuILE:$ UserID = talkData.npcID,
gWv/3hWWB index = talkData.index,
!$qNugLg --Act = "@blbumj",
@H1pPr --commonInput = jsonData.commonInput,
l J;wl|9 --inputID= jsonData.inputID,
q8P| ] }
u23^
* - return acts, kv, sendData
=>4>Z_q end
o24`5Jdh Y-gj
X$qGo --按索引号点击按
E;| q function API_ClickLinkByIndex(index)
[$OD+@~A2 acts, kv, sendData = API_GetAllLink()
^HX={(ddK sendData["Act"] = acts[index + 2]
X -w#E3 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
3Ki`W!C NPCProxy:ExecuteWithJsonData(sendData)
#B;` T[ end
M+
8!#n =pN?h<dc --按索购买引号点击按
P[%
W[E< function API_ClickBuyLinkByIndex(index)
W
^60BZ acts, kv, sendData = API_GetAllLink()
*N[.']#n sendData["Act"] = acts[index]
\,ir]e,1 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
&}YB!6k h^ NPCProxy:ExecuteWithJsonData(sendData)
)=[K$>0k end
%* vYX0W" z!D >l --按名称点击按
-`&4>\o2Lx function API_ClickLinkByName(linkName)
x44)o: acts, kv, sendData = API_GetAllLink()
v9u/<w68! sendData["Act"] = kv[linkName]
p_!Y:\a5 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
VKS:d!}3E NPCProxy:ExecuteWithJsonData(sendData)
V0c*M>V end
k2,n:7 Q?I)1][ !" --出售物品
CZxQ
z
function API_Sell(npcName,itemsName)
}\OLBg/ local npcId=API_GetNpcIdByName(npcName)
<!-8g! local bagData=ssr.getBagData()
'nBJ[$2^ for k,v in pairs(bagData) do
Cdotl$' if string.find(itemsName,v.Name) then
9IN=m 5 --if #v["Values"]<2 then
FavU"QU&| local Name = v.Name
Bwn9ZYu#r local MakeIndex = v.MakeIndex
Tf21K9+`L local networkCtl = global.networkCtl
>"5^]o2?~l networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
NnGQ=$e --end
yL_-w/a end
{ZY^tT
sY end
l/DV
?27 end
LV4x9?& --全部卖
#W~5M ?+ function API_SellAll(npcName)
rcOpOoU| local npcId=API_GetNpcIdByName(npcName)
eP
(%+[g local bagData=ssr.getBagData()
0r_8/|N# for k,v in pairs(bagData) do
f&7SivS# --if #v["Values"]<2 then
D2[uex local Name = v.Name
nxA]EFS local MakeIndex = v.MakeIndex
05=O5
<l
local networkCtl = global.networkCtl
tA3]6SIK@ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
v}+axu/? --end
#f
zvK+ end
!b7]n-1zs end
N 2L/A `P)1RTVx ^qIp+[/' --NPC购买
mhnD1}9,Ih function API_Buy(npcName,itemName,count)
J,4]du$ --进入子菜单
9K Ih}Q@P local sendData =
?G*XZ0u~ {
.hSacd UserID = API_GetNpcIdByName(npcName),
4ME8NEE Name = itemName,
&z
1A-O
v }
A\i/@x5# SendTableToServer(1015, sendData)
7iLm_#M local function ToBuy()
&!N5}N& local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
r*0a43mC1 local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
Zo-E0[9 for i=1,count do
bqsb (C if i>#list then
d[k
b]lC break
n-}:D<\7 end
Ys+Dw- sendData.MakeIndex= list[#list-i].MakeIndex
J
ihI1C SendTableToServer(1014, sendData)
UH%oGp$ykX end
{5
#P1jlT API_CloseNpcTalk()
.%U~ r2Y( end
E@JxY local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
0u'4kF!P! end
e\%QHoi>u /h0-qW 0{BPT>' function 打开子项(item)
rf@/<Wu local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
5#80`/w^U if item.SubMenu == 1 then
U#Wc!QN-t NPCProxy:RequestNpcStoreItemList(item)
J=
ia end
H{\tQ->(2 end
6@]Xwq Q2Yv8q_}Uq function 子项购买(count)
PxfeU2^{0 local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
lqF{Y<l for i = 1, count do
$P866F if i > #list then break end
awHfd5nRS NPCProxy:RequestNpcStoreBuy(list
) )gmDxD
^C end ^;6~=@#*C end m{JiF-=u
UacN'Rat --登录角色 nxsQDw\hy mB"zyL- function API_LoginRole(index) @1*lmFq'kV local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) +LV'E#h!Q LoginProxy:SetSelectedRoleByIndex(index) 5y(irbk7 LoginProxy:RequestEnterGame() r{YyKSL1*K global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) J.$<Lnt>u end Av.(i2 ngsax1xO --登录 OV7vwj/- function API_Login(name, password) #Vs/1y`() local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
>BrxJw#M local data = {} i\3BA"ZX data.type = 1 /quf'CV} data.username = name :0CR=]WM data.password = password dsR{
P,! AuthProxy:RequestLogin(data) "<v_fF<Y end $a15
8 _a+
0LTo". --开门 Jtd@8fVi function API_EnterRoom(x, y) jm.pb/ local qq = ssr.GetCurMapData() .x(&- global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) IywovN Tr local function callback() yz9`1R2c ssr.AutoMoveBegin(x, y, qq.mapID) HoH3.AY X end )_GM&- SL:ScheduleOnce(callback, 0.5) I%e7:cs > end ]N!
SG@X+ ,\+tvrR4X --多开 )@]-bPnv function API_PcOpen() at,Xad\j LuaBridgeCtl:Inst():CheckClientCount(2) Tb IM{X end /v5Pk.!o }ebw1G --盒子显示 rHT8a^MO function API_hezi() 66p_d'U global.L_GameEnvManager._envData["isBoxLogin"] = 1 '8*gJ7] end 7 z<!2 g~FB&U4c --遍历背包物品 XhWMvme function API_GetCurBagData() iV'-j,-i local s1 = ssr.getCurBagData() UM|GX local result = "" Jgtvia for k, v in pairs(s1) do tborRi) local s1 = string.format( X2M<DeF: "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" qE$.a[ , v["OverLap"] }2`S@Rq.WW , v["DuraMax"] 0a8nBo7A-X , v["Where"] E
OtrrfT& , v["Dura"] n 8AND0a1C , v["Name"] "*+epC|ks , v["Shape"] h,FP,w;G , v["MakeIndex"] oq8~P
Tw , v["Weight"] e!tgWYN , v["StdMode"] :Jhx4/10 , v["Index"]) `3pe\s local ss = "" Qbl6~>T if #v["Values"] > 1 then +
{a for x, y in pairs(v["Values"]) do ;jX_e(T3m if y["Value"] > 0 then ;4 ?%k ) local Values = string.format("m_Value=%s,m_ValueID=%s" D.*JG7;=Z , y["Value"] OiM{@ , y["Id"]) ;2L=WR% ss = ss .. Values )@R:$l86 end *ivbk /8 end _j%Rm:m;< end ry~3YYEMI0 result = result .. s1 .. "," .. ss .. "\r\n" LTzf&TZbx5 end *9PS2*n return result <i]%T~\Af) end U?$v1 || &CUkR6 --获取背包是否满 MYN1zYT6j function API_GetBagFull() `(Q58wR} return ssr.IsBagToFull(isTips) hZ2PP ^ end *zX<`E v|{*y --获取背包百分比 KOi%zE% function API_GetBagEx() WCR+ZXI?1 HW = ssr.GetMetaValueByKey("BW") ;Jx ^ MAXHW = ssr.GetMetaValueByKey("MAXBW") Tw!x* ELL = HW / MAXHW * 100 ec=4L@V* return math.ceil(ELL) ~@'|R%jJ end J
SGUl4N g-+p(Ll| --获取背包是否满 ?MpGzCPa function API_GetBagFull() \R79^ return ssr.IsBagToFull(isTips) 5Qy,Pkje end NA/+bgyuT> {F@;45)o --读取地图ID |I OTW=> function API_GetMapID() cgz'6q'T local tt = ssr.GetCurMapData() A]H+rxg return tt.mapID D|=QsWZI end @Cz1rKU^l /23v]HEPy --读取地图名称 5+ fS$Q
function API_GetMapName() }}_WZ},h local tt = ssr.GetCurMapData()
t8?+yG; return tt.mapName N" E\o,_ end "H G:by "Ww^?"jQ) --获取背包最大数 zEO
9TuBO function API_GetMaxBag() Jt)<RMQ^R return ssr.GetMaxBag() !^8'LMY<I end b]|7{yMV A=XM(2{aN --使用物品 <7PtC,74 function API_UseItem(itemName) *Gu=O|Mm local items = ssr.getQuickUseData() E"L'm0i[[ local item = ssr.getCurBagData() 0
?2#SM for k, v in pairs(items) do j<l>+.,
U if v.Name == itemName then e;!<3b ssr.UseItemByIndex(v.Index) :"QRB#EC% end $mlsFBd
end ^eZqsd8a brTB
/(E for k, v in pairs(item) do )9<)mV*EB( if v.Name == itemName then !. 0W?6yo ssr.UseItemByIndex(v.Index) \ g0 end U{ahA
end A@DIq/^xM end VKR6 i u"|.]r --获取金币数量 0hNc#x6 function API_GetMoney(Index) NEGpf[$ return ssr.GetMoneyCountById(Index) pn
=S%Qf] end K} ;uH, c!841~p(Q function API_MergeTables(t1, t2) .pdgRjlSn local merged = {} [fW:%!Y' for key, value in pairs(t1) do 4e%SF|(Y'h merged[key] = value GGLVv) end O]~p)E for key, value in pairs(t2) do c69C=WQ merged[key] = value UyF]gO end Eydk645:3 return merged el[6E0!@ end IF1?/D"< .5I1wRN49 L1D%vu` --获取物品数量 `mWg$e, function API_GetItemCount(itemName,isBind) Q0 ^?jh local items=ssr.getQuickUseData() H>Fy 2w local bagData=ssr.getBagData() |f
aXl3| items=API_MergeTables(items,bagData) 0&mz'xra local bind=isBind or false 99ZQlX local count=0 >5 i8%r for k,v in pairs(items) do 5k\61(*s if bind then 3b[_0 --绑定 BRW
if v.Name==itemName and v.Bind~=nil then FijzO count=count+ v.OverLap -AffKo end L~0B else a{-}8f6 --不绑定 ,YiBu^E9 if v.Name==itemName and v.Bind==nil then ;XTP^W!6f count=count+ v.OverLap Ybok[5 end ^(6.M\Q end GQ[\R&]q< end sXfx[)T< return count 9xWeVlfQ end 1$
l3-x --读取人物坐标 r-!8in2 Y)!5Z.K `U;4O)`n tZ6KU11O function API_GetMapXY() H
~$a6T"& local aa = ssr.GetMainPlayerMapPos() BGA.8qWR4 local aa = string.format("x=%s,y=%s" \?GMtM
,
, aa.x zb9$ , aa.y) 0<P
-` |X return aa N:d" {k end f-23.]`v Y]Xal
-- 获取角色是否活着 Z&21gN function API_IsRoleAlive() +1cK (Si return ssr.IsRoleAlive() 0&w.QoZY( end dwmj
*+ /[us;=CM --读取聊天信息 D vK}UAj= function API_ChatMsg() p oNQ<ijK local function listcb(msg)
zx\?cF --table 2pB@qi-] ChatTable = msg mk0rAN end N2x\O~7 ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) |#MA?oz3T if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then q'1rSK local ChatT = string.format( [1Vh3~>J6 "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" Y=Bk;%yT= , ChatTable.SendName p~M^' k=d , ChatTable.SendId S(rA96n , ChatTable.ChannelId D+k5e= , ChatTable.mt
o,X ? , ChatTable.SendTime 8WaVs 6 , ChatTable.Msg) T
"dEa-O return ChatT ^Ji5)c
end N]5-# end ^(a %B lJ}lO,g function API_ChatMaa() ^TDHPBlG return ssr.GetMaxBag() NB>fr#pb end {
\Q'eL8 h"q`gj --修理装备 q,+d\-+ function API_CopyTable(original) Mb+cXdZb local copy = {} #Ok*Or for key, value in pairs(original) do CRS/qso[Q' if type(value) == "table" then n*' |7 #; copy[key] = API_CopyTable(value) f4:gD*YT else 1'}~;?_ copy[key] = value d7l0;yR&+ end PiM@iS end zQD$+q5h return copy J;G+6C$: end
vu1F 修衣服 = "0,4" --衣服,头盔 O[q {y 修武器 = "1" P~=|R9t 修项链 = "3" CFn!P;.! 修手镯 = "5,6"
r6j
3A 修戒指 = "7,8" --左戒指 右戒指 `F(KM ' function API_Repair(npcName, itemPos) S^~GI$ local npcId = API_GetNpcIdByName(npcName) iGm[fxQ| local tempData = ssr.getEquipData() k+%6:r,r& local tobeRepair = {} ]JtK)9 for k, v in pairs(tempData) do rbs:qLa% if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then A<AZs~f local tmp = { J6|
5*|*^ Name = v.Name, DmPp& MakeIndex = v.MakeIndex, }}K44<]u Where = v.Where l*/I ;a$ } @@_f''f$ table.insert(tobeRepair, tmp) {3!v<CY' ssr.TakeOffEquipRequest(v) HP&+ 8 end llI`
"a end 4Yx?75/ --脱完 开始修理 CYs:P8^ for k, v in pairs(tobeRepair) do mVW:]|!s local Name = v.Name $c[8-= local MakeIndex = v.MakeIndex p]IF=~b local networkCtl = global.networkCtl NtSa#$A networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) #
(!> end sy#CR4X --开始穿 Qnph?t> local function ToDress() e=TB/W_ for k, v in pairs(tobeRepair) do vA
:1z$m ssr.TakeOnEquipRequest(v, v["Where"]) jsc1B end >STWt>s end L)J0TSh local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) (|"KsGl API_CloseNpcTalk() XkOsnI8n end Bo_Ivhe[m GuNzrKDr h0d;a t-i; 药店={0} Pf-k"7y 首饰店={19,20,21,22,23,24,26} 7k{C'\m 衣服店={10,11,15,16,27,28,62,64} iIA&\'|;i 武器店={5,6} M-"%4^8_ 杂货店={3,25,2,30,31} j:\MrYt0H 铁匠铺={43} 9:IVSD&"Rf 书店={4} 9UZKL@KC --检测背包是否有指定类型物品 HTvA]-AuM function API_IsNeedToStore(StdModes) R/xeC [r local function IsNeed(StdMode) %fo +Y+t local bagData=ssr.getBagData() 6Jrh'6o@ for k,v in pairs(bagData) do V-Oy< if v.StdMode==StdMode then >2,x#RQs return true ON\_9\kv end uI!rJc>TX end O}"VK local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) (n|
PLi local equip = EquipProxy:GetEquipData() m "h{HgJd for k,v in pairs(equip) do TE3A(N' if v.StdMode==StdMode then iE!\)7y if tonumber(v.Dura)/v.DuraMax < 0.9 then G!u
o
KiL return true 6ix8P;;}# end ^ ,d!K2` end u4, p.mZtb end U;Y{=07a@ return false 3g`uLA X>u end kR3g,P{L |Xlpgdiu for k,v in pairs(StdModes) do :4;ZO~eq! if IsNeed(v) then Cpz'6F^oP return true YJ3aJ^m#E end Ao69Qn end ,dLh`t<\ return false sjvlnnO end J
JPU! 4%0eX] [?Wt ZM^q --范围内怪物个数 bool型返回distance 'C)`j{CS function API_范围内怪物个数(distance, count) Om,+59ua* local proxyUtils = requireProxy("proxyUtils") Q
&<:W4N* local mainPlayerID = global.gamePlayerController:GetMainPlayerID() O=?WI
return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) z}&?^YU*)` end nm_]2z O --关闭NPC框 (i^
{\zv function API_CloseNpcTalk() 4siNY4i" global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) !-_0I:m global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) rzsb( end 8vOKm)[% --无怪随机 o['HiX function API_无怪随机() 1>r7s* local list = global.monsterManager.mMonstersInCurrViewField LJt#c+]Li local actors = {} q;3.pRw( for k, v in pairs(list) do }_vE
lBh6$ local actor = {} <,$(,RX actor["mID"] = v:GetID() `lX |yy" table.insert(actors, actor); *Fi`o_d9[` end PbvRh~n if #actors < 1 then J=JYf_=4bc API_UseItem("随机传送石") 6sJN@dFA local aa = API_GetItemCount(1078) ;Kob]
b if aa < 1 then (sHqzWh ssr.BuyStoreItemsById(2, 1) w]J9Kv1)- end d[9c6C:<q end AKk6kI8F return #actors tpwMy:<Ex end f 0A0uU8y R
@N
I --API_周围怪物数量 $!)Sgb function API_周围怪物数量() O0`sg90,C local list = global.monsterManager.mMonstersInCurrViewField /7/d
u[P6 local actors = {} w7@fiH{ for k, v in pairs(list) do
G?AZ%Yx local actor = {} '/trM %< actor["mID"] = v:GetID() .$pW?C 3e table.insert(actors, actor); iZ} w>1 end TPH`{ return #actors =Yg36J4[ end eKPxSN Z O$%M.C' --API_周围人物数量 参数是 白名单 (LbAP9Zj#f function API_视野内敌人(Name, lv) ^1^k< local list = global.playerManager.mPlayersInCurrViewField RY3ANEu+ local myName = global.gamePlayerController:GetMainPlayer():GetName()
jT}3Zn local actors = {} Vf9PHHH| local names = myName .. "," .. Name %5Hsd for k, v in pairs(list) do >>oR@ local actor = {} VJmX@zX9 actor["mID"] = v:GetID() rf^Q%ds actor["mName"] = v:GetName() , 7&`V=C actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] ZG:#r\a --local myName=global.gamePlayerController:GetMainPlayer():GetName() (99P9\[p if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then {>PN}fk2QP table.insert(actors, actor); pLjet~2}iJ end D/uGL
t~D( end F67%xz0 return #actors WDQtj$e+ end Y /$`vgqs g`I`q3EF) yV[9 ( --自动捡
AV{3f` API_NoBodyPickEnable=true "uf*?m3 QWz5iM --捡取物品白名单 +aR.t@D+"Y API_MyPlayerNames = "我不是药神," HI)MBrj;r qDHiyg^u --全图捡 2[6>h) API_MapPickEnable = true INtt0Cm9" --自动存 u>SGa @R) API_InStoreEnable=false ChO?Lm$y API_InStoreItems="" mO<sw --自动扔 g S xK9P API_ItemDropEnable=false d*Q:[RUf, --自动用 {5w'.Z]0v API_ItemKeepCountEnable=true HxCq6Y_m< --自动领取 U+: o y:mz API_GetMailItemEnable=false {@, } M --自动买回城石 Ww-%s9N< API_BuyStoneEnable=false 5{/CqUIl API_RecoveryItemMaxMoney=1000000 mCOJ1} --地图 erTb9`N4 API_PreMapName="盟重省" tl9=u-D13@ --开关 ]k~Vh[[ API_TimerEnable=true ['~j1!/;6 |<tZ| API_TimerEnable1s=true .#0),JJZ[ API_TimerEnable10s=true 9 f$S4O5 --1S定时器 {,EOSta function API_AutoSchedule1s() pie<jZt if GET_GAME_STATE() == "world" and API_TimerEnable1s then 3yg22y&l --自己设置的自动捡 t9T3e --API_PickItems() k.=67L --系统自动捡 Hbwjs?Vq?] if API_NoBodyPickEnable then Q M7z
.
if API_IsInCurrViewField(API_MyPlayerNames) then AKs=2N>7 API_OpenGroupPick(false) ."b=dkx --release_print("来人,关自动捡") C/V{&/5w --API_RunAway() --逃跑 Xvu|ss --API_UseItem3Second("回城石") {];4 else LoZ8;VU API_OpenGroupPick(true) Pl^-]~ API_PickItems() eLE9-K+ --release_print("无人,开自动捡") DE"KbA0} end D>"U0*h end }%LwaRT end (}E-+:vFU end U U!M/QJ --10s定时器 Cx$C+ function API_AutoSchedule10s() )#ze if GET_GAME_STATE()=="world" and API_TimerEnable then )P4#P2 --自动扔 {.F``2 if API_ItemDropEnable then kw)@[1U API_DropItemKeep("回城卷",2) n.zVCKNH end BkfWZ O{7 [)UF@Sq4+Q --自动组队 18JhC*in if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then k<W n API_InviteJoinTeam() 0=Jf93D5 API_TeamApplyUpdate() --允许所有邀请 clfi)-^{K end \%\b*OO [ox!MQ+s --自动用消耗品 {6MLbL{ if API_ItemKeepCountEnable then C {.{>M if API_GetItemCount("强效金创药") > 1 then +LddW0h+=8 API_UseItem("强效金创药") q)JG_Y.p end Z-[nHSf if API_GetItemCount("强效魔法药") > 1 then VesW7m*z API_UseItem("强效魔法药") Vlb L
p; end LL3RC6;e if API_GetItemCount("太阳水") > 1 then 8\c=Un API_UseItem("太阳水") pc
w!e_"+ end mw}obblR if API_GetItemCount("魔法药(中量)") > 7 then [?TQ!l} 8A API_UseItem("魔法药(中量)") .gUceXWH3 end mtDRF'>P: if API_GetItemCount("魔法药(中量)") < 1 then !R,9Pg*Ey API_UseItem("魔法药(中)包") aq3evm end |7WzTz if API_GetItemCount("金创药(中量)") > 1 then cqeId&Cg API_UseItem("金创药(中量)") uE:#m.Q end fX G+88:2 if API_GetItemCount("护身符(大)") < 1 then M%4o0k]E,s API_UseItem("回城卷") ,u QLXF2 end z.23i^Q if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then tF)K$!GR[ API_UseItem("回城卷") }|f\'S end #FF5xe if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then "hz(A.THi API_UseItem("回城卷") 'T[=Uuj" end :j$K.3n end >VP\@xt(R[ o*/\oVOq if API_GetMailItemEnable then oMda)5 & global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) yAEOn/.~ global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) >>krH'79 end {npKdX end (omdmT%D end qcke8Q OB3AZH$ --定时器 _J&u{ function API_TimerStart() en7i})v\". --1S定时开关 ] d| -r:4 if API_AutoScheduleID1s == nil then o)n8,k&nm API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) Zx25H"5j else Cq1t[a ssr.UnSchedule(API_AutoScheduleID1s) #Q6wv/"Ub API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) y<PPO6u7 end bf3LNV| --10S定时开关 x@.iDP@( if API_AutoScheduleID10s == nil then s9'g'O5 API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) #c4LdZu9 else Jf`;F : ssr.UnSchedule(API_AutoScheduleID10s) {d(PH7R API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) +`f gn9p end `ZN@L<I6 end H_;
Dq* function API_IsInCurrViewField(names, level) 'N=' B<^;% local lv = level or 0 $Z
10Zf= local nameList = names or "" .&7=ZY>E local list = global.playerManager.mPlayersInCurrViewField KtY~Y local actors = {} =B1t?(" for k, v in pairs(list) do 4q@o4C<0 local actor = {} #f.@XIt' actor["mID"] = v:GetID() Cd#*Wp
)s actor["mName"] = v:GetName() ?>q=Nf^ Q. actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] A4';((OXy if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then s5|LD'o! table.insert(actors, actor); m'k`
p5[=h end y=9a2[3Dz end -j3 -
H& if #actors > 0 then %H<w.]> return true fFXs:( else DWJ%r"aN return false 9 )B >|#\ end EN.yU!N.4 end $';'MoS 0x# 6L --打开组捡 F)e*w:D function API_OpenGroupPick(isOpen) O,qR$#l
local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) iBJ*6orz local count = 0 F&lc8 for key, value in pairs(GameSettingProxy._pickConfig) do #2yOqUO\ count = count + 1 * VW\ end :;0?;dpO local function SetGroup(pickgroup) {KwLcSn for i = 1, count do cdU2ph
_ GameSettingProxy:SetPickGroupValue(i, pickgroup) 9][Mw[k> end b{sE#m%r end (]1le|+ if isOpen then M
#S8x@U local pickgroup = { 1, 1, 1 } 3Un/-4uL SetGroup(pickgroup) Z+t?ah00 else m)_1->K local pickgroup = { 1, 1, 0 } +Q-~~v7, SetGroup(pickgroup) eV9:AN }K= end `H/H
LCt end +*0THol- BqZLqGOKu