游戏地址
/zV&ebN] www.fgcq996.com ]l/ PyX 那年传奇百区1.76 H;D5)eJ90 7\.{O$Q 找到 lua_State 然后调用下面的函数就能实现功能
oA+/F]XJ 一个跑单狗注意qq1946913194
!79eF) 游戏账号密码。fanren9527 qq2293307009 /h6K"w=='!
b%A+k"d 搞完演示完,删除好友跑单 pg0Sq9qCN }3HN$Fwo --自动寻路Ex
-,YoVB!T function API_AutoMoveEx(mapX, mapY)
]40@yrc ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
!:BmDX[<n local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
~[
a6 local pathPoints = inputProxy:GetPathFindPoints()
?E +[ if pathPoints == nil then
Z /G`8|A return 0
FqwH:Fcr: end
K)DpC* j return #pathPoints
1/\JJ\ end
C6` Tck! 3mP251"dIW --自动寻路
XSOSy2: function API_AutoMove(mapX, mapY)
\k
9EimT} ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
F .hA.E local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
%7}ibz4iF local pathPoints = inputProxy:GetPathFindPoints()
?2q4dx0 if pathPoints == nil then
.s-V:k5 return 0
W!
jg end
t nvCtuaR return #pathPoints
@{V bu end
T@H<Fm_ +YD_ L --停止寻路
ngLpiU0H& function API_AutoMoveEnd()
XiW~?
*Z global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
u7(<YSOs end
]Y;5U ,uoK'_ --自动打怪
1Y+g^Z;G function API_AutoFight(isAFK)
z*,J0)<Q if isAFK then
to,\sc if not IsAFKState() then
i(O+XQ}Fyx global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
2p|ed=ly% global.Facade:sendNotification(global.NoticeTable.AFKBegin)
'Bx"i end
y
<] x else
i U"2uLgb if IsAFKState() then
%^KNY ;E global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
K6Z/ global.Facade:sendNotification(global.NoticeTable.AFKEnd)
}t%2giJ end
4"^v]&I end
BWF>;*Xro end
$ VTk0J-W ;)Fc@OXN> function IsAFKState()
2]:Z7Ji local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
~8 S2BV3@ return AutoProxy:IsAFKState()
(Q(=MEar end
,II-:&H <rI8O;\H --打开自动穿戴
GtLnh~) function API_AutoDress()
)=TS)C4 --不抢别人归属
lY$9-Q( global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
7MZ(tOR global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
O_4j"0 local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
N!lQ;
o' ServerOptionsProxy._data["autoDress"] = 1
D;! aix3 global.ConstantConfig.autousetimes = 0
\%/Y(YVm end
XlJA}^e @V =
HY --强制打开自动挂机拾取
Xte"tf9(C function API_AutoPick()
6^vz+oN local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
]5a,%*f+ local config = ItemConfigProxy.config
1fMl8[!JLu for k, v in pairs(config) do
D}T+X;u)K --local res = string.gsub(v.pickset, "0", "1")
+yd{-iH v.pickset = v.pickset .. 1
nnZM{<!hF end
pq +~| end
>Q#\X=a> %X -G(Z --获取人物坐标
Qv
B%X)J function API_GetMapXY()
}cO}H2m return ssr.GetMainPlayerMapPos()
wOV}
<.W end
\Z8:^ct.P UPcx xtC --获取人物状态
(@i2a function API_GetAction()
*pSD[E>SU local player = global.gamePlayerController:GetMainPlayer()
dV7~C@k6k8 local list = global.playerManager.mPlayersInCurrViewField
v5A8"&Jr return player:GetAction()
)-\[A<( end
!n3J6%b9y/ >A.m`w --设置宠物状态
"w&G1kw5I function API_PetSleep(isSleep)
gJYX local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
kWZ/O if not SummonsProxy:IsAlived() then
:9]"4ktoJ return false
w,VUWja end
=bh.V@* if isSleep then
x.%x|6G* SummonsProxy:RequestModeChange(2)
`nv82v else
4l?"zv1 SummonsProxy:RequestModeChange(4)
oGKk2oP
end
el3lR((H end
|PutTcjQ chszP{-@X --获取人物数据
D:#e;K function API_GetGamePlayer()
s)5W:`MH? local player = global.gamePlayerController:GetMainPlayer()
dkAY%z two local list = global.playerManager.mPlayersInCurrViewField
+
0 |d2_]E local person = {}
RxUzJ person["等级"] = player:GetLevel()
{w52]5l person["职业"] = player:GetJobID()
->*'Y;t4 person["名字"] = player:GetName()
NsF8`rg person["金币"] = ssr.GetMoneyCountById(1)
[DSD[[
z[ person["元宝"] = ssr.GetMoneyCountById(2)
?bw1zYP person["绑金"] = ssr.GetMoneyCountById(3)
bR}=bp4K return person
XAb-K?) end
(aX6jdvo Np2.X+ function API_GetGamePlayerLevel()
!9g>/9h local player = global.gamePlayerController:GetMainPlayer()
uoMDf{d return player:GetLevel()
8omk4 ; end
ByivV2qd{ 56!/E
5qgW --获取周围怪物
2[~|6@n function API_GetMonster()
MD,+>kh local list = global.monsterManager.mMonstersInCurrViewField
n]a/nv local actors = {}
aqoxj[V^3L for k, v in pairs(list) do
k*k 9hv? local actor = {}
TKrh3
actor["mID"] = v:GetID()
D)GD9MJ actor["mName"] = v:GetName()
-iySU 6 actor["mRace"] = v:GetRace()
&k@r23V7r actor["mType"] = v:GetType()
$zD}hO9 actor["mSubType"] = v:GetSubType()
I3" GGp3L actor["mX"] = v:GetMapX()
tis
h%Qnpd actor["mY"] = v:GetMapY()
P<MNwdf(+ actor["mAction"] = v:GetAction()
dZ{yNh.] actor["mTypeIndex"] = v:GetTypeIndex()
_28vf Bl? actor["mAnimationID"] = v:GetAnimationID()
C,G$C7$% actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
-Ou@T#h" actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
zOT(>1' actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
,_!MI+o0 actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
Xw]L'+V= actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
1zWEK]2.R actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
We:b1sZR actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
-=VGXd actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
BjAmM*k actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
U`)o$4Bq actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
RJ~I?{yR0[ actor["mColor"] = "0xFFFFFF"
gvy c(d if v:GetType() == global.MMO.ACTOR_PLAYER then
D.Z4noMA6 local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
xyPz_9
local label_name = global.MMO.HUD_LABEL_NAME
sY@x(qkIOc local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
![hVTZ,hyZ if hudName then
'bx$}w N actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
HWxwG'EEY, end
K[M[0D end
G;yh$n<" table.insert(actors, actor);
+5oK91o[y end
AA~6r[*~ 5~E'21hJ return actors
KV]8
o' end
C
]+J ';Ew
-u --遍历周围玩家
(f>~+-IL function API_GetPlayer()
p}9bZKyf local list = global.playerManager.mPlayersInCurrViewField
P,ud"F=r local actors = {}
6U[bAp for k, v in pairs(list) do
<ecif_a=m local actor = {}
/qObXI actor["mID"] = v:GetID()
qJq2Z.>hy actor["mName"] = v:GetName()
s2;b-0 actor["mRace"] = v:GetRace()
vY'E+M"+@ actor["mType"] = v:GetType()
D/Hob actor["mSubType"] = v:GetSubType()
5$Da\?Fpn actor["mX"] = v:GetMapX()
Y/Q/4+ actor["mY"] = v:GetMapY()
g!.k> actor["mAction"] = v:GetAction()
).uR@j actor["mTypeIndex"] = v:GetTypeIndex()
sEm064 actor["mAnimationID"] = v:GetAnimationID()
~CQTPR
actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
>Z&Y!w'A|u actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
>uVr;,=y actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
1Aw/-FxJ actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
TYN~c( actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
3e7P
w`gLl actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
fLR\@f actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
a534@U4, actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
TF- k|##G actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
eZk4$
y actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
2SlOqH1 actor["mColor"] = "0xFFFFFF"
Z0Df~ @ if v:GetType() == global.MMO.ACTOR_PLAYER then
UCL aCt - local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
59Lmv
&s local label_name = global.MMO.HUD_LABEL_NAME
`2.2; Vk local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
k-XE|v
if hudName then
C3z#A3&J actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
zcE[wM end
GMJ</xG end
j_Qkw ? table.insert(actors, actor);
Jrm 9,7/ end
TaTs-]4 return actors
&(t/4)IZox end
k CVA~%d7 yx&'W_Q@ --遍历周围玩家EX
`D9AtN] R function API_GetPlayerExe()
m[%*O#_ local s1 = API_GetPlayer()
/R!/)sg local result = ""
'v:%} qMv for k, v in pairs(s1) do
>nOU 8 local s2 = string.format(
1@vlbgLr@ "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
'98 0. , v["mID"]
[(PD2GO+ , v["mName"]
)MlT=k6S , v["mRace"]
-
}2AXP2q , v["Dura"]
1Kc[).O1 , v["mType"]
NvU~? WN , v["mSubType"]
VdetY\ , v["mX"]
QGM@m:O , v["mY"]
5\\a49k.p , v["mAction"]
YH^h?s , v["mTypeIndex"]
qt{
{q , v["mAnimationID"])
RJO40&Z<Z local s3 = ""
+?[,{WtV 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"
4 g}'/ , v["mLv"]
i1k#WgvZR , v["mJobID"]
C=uYX" , v["mHP"]
Ut
hH , v["mHPMax"]
Mpu8/i
gX, , v["mMP"]
afNqK~ , v["mMPMax"]
8dYPn+` , v["mOwnerID"]
l1MVC@'pvP , v["mOwnerName"]
%
9lx)w , v["mGuildName"]
F|3iKK022 , v["mColor"])
di5>aAJ)D result = result .. s2 .. s3 .. "\r\n"
?OFl9%\ V end
v(vJ[_&% return result
Od5I:p]N end
-
T+7u :^[HDI-[2 --遍历周围指定NPC
TqN4OkCm/ function API_GetNpcIdByName(npcName)
daakawn+ local npcVec = global.npcManager:FindNpcInCurrViewField()
TE!+G\@ local npc = {}
D<:J6W7] for k, v in pairs(npcVec) do
AQ`
`Dp local npcs = {}
!Ey= npc[v["mID"]] = v["mName"]
TEY n^/n~ end
H 6~6hg for key, value in pairs(npc) do
GoTJm}[NP local sPos, ePos = string.find(value, npcName)
QFYO_$1Y) if sPos then
F#^<t$5t return key
Y&JK*d end
V.U9Q{y" end
vl67Xtk4 return nil
"-HmXw1+t end
1QPS=;|) #y:,owo3I --NPC名称打开NPC
+'f+0T\) function API_NpcTalk(npcName)
*dw6>G0U local npcid = API_GetNpcIdByName(npcName)
EBl? oN7E local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
}aC@o v]2 NPCProxy:RequestTalk(npcid)
C~:@ETcbil end
JX! @j3 MR{JMo=r --NPCID打开NPC
GZ@`}7b} function API_NpcTalkEx(npcid)
J jp)%c#_ local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
okv`+VeA NPCProxy:RequestTalk(npcid)
<yq
kJ end
HX&G
k n^P~]1i function API_GetNpcTalkData()
zXRq) ;s local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
Sq Y$\&% local talkData = NPCProxy:GetCurrentNPCTalkData()
2V6kCy@V return talkData
q*E<~!jL end
+9
1j 1? bx
rT[] function API_GetAllLink()
Spqbr@j local talkData = API_GetNpcTalkData()
$wBF'|eU Jv+N/+M47 local acts = {}
@V>BG8Y local kv = {}
?0%3~E`l: A)j',jE&1 for line in talkData.content:gmatch("(text=.->)") do
*fj5$T-Z if string.find(line, "@") then
~#^suy?
local key = line:match("text=(.-)|")
t5"g 9`A L O"6
(k{` local value = line:match("(@.-)>")
ZD(VH6<g% kv[key] = value
k(bDj[0q^ end
`{GI^kgJ9 end
P56B~M_ Uzzt+Iwm for result in talkData.content:gmatch("(@.-)>") do
XHER [8l table.insert(acts, result)
fC7rs 5 end
4
[K"e{W3 local sendData = {
o,D7$WzL UserID = talkData.npcID,
6";ew:Ih^ index = talkData.index,
>nqCUhS --Act = "@blbumj",
Jdc{H/10 --commonInput = jsonData.commonInput,
NZW)$c' --inputID= jsonData.inputID,
qjrl$[`X: }
*?v_AZ return acts, kv, sendData
:{Mr~Co* end
,^K}_z\9f kQt#^pO) --按索引号点击按
rTmVHt function API_ClickLinkByIndex(index)
(Q4hm ]< acts, kv, sendData = API_GetAllLink()
G3wkqd sendData["Act"] = acts[index + 2]
Wq}Y|0c local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
pcrarj NPCProxy:ExecuteWithJsonData(sendData)
n;+`%;6
end
K275{ydN nd4Z5=X --按索购买引号点击按
BGOajYD function API_ClickBuyLinkByIndex(index)
_yN&+]c acts, kv, sendData = API_GetAllLink()
|T) $E sendData["Act"] = acts[index]
z?I"[M local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
\)'5V!B|s NPCProxy:ExecuteWithJsonData(sendData)
FMNT0 end
oH]_2[
! d"0=.sA --按名称点击按
GVK c4HGt function API_ClickLinkByName(linkName)
n)t'?7 acts, kv, sendData = API_GetAllLink()
C4H$w:bVk sendData["Act"] = kv[linkName]
Zk:_Yiki& local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
bCL/"OB NPCProxy:ExecuteWithJsonData(sendData)
pg9feIW1 end
~cL)0/j} Zb4+zps^- --出售物品
WM8])}<
L function API_Sell(npcName,itemsName)
dMlJ2\]u local npcId=API_GetNpcIdByName(npcName)
>.o<}!FW local bagData=ssr.getBagData()
&rbkw<=j for k,v in pairs(bagData) do
w =2; QJ< if string.find(itemsName,v.Name) then
r>;(\_@ --if #v["Values"]<2 then
\WPy9kRU local Name = v.Name
/Y#Q<=X local MakeIndex = v.MakeIndex
_X]\#^UiO2 local networkCtl = global.networkCtl
3o^~6A networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
[fZhfZ)< --end
;#XF.l,u end
Z(Z$>P&4 end
bHK[Z5 end
y)K!l:X --全部卖
UY}EW`$#m function API_SellAll(npcName)
VYw<8AEFY local npcId=API_GetNpcIdByName(npcName)
?[#4WH-G local bagData=ssr.getBagData()
Memb
`3 for k,v in pairs(bagData) do
Y~Z&h?
H'} --if #v["Values"]<2 then
qF3s&WI local Name = v.Name
`P/87=h local MakeIndex = v.MakeIndex
~oX`Gih local networkCtl = global.networkCtl
[R(d Cq> networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
JKY --end
L}UrI&]V$: end
me
YS
W end
E@J}(76VS 8O| w(z 8JojKH --NPC购买
&ev#C%Nu function API_Buy(npcName,itemName,count)
cof+iI~9O% --进入子菜单
Ie7S'.Lmq local sendData =
!%/2^ {
P/,ezVb
= UserID = API_GetNpcIdByName(npcName),
Y;1s=B9 Name = itemName,
ys- w0H }
"BA& SendTableToServer(1015, sendData)
AvZOR local function ToBuy()
f7?u`"C local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
:/\KVz'fw} local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
XYze*8xUb for i=1,count do
qNX+!Y}y if i>#list then
J 7HOSFwXn break
U&o~U] rm end
d04fj/B
sendData.MakeIndex= list[#list-i].MakeIndex
IO{iQ-Mg SendTableToServer(1014, sendData)
-#`tS end
ZfU &X{ API_CloseNpcTalk()
x }.&?m end
=6d'/D#J local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
,E&W{b end
MZ:Ty,pw:O ,8)aKy zEk/#& function 打开子项(item)
9/PX~j9O? local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
d;g]OeF if item.SubMenu == 1 then
X&gXhr#dL\ NPCProxy:RequestNpcStoreItemList(item)
xA>3]<O end
T!1Np'12zF end
c?}{>ig/) ?OBB)hj function 子项购买(count)
H8A=]Gq
local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
&\W5|*`x- for i = 1, count do
/ xb37, if i > #list then break end
Eyh(257 NPCProxy:RequestNpcStoreBuy(list
) 4Ix~Feuph end )(h<vo)-zX end c8oE,-~ 9Idgib& --登录角色 o@qI!?p& >a)6GZ@ function API_LoginRole(index) JpZ3T~Wrf local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) GXwQ
)P5] LoginProxy:SetSelectedRoleByIndex(index) yPks,7U LoginProxy:RequestEnterGame() :MILOwF global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) l:(?|1_ end F-<c.
0;6 kPYQcOK8 --登录 97n,^t2F\ function API_Login(name, password) =/kT| local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) J@RV ^2 local data = {} ]ZS/9 $ data.type = 1 P,bis7X. data.username = name _Kv;hR> data.password = password {
PkPKp AuthProxy:RequestLogin(data) ]//Dd/L6 end i|N(=Z
= e^h4cC\^ --开门 ) %bY2
pk function API_EnterRoom(x, y)
U(\ ^!S1 local qq = ssr.GetCurMapData() n:[
LsbTk global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) /'L/O;H20 local function callback() P`y 0FKS ssr.AutoMoveBegin(x, y, qq.mapID) *]e
9/f end (P 9$Ei0fv SL:ScheduleOnce(callback, 0.5) 2l}3L end 6D29s]h2 Z`yW2ON$' --多开 *W<|5<<u@ function API_PcOpen() p}lFV,V LuaBridgeCtl:Inst():CheckClientCount(2)
fYzZW end ,,~|o3cfq aq$adPtu --盒子显示 ^fhkWx 4i function API_hezi() Ombvp; global.L_GameEnvManager._envData["isBoxLogin"] = 1 {3G2-$yb end J72YZrc _j?/O)M
c --遍历背包物品 AUwIF/>F(] function API_GetCurBagData() N Bpf local s1 = ssr.getCurBagData() 6@J)kV local result = "" $jN,]N~ for k, v in pairs(s1) do vLQh r&I local s1 = string.format( J-Wphc!m "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" FQw@@ , v["OverLap"] \"Aw
ATQ , v["DuraMax"] jHpFl4VPz , v["Where"] 7_]Bu<{f , v["Dura"] /@9-D
4 , v["Name"] +"D*0gYD , v["Shape"] |^t8ct?x~ , v["MakeIndex"] Zl7m:b2M , v["Weight"] ym6gj#2m , v["StdMode"] bS*oFm@u , v["Index"]) r&D&xsbQ local ss = "" so }Kb3 n if #v["Values"] > 1 then pu5-=QN for x, y in pairs(v["Values"]) do LYp=o8JW| if y["Value"] > 0 then QiQO>r local Values = string.format("m_Value=%s,m_ValueID=%s" y0cB@pWp , y["Value"]
av}pT)]\
, y["Id"]) ^?gs<-)B ss = ss .. Values j~`rc2n% end k?ksv+e\ end MUqV$#4@I end )Tj\ym-Vl result = result .. s1 .. "," .. ss .. "\r\n" r?wE ;gH end < c[dpK5c return result ^6Y:9+ end S`&YY
89{& hFr?84sAd --获取背包是否满 a*nx2d function API_GetBagFull() (ZHEPN return ssr.IsBagToFull(isTips) y3pr(w9A end 16n8[U! wE J?Y8 --获取背包百分比 /]"2;e-s+ function API_GetBagEx() O)9{qU:[b HW = ssr.GetMetaValueByKey("BW") kV3Z
t@+ MAXHW = ssr.GetMetaValueByKey("MAXBW") ?#_] Lzn' ELL = HW / MAXHW * 100 2?nhkast#= return math.ceil(ELL) exL<cN end |csR"DOqz 9Sk?tl --获取背包是否满 f
iu?mb=* function API_GetBagFull() Vq1ve;(8s return ssr.IsBagToFull(isTips) ]BBL=$* end \D,c*I|p7 H| 1O>p& --读取地图ID xbhU:,o function API_GetMapID() m@^!?/as local tt = ssr.GetCurMapData() cQldBc return tt.mapID y}!}*Qj+/ end rg{|/ ;imT x1{gw 5: --读取地图名称 ay,E!G&H function API_GetMapName() q$6Tb local tt = ssr.GetCurMapData() J\x.:=V return tt.mapName Vpsv@\@J> end "Rv],O" G!3d!$t
--获取背包最大数 mo-
Y % function API_GetMaxBag() 0N19R 5NN8 return ssr.GetMaxBag() q(I`g;MF end V+2C!)f( JJ$q * --使用物品 a'2^kds function API_UseItem(itemName) ]M5w!O! local items = ssr.getQuickUseData() `t~Zkb4> local item = ssr.getCurBagData() J)leRR& for k, v in pairs(items) do ',P E25Z if v.Name == itemName then N M_Xy<.~E ssr.UseItemByIndex(v.Index) m6oaO9"K end
uRfFPOYH end qg#|1J6e @>sZ'M2mq for k, v in pairs(item) do /htM/pR if v.Name == itemName then o7;#B)jWS ssr.UseItemByIndex(v.Index) #0;ULZ99aH end k(.6K[b end 1y($h< end {*J{1)2 X,"(G}KUA --获取金币数量 L\Y4$e9bF8 function API_GetMoney(Index) a@&P\"k return ssr.GetMoneyCountById(Index) _M;M-hk/ end o 0'!u k2cC:5Xf3 function API_MergeTables(t1, t2) K6l{wyMb| local merged = {} }L.&@P< for key, value in pairs(t1) do 3/q)%Z^= merged[key] = value QBI;aG<+b> end :AM5EO for key, value in pairs(t2) do rW(<[2 vg merged[key] = value 7r4|>F end 3.?kxac return merged @XL5$k[Y end d`+@
_)ea O^,%V{]6\ 5p7
?e3 --获取物品数量 1
||\3L/ function API_GetItemCount(itemName,isBind) mjtmN0^SR local items=ssr.getQuickUseData() ckTk2x
PQ local bagData=ssr.getBagData() ^<VJ8jk< items=API_MergeTables(items,bagData) [|!A3o local bind=isBind or false OEFALt local count=0 _`(WX;sK for k,v in pairs(items) do K-CF5i: if bind then hPB^|#} --绑定 zZax![Z if v.Name==itemName and v.Bind~=nil then bYKe5y= count=count+ v.OverLap
~!& "b1
end }[gk
9uM_7 else H${5pY_M --不绑定 gL:Vj%c if v.Name==itemName and v.Bind==nil then k ED1s's count=count+ v.OverLap 7}2Aq end ;mAlF>6]\ end uVn"'p- end Lm{qFu return count )Z0bMO< end yxx'g+D* --读取人物坐标 iir]M`A.- . h7`Q{ (L3Etan4RE c?0.>^,B Q function API_GetMapXY() 6SGV}dAx local aa = ssr.GetMainPlayerMapPos() Oe/\@f0bLT local aa = string.format("x=%s,y=%s" RMvq\J}w! , aa.x 9 cwy;au , aa.y) (q]_&%yW return aa iUua!uC end k:qS' .*(xkJI3 -- 获取角色是否活着 Sb& $xWL function API_IsRoleAlive() zY=eeG+4s return ssr.IsRoleAlive() vk&6L%_~a end ym=7EY?o 4
ru-q
F --读取聊天信息 ;qN;oSK function API_ChatMsg() P`xQL local function listcb(msg) (rfR:[JkC2 --table x[_SNX" ChatTable = msg
e#t7 end zvgy$]y'\ ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) ~]_U!r[FA if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then ;#Y'SK local ChatT = string.format( qLYz-P'ik "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" 4Nun-(q , ChatTable.SendName +\_c*'K> , ChatTable.SendId $,)PO
Z , ChatTable.ChannelId NrK.DY4 , ChatTable.mt -$2a@K,i
, ChatTable.SendTime U7do,jCoa , ChatTable.Msg) D02(
6| return ChatT !JGe
.U5 end DQ*T2*L end nUy. gAb *
",/7( function API_ChatMaa() NtfzAz/ return ssr.GetMaxBag() S<Os\/* end f)x(sk aJ/}ID --修理装备 E;tEmGf6F function API_CopyTable(original) V*<`!w local copy = {} qbsmB8rh for key, value in pairs(original) do pRys 5/&v if type(value) == "table" then LpYG!K l copy[key] = API_CopyTable(value) R9z:K_d, else L
GdM40 copy[key] = value x=M%QFe end 2t,N9@u=UN end ouE/\4'NB return copy tSVWO]< end Q_r}cL/A 修衣服 = "0,4" --衣服,头盔 JJZu%9~[ 修武器 = "1" rLpfybu 修项链 = "3" A+w
'quXn 修手镯 = "5,6" @y!oKF 修戒指 = "7,8" --左戒指 右戒指 -Is;cbfLj/ function API_Repair(npcName, itemPos) xMs!FMn
[ local npcId = API_GetNpcIdByName(npcName) b$;qtfJG local tempData = ssr.getEquipData() cTJi8f=g local tobeRepair = {} \5iMr[s for k, v in pairs(tempData) do n muzTF
s= if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then 2Wn*J[5 local tmp = { :*} -,{uX Name = v.Name, 'EHtA9M MakeIndex = v.MakeIndex, o"!C8s_6 Where = v.Where %;eD.If} } -^aJ}[uaI table.insert(tobeRepair, tmp) MO>9A,&f ssr.TakeOffEquipRequest(v) d@XXqCR< end U
#C@&2 end \_]X+o; --脱完 开始修理 (hJ&`Tt for k, v in pairs(tobeRepair) do ;p+[R+ ) local Name = v.Name #PkZi(k
hv local MakeIndex = v.MakeIndex mPL0s local networkCtl = global.networkCtl T!7B0_ networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) l+A)MJd oj end x fa- --开始穿
;aN_!!
r local function ToDress() 7 'q *(v for k, v in pairs(tobeRepair) do 64i
*_\UKe ssr.TakeOnEquipRequest(v, v["Where"]) @xXVJWEU: end g&*,j+$ } end XkPE%m_5D local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) D"V(A \sZ API_CloseNpcTalk() $*Kr4vh end KTq+JT u hp1+9vEN OUk"aAo l
+a1 `O 药店={0} L</k+a?H! 首饰店={19,20,21,22,23,24,26} hYht8?6}m 衣服店={10,11,15,16,27,28,62,64}
&,l(2z[ 武器店={5,6} AP:Q]A6} 杂货店={3,25,2,30,31} (^NYC$ZxM= 铁匠铺={43} 9{wRqY 书店={4} [=BccT:b --检测背包是否有指定类型物品 5%%e$o+ function API_IsNeedToStore(StdModes) 3_ly"\I\ local function IsNeed(StdMode) v YJ9G"E local bagData=ssr.getBagData() ?g9:xgkF
^ for k,v in pairs(bagData) do j'k
< if v.StdMode==StdMode then c'.XC} return true 2
EWXr+IU. end N[rAb*iT end r~z'QG6v/ local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) U`aB&[=$ local equip = EquipProxy:GetEquipData() V3>tW,z for k,v in pairs(equip) do 6_s(Kx>j if v.StdMode==StdMode then Z)}UCi+/". if tonumber(v.Dura)/v.DuraMax < 0.9 then i\,I)S%yJ return true q6,z 1A" end /9e?uC6 end B[k=6EU8k end <D[0mi0 return false >UQY3C end ) ViBH\.*p +Bf?3 5LP for k,v in pairs(StdModes) do !:PiQ19
'u if IsNeed(v) then FUarI5#fwF return true vc :% end o! l Ykud end VsJiE0'% return false 9Pb6
Z} end )q66^%;S Cz)&R^
$nb.[si\ --范围内怪物个数 bool型返回distance Ptc+ypTu function API_范围内怪物个数(distance, count) 1<Sg
@ local proxyUtils = requireProxy("proxyUtils") ]rv4O@||w local mainPlayerID = global.gamePlayerController:GetMainPlayerID() Pa6pq;4St return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) [#9i@40 end WfD fj --关闭NPC框 OXm`n/64+ function API_CloseNpcTalk() P)kJ[Zv>f global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) 6`@b@Kd global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) DXo]O}VF end jsQHg2Vd --无怪随机 _jc_(;KPF function API_无怪随机() 0k#7LubWZl local list = global.monsterManager.mMonstersInCurrViewField Z\$M)e8n local actors = {} u&w})`+u5 for k, v in pairs(list) do QtwQVOK local actor = {} Wqkb1~]#Y actor["mID"] = v:GetID() X$;&Mdo. table.insert(actors, actor); [~u!*W end *s,[Uy
![ if #actors < 1 then lLp,sNAj API_UseItem("随机传送石") Cs_&BSs local aa = API_GetItemCount(1078) >.6|\{*sG if aa < 1 then *E
*oWb]H ssr.BuyStoreItemsById(2, 1) {zWR)o .= end D<m0G]Ht* end X@"G1j >/ return #actors 8PzGUn;\ end fZezDm(Q +J|H~` --API_周围怪物数量 |{&M#qXe function API_周围怪物数量() n>?D-)g local list = global.monsterManager.mMonstersInCurrViewField R{fJ"Q5' local actors = {} >MGWN for k, v in pairs(list) do c}+*$DeT local actor = {} hJ$9Hb actor["mID"] = v:GetID() <sw@P":F table.insert(actors, actor); z)S6f79`Q end {vGJ}q?Sd" return #actors zGFD71=# end Z6rhInIY @
zC6` --API_周围人物数量 参数是 白名单 {nbT$3=Zt function API_视野内敌人(Name, lv) ;F#(:-: local list = global.playerManager.mPlayersInCurrViewField f-G)pHm local myName = global.gamePlayerController:GetMainPlayer():GetName() 'L7qf'RV local actors = {} qXg&E}]:= local names = myName .. "," .. Name 'w27Lt'V for k, v in pairs(list) do *I)J%# local actor = {} uN:KivVe actor["mID"] = v:GetID() Km;}xke6 actor["mName"] = v:GetName() +rJ6DZ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] <(q(5jG --local myName=global.gamePlayerController:GetMainPlayer():GetName() K
J\kR if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then 58Ce>*~ table.insert(actors, actor); >UMxlvTg& end :oXSh;\ end ^3TNj
return #actors P+0'^:J end +?Ii=* 7n X3\PVsH$K 6,A|9UX=` --自动捡 F?|Efpzow? API_NoBodyPickEnable=true 2}A)5P*K !JDr58 --捡取物品白名单 %W"u4
NT7 API_MyPlayerNames = "我不是药神," uMEM7$o pY`$k#5 --全图捡 bAPMD API_MapPickEnable = true 755,=U8'wi --自动存 n&njSj/ API_InStoreEnable=false ~<?Zj API_InStoreItems="" )"S%'myj --自动扔 l[Z o,4* API_ItemDropEnable=false A<ds+0 --自动用 7ocUFY0" API_ItemKeepCountEnable=true J(l\VvK --自动领取 KGYbPty} API_GetMailItemEnable=false 4LKpEl.= --自动买回城石 2n
,z`(= API_BuyStoneEnable=false &{V |%u}v API_RecoveryItemMaxMoney=1000000 `Pvi+:6\Y --地图 |Dn Zk3M, API_PreMapName="盟重省" [ ,;e,ld --开关 2%
sZ
aM API_TimerEnable=true UZI:st
taE
p API_TimerEnable1s=true r8s>s6vm API_TimerEnable10s=true ]>1Mq,! --1S定时器 s/tLY/U/ function API_AutoSchedule1s() >$JE!.p%o if GET_GAME_STATE() == "world" and API_TimerEnable1s then Y(g_h:lf,] --自己设置的自动捡 CefFUqo4 --API_PickItems() hSm?Z!+ --系统自动捡 509T?\r if API_NoBodyPickEnable then Z)s
!p if API_IsInCurrViewField(API_MyPlayerNames) then hzsQK_;S API_OpenGroupPick(false) 2y
-
QH --release_print("来人,关自动捡") @G"nkB
--API_RunAway() --逃跑 )Ka-vX)D@ --API_UseItem3Second("回城石") S=_u3
OH0 else J<0{3pZY API_OpenGroupPick(true) 9wYm(7M6 API_PickItems() ^OKm ( --release_print("无人,开自动捡") ?6CLUu|7n end pUHgjwT'U end ! :&SfPv end ,~Mf2Y#m0p end Uj7YTB --10s定时器 AioW*`[WjA function API_AutoSchedule10s()
CPJ21^ if GET_GAME_STATE()=="world" and API_TimerEnable then ;k!.ey$S --自动扔 `;j1H<L if API_ItemDropEnable then ]lwf6' API_DropItemKeep("回城卷",2) &<N8d(
end 9^XZ|` x4I!f)8Q --自动组队 |dgiW"tUm if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then ~JT`q:l-q API_InviteJoinTeam() g{V(WyT@ API_TeamApplyUpdate() --允许所有邀请 p<
7rF_?W0 end <=NnrZOF _d]{[&
p4t --自动用消耗品 1kvX#h&V if API_ItemKeepCountEnable then FBXktSg if API_GetItemCount("强效金创药") > 1 then 1eD#-tzV API_UseItem("强效金创药") Mt4
end 3Y)&[aj if API_GetItemCount("强效魔法药") > 1 then ,Vi_~b API_UseItem("强效魔法药") 9<u&27. end q-(~w!e if API_GetItemCount("太阳水") > 1 then z\m$>C| API_UseItem("太阳水") CtCReH03 end G`!,>n 3 if API_GetItemCount("魔法药(中量)") > 7 then e3ZRL91c API_UseItem("魔法药(中量)") 6Cy Byj& end oJTEN}fL if API_GetItemCount("魔法药(中量)") < 1 then $mPR)T API_UseItem("魔法药(中)包") nLm'a_ end N|yA]dg[ if API_GetItemCount("金创药(中量)") > 1 then uVqc:Q" API_UseItem("金创药(中量)") KNeVSZT end =MqEbQn{C3 if API_GetItemCount("护身符(大)") < 1 then )Z:-qH
API_UseItem("回城卷") d~aTjf end |KhpF1/( if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then LA6XTgcu API_UseItem("回城卷") Yh1</C end p6- //0qb if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then `,V&@}&"n API_UseItem("回城卷") 6>WkisxG end +S~ u ,= end jr`T6!\ Z;uKnJh if API_GetMailItemEnable then 7KlL%\ global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) c,r6+oX global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) z\|<h=EU end ] V/5<O1 end 8XH;<z<oJ end =8l' [ DghyE` --定时器 0kUhz\"R:q function API_TimerStart() wrkw,H --1S定时开关 &u:U"j if API_AutoScheduleID1s == nil then z -?\b^ API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) cIO/8D#zU else .V!5Ui< ssr.UnSchedule(API_AutoScheduleID1s) |B(,53 API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) 791v>h end I%4eX0QY=z --10S定时开关
ck;:84 if API_AutoScheduleID10s == nil then (Iv@SiZf( API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) t%mi#Gh( else e)HFI|> ssr.UnSchedule(API_AutoScheduleID10s) >J9Qr#=H2 API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) l iY/BkpH end /uWUQ#9 end niS\0ZA function API_IsInCurrViewField(names, level) pss')YP. local lv = level or 0 :7(fBf5 local nameList = names or "" Sqp91[, local list = global.playerManager.mPlayersInCurrViewField d[h=<?E5 local actors = {} c^_+<C-F for k, v in pairs(list) do F7} yt local actor = {} Ue9d0#9 actor["mID"] = v:GetID() SVa^:\"$[ actor["mName"] = v:GetName() 46f-po_ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] mCnl@ if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then qg j;E=7 table.insert(actors, actor); S8v,'Cc end KYTXf+ oh end Lj /^cx if #actors > 0 then eV_",W return true MTwzL<@$ else yHY2 SXm return false ~Xx}:@Ld end P=}l.R*1G end [p4([ef
' hzAuj0-A --打开组捡 x<t?Yc9 function API_OpenGroupPick(isOpen) @w33u^ local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) 9uxoMjR- local count = 0 Ne9VRM
P for key, value in pairs(GameSettingProxy._pickConfig) do %5L~&W}^" count = count + 1 sB0]lj-[Un end XyB_8(/E local function SetGroup(pickgroup) qi@Nz=t#HJ for i = 1, count do ZW))Mx#K=T GameSettingProxy:SetPickGroupValue(i, pickgroup) Mprn7=I{Tg end #: EhGlq8 end "X<V>q$0~c if isOpen then `$"{- local pickgroup = { 1, 1, 1 } c
CjN8< SetGroup(pickgroup) Vb\^xdL> else JSFNn]z2P local pickgroup = { 1, 1, 0 } Zq{gp1WC SetGroup(pickgroup) ~&,S xQT end sfVzVS[ end E.C=VfBW \HD:#a