游戏地址
QIij>!c4 www.fgcq996.com &\"Y/b
] 那年传奇百区1.76 !B [1zE ]r/(n]=( 找到 lua_State 然后调用下面的函数就能实现功能
MtZt8s 一个跑单狗注意qq1946913194
w69>tC 游戏账号密码。fanren9527 qq2293307009 wGOMUWAt
P[rAJJN/E 搞完演示完,删除好友跑单 2I]]WBW#: UM4@H1 --自动寻路Ex
.8T\Nr\~2 function API_AutoMoveEx(mapX, mapY)
*Nvy+V ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
k_*XJ <S!Y local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
_&; ZmNNhc local pathPoints = inputProxy:GetPathFindPoints()
^i{,z*vi if pathPoints == nil then
ilDJwZg
# return 0
k
Zk .]b end
U OR _M
5 return #pathPoints
}.fL$,7a end
Exep
+x- NK+FQ^m[ --自动寻路
|`_ <@b function API_AutoMove(mapX, mapY)
E1c>nrnh* ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
@9_nwf~X4 local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
&7L~PZ local pathPoints = inputProxy:GetPathFindPoints()
/e.FY9 if pathPoints == nil then
zQL!(2 return 0
F-$Z,Q]S end
0M#N=%31 return #pathPoints
K[Yc<Q end
QO5OnYh vQ:x%=] --停止寻路
S}zC3 function API_AutoMoveEnd()
$"Y3mD}?L global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
2UU2Vm_6 end
b(q$j/~ zb l9_m>X~ --自动打怪
ojN`#%X function API_AutoFight(isAFK)
!: m`9o
8 if isAFK then
`j"4: if not IsAFKState() then
H{j~ihq7 global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
?JuX~{{.L global.Facade:sendNotification(global.NoticeTable.AFKBegin)
H<V+d^qX\w end
%:"
RzHN else
'fS?xDs-v if IsAFKState() then
,(
j>)g2Ob global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
PzIy">plm global.Facade:sendNotification(global.NoticeTable.AFKEnd)
pGY [f@_x- end
v$t
{o{3 end
@
\!KF*v end
r> Fec Xy[}G p function IsAFKState()
eZynF<i local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
!?BW_vY return AutoProxy:IsAFKState()
`[X6#`< end
rU;
g0'4e *mf}bTiS --打开自动穿戴
sEoZ1E function API_AutoDress()
i Bi7| --不抢别人归属
ow-+>Y[qZ global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
G+ :bL S#: global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
y!S^xS local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
qzz[y#q( ServerOptionsProxy._data["autoDress"] = 1
i%xI9BO9 global.ConstantConfig.autousetimes = 0
D4AEZgC F, end
q|n97.vD M{*kB2jr --强制打开自动挂机拾取
6
eD(dZ function API_AutoPick()
>ysriPnQ local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
:_MP'
0QP local config = ItemConfigProxy.config
K{|w 43>D for k, v in pairs(config) do
BD hLz --local res = string.gsub(v.pickset, "0", "1")
p:Iw%eZ: v.pickset = v.pickset .. 1
L5R `w&Up end
B:e.gtM5 end
vAi"$e 3|q2rA --获取人物坐标
~;}\zKQKE function API_GetMapXY()
Lqg]Fd return ssr.GetMainPlayerMapPos()
vkd *ER^ end
M,&tA1CH $b4*/vMr --获取人物状态
*]FgfttES function API_GetAction()
zs4>/9O local player = global.gamePlayerController:GetMainPlayer()
T48BRVX-F local list = global.playerManager.mPlayersInCurrViewField
<"N:rn{Qq return player:GetAction()
9Kc0&?q@D end
+VwV5iy[` $RpFxi
--设置宠物状态
\^yXc*C function API_PetSleep(isSleep)
w-J"zC local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
lrCm9Oy if not SummonsProxy:IsAlived() then
AeN 3<|RN return false
5RW@_%C end
NI^{$QMj if isSleep then
"PMO SummonsProxy:RequestModeChange(2)
-y%QRO( else
w"q-#,37j SummonsProxy:RequestModeChange(4)
+IvNyj| end
VxNXd? end
L?C\Q^0"`G |Es0[cU --获取人物数据
K-Re"zsz function API_GetGamePlayer()
pV8[l) J local player = global.gamePlayerController:GetMainPlayer()
T]^?l local list = global.playerManager.mPlayersInCurrViewField
[C~fBf5 local person = {}
hl`u"?rg person["等级"] = player:GetLevel()
w(/7Jt$ person["职业"] = player:GetJobID()
]Fxku<z7| person["名字"] = player:GetName()
vxb@9eb!H person["金币"] = ssr.GetMoneyCountById(1)
ol50d73B person["元宝"] = ssr.GetMoneyCountById(2)
aXC!t person["绑金"] = ssr.GetMoneyCountById(3)
%z30=?VL return person
gRHtgR)T3 end
?vvG)nW %y
eu" function API_GetGamePlayerLevel()
hMv2"V-X local player = global.gamePlayerController:GetMainPlayer()
8IeI0f"
l) return player:GetLevel()
-jFP7tEv end
`4_c0q)N4 # ?_#!T| --获取周围怪物
2v4W6R function API_GetMonster()
:RHm*vt local list = global.monsterManager.mMonstersInCurrViewField
X|,["Az
8 local actors = {}
#kj~G]QA for k, v in pairs(list) do
+.=1^+a local actor = {}
;;M"hI3@ actor["mID"] = v:GetID()
46ILs1T6 actor["mName"] = v:GetName()
l/[pEUYU actor["mRace"] = v:GetRace()
V5~fMsse
actor["mType"] = v:GetType()
)u<eO FI+ actor["mSubType"] = v:GetSubType()
/ HL_$g< actor["mX"] = v:GetMapX()
nMkOUW:T! actor["mY"] = v:GetMapY()
7vw;Egd@@- actor["mAction"] = v:GetAction()
f#1/}Hq/I actor["mTypeIndex"] = v:GetTypeIndex()
{y1q7Z.M actor["mAnimationID"] = v:GetAnimationID()
ti}f&w
ICJ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
Vu=] O/ =P actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
}4Zkf<#7$ actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
UAdz-)$ actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
B&
"RS actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
lVP |W:~K actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
eap8*ONl actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
Cpe#[mE actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
Oc#>QZ3 actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
W8y$Ve8m actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
r|<6Aae& actor["mColor"] = "0xFFFFFF"
oooS s&t if v:GetType() == global.MMO.ACTOR_PLAYER then
},&h[\N{6 local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
Y|_O8[ local label_name = global.MMO.HUD_LABEL_NAME
nX )f'[ 7 local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
g@Ld
"5$^2 if hudName then
d @m\
f actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
Gy9
$Wj end
F.68iN} end
ZvH?3Jy table.insert(actors, actor);
z"EWj73 end
0 k9<& 7|Xe&o<n return actors
g>_OuQ|c end
%Uf'+!4l`
oXdel
Ju? --遍历周围玩家
;I+H>$%jZ function API_GetPlayer()
|U EC local list = global.playerManager.mPlayersInCurrViewField
)(lJT&e local actors = {}
*Z; r
B for k, v in pairs(list) do
V3Yd&HVWNQ local actor = {}
St+ "ih% actor["mID"] = v:GetID()
^zgacn actor["mName"] = v:GetName()
TU%bOAKF\ actor["mRace"] = v:GetRace()
2[ksi51y actor["mType"] = v:GetType()
?~Pv3'%d actor["mSubType"] = v:GetSubType()
&sdx`, actor["mX"] = v:GetMapX()
6Kp}_^|z actor["mY"] = v:GetMapY()
>nK%^
T actor["mAction"] = v:GetAction()
yyjw?#\8 actor["mTypeIndex"] = v:GetTypeIndex()
F{\=PCZ>7 actor["mAnimationID"] = v:GetAnimationID()
#jm@N7OZ actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
m<3w^mww actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
tvGlp)?. actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
F 5U|9< actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
|kc@L`7s actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
Y.NE^Vn0 actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
6A?8t
m/0 actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
t0.;nv@A0 actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
#3+~.,X9 actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
l#$TYJi actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
*7Xzht&f actor["mColor"] = "0xFFFFFF"
(-(QDRxK if v:GetType() == global.MMO.ACTOR_PLAYER then
r8,om^N6 local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
@D]l
gq[ local label_name = global.MMO.HUD_LABEL_NAME
<aXoB*Y
local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
C `6S}f, if hudName then
5B?i(2 actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
Im+7<3Z end
Yz\
N&0" end
x6v,lR table.insert(actors, actor);
m8+:=0|$ end
'60//"9>k/ return actors
nA+F end
Z9VR]cf? {[P!$
/ --遍历周围玩家EX
6OtVaT=}<O function API_GetPlayerExe()
:BD>yOlG local s1 = API_GetPlayer()
s4bv;W local result = ""
#Kl}= 1
4 for k, v in pairs(s1) do
ot }6D local s2 = string.format(
#q;z8 @ "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
|z*>ixK
, v["mID"]
#)]E8=} , v["mName"]
, D"]y~~I5 , v["mRace"]
Wq
QU@sA , v["Dura"]
$UC {"0 , v["mType"]
/NU103F yt , v["mSubType"]
5gshKmt_ , v["mX"]
]-bQNYKX , v["mY"]
n}OU Y , v["mAction"]
?-,6<K1 , v["mTypeIndex"]
8kH<$9 , v["mAnimationID"])
o0mJ
y' local s3 = ""
?
|VysJ 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"
S/7l/DFb , v["mLv"]
ZLrHZhP-+ , v["mJobID"]
V%51k{ , v["mHP"]
ISBF\ wQY , v["mHPMax"]
PJK9704 6 , v["mMP"]
;MPKJS68@ , v["mMPMax"]
9go))&`PJL , v["mOwnerID"]
9yL6W'B! , v["mOwnerName"]
\=fh-c(J, , v["mGuildName"]
fEwifSp. , v["mColor"])
PIxjM> result = result .. s2 .. s3 .. "\r\n"
,H{={aln end
4.w"(v9 V return result
UP8{5fx' end
U=QA e WFDCPQ@
--遍历周围指定NPC
,Xtj;@~- function API_GetNpcIdByName(npcName)
SiTeB)/ local npcVec = global.npcManager:FindNpcInCurrViewField()
:tbd,Uo local npc = {}
$r15gfne> for k, v in pairs(npcVec) do
F0.z i>5 local npcs = {}
(w$'o*z;( npc[v["mID"]] = v["mName"]
H+x#gK2l end
lDN?|YG for key, value in pairs(npc) do
F#|Z# Mu local sPos, ePos = string.find(value, npcName)
mNDuwDd$S if sPos then
T5e^J" return key
q.T:0| end
5v|EAjB6o end
ix*muVBj. return nil
x0<^<D &Q end
K*+6`z#fMF 0OWL --NPC名称打开NPC
[K:29N9~4 function API_NpcTalk(npcName)
'RLOV local npcid = API_GetNpcIdByName(npcName)
t!qwxX*$T local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
Nw pS)6<-
NPCProxy:RequestTalk(npcid)
QBihpA1; end
O{q&]~, =/}X$,@2 --NPCID打开NPC
/b%Q[
Ck_ function API_NpcTalkEx(npcid)
A ~&+F>
Z local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
x{hn2]6+eB NPCProxy:RequestTalk(npcid)
YgimJsm end
N RSU+D-z ~kb{K; function API_GetNpcTalkData()
i}lRIXjdV local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
0*yJ % local talkData = NPCProxy:GetCurrentNPCTalkData()
}_%P6 return talkData
ir&.Z5= end
GFL-.?
0 i/$SN-5}1 function API_GetAllLink()
B*79qq local talkData = API_GetNpcTalkData()
;?~
9hN! G~!C=l local acts = {}
"%
Y u
wMY local kv = {}
>nM%p4E -nR\,+N for line in talkData.content:gmatch("(text=.->)") do
x~+-VF3/ if string.find(line, "@") then
V^rW?Do local key = line:match("text=(.-)|")
BY(
eV! J?D\$u: local value = line:match("(@.-)>")
1;&T^Gdj kv[key] = value
KB[QZ`"%! end
ChE_unw end
CDCC1B G" GY-M.|% for result in talkData.content:gmatch("(@.-)>") do
ti9}*8 table.insert(acts, result)
'5rUe\k end
W[|[;{ local sendData = {
<L&eh&4c UserID = talkData.npcID,
Ue7 6py9 index = talkData.index,
Ac\W\=QvB --Act = "@blbumj",
!^v\^Fc --commonInput = jsonData.commonInput,
LNiS`o\ --inputID= jsonData.inputID,
}0{B }
?\Q0kr.T% return acts, kv, sendData
AP w6 end
}N,>A-P 1X&B:_ --按索引号点击按
l RND function API_ClickLinkByIndex(index)
P']Y(
!L acts, kv, sendData = API_GetAllLink()
=x
H~ww (D sendData["Act"] = acts[index + 2]
Xw^X&Pp local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
&t_h'JX& NPCProxy:ExecuteWithJsonData(sendData)
<[hz?:G"$ end
ea~i-7 d+5:Qrr --按索购买引号点击按
fA^SD"xf function API_ClickBuyLinkByIndex(index)
Sk=N [hwU acts, kv, sendData = API_GetAllLink()
w~N-W8xNR sendData["Act"] = acts[index]
>FF1)~ local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
[hHG. NPCProxy:ExecuteWithJsonData(sendData)
/s`;9)G]9 end
j
-32S! MGybGbd --按名称点击按
Z*eoA function API_ClickLinkByName(linkName)
6K 4+0xXv acts, kv, sendData = API_GetAllLink()
d~`-AC+ sendData["Act"] = kv[linkName]
p;`N\.ld local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
eq hAus?) NPCProxy:ExecuteWithJsonData(sendData)
p(?3
V end
m&Sp1=*Ejy x)R0F\_ --出售物品
~6d5zI4\ function API_Sell(npcName,itemsName)
F$yeF^\g local npcId=API_GetNpcIdByName(npcName)
Pux)>q] C local bagData=ssr.getBagData()
. r`[ for k,v in pairs(bagData) do
euZI`*0 if string.find(itemsName,v.Name) then
^'W%X --if #v["Values"]<2 then
g+|Bf&_ local Name = v.Name
{D,RU8& local MakeIndex = v.MakeIndex
V(..8}LlD local networkCtl = global.networkCtl
(}~ucI<~ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
Z,aGtJ.a'9 --end
PEzia}m end
sTOFw;v% end
hdg<bZk: end
U~/ID --全部卖
n7DLJ`ho{ function API_SellAll(npcName)
3G
d|YRtk local npcId=API_GetNpcIdByName(npcName)
Q52bh'cuU local bagData=ssr.getBagData()
C #aFc01B for k,v in pairs(bagData) do
xb`CdtG2. --if #v["Values"]<2 then
S@A<6 local Name = v.Name
usH%dzKK local MakeIndex = v.MakeIndex
_FsB6
G]mc local networkCtl = global.networkCtl
f_'"KF[% networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
-tyaE --end
yVY
kuO end
ke6n/ h5` end
e5OVq
, *"T+G*~ gjZx8oIoP --NPC购买
SQ <f function API_Buy(npcName,itemName,count)
fIkT"
? --进入子菜单
PbEQkjE local sendData =
hr~.Lj5^W {
@C_ =* UserID = API_GetNpcIdByName(npcName),
Efr3x{ j Name = itemName,
tJm{I)G }
Tf[dZ(+\ SendTableToServer(1015, sendData)
o9+Q{|r local function ToBuy()
!I7 ? local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
x4 hO$3o local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
j@t{@Ke for i=1,count do
K~@`o-Z[ if i>#list then
O6]u!NqG break
PbN3;c3 end
!NA`g7' sendData.MakeIndex= list[#list-i].MakeIndex
L*^
V5^- SendTableToServer(1014, sendData)
vJThU$s- end
?*+1~m> API_CloseNpcTalk()
rKIRNc#d end
7LdzZS0OM local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
fTgbF{?xh end
LG6I_[ +{*)}[w{x 5rN7':(H!% function 打开子项(item)
?i%nMlcc local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
FfSI n3 if item.SubMenu == 1 then
a7*COh NPCProxy:RequestNpcStoreItemList(item)
]bu9-X&T& end
xVTo4-[p end
vX.]hp5~ -XW8 LaQB function 子项购买(count)
2@*<9-9 local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
D aDUK? for i = 1, count do
UM\}aq=, if i > #list then break end
yxY
h?ka NPCProxy:RequestNpcStoreBuy(list
) +wA p,Xr end KBj@V6Q end ~'{VaYk]v |*1xrM:v~ --登录角色 %I}'Vb{C CjV7q y function API_LoginRole(index) rXDJ:NP local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) ;-Ado8 LoginProxy:SetSelectedRoleByIndex(index) ==` Pb LoginProxy:RequestEnterGame() %ET
#
z! global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) WL/5 oj end tvCcyD%w wPQ&Di*X} --登录 ^XNw$@&', function API_Login(name, password) t%HI1eO7h local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) FE}s#n_Pd local data = {} kwc*i
s data.type = 1 <(?'
s9 data.username = name xD^wTtT data.password = password
pJ6Jx( AuthProxy:RequestLogin(data) E4Zxv* end DZ2Fl>7 ydyG}XI7V --开门 J@gm@ jLc function API_EnterRoom(x, y) "u5KbJW local qq = ssr.GetCurMapData() Z*Zc]hD global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) Bs@:rhDi local function callback() A$ J9U3+O ssr.AutoMoveBegin(x, y, qq.mapID) R.O end TH>,v SL:ScheduleOnce(callback, 0.5) /} a_8iM\ end $$\V2%v ^vG=|X|)c --多开 7?,7TR2Ny function API_PcOpen() (H2ylMpQt LuaBridgeCtl:Inst():CheckClientCount(2) bl`D+/V end XJ O[[G
` nfa_8 --盒子显示 \#2
s4RCji function API_hezi() {dBB{.hX global.L_GameEnvManager._envData["isBoxLogin"] = 1 C$t.C
rxx end -EVs@:3]j
}Zt.*% --遍历背包物品 [bsXF# function API_GetCurBagData() n_1jHJo local s1 = ssr.getCurBagData() +\srZ<67 local result = "" J ZA
*{n2 for k, v in pairs(s1) do V&g)m.d:n local s1 = string.format( %6N)G!P "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" aU4R+.M7@ , v["OverLap"] }\DAg'e) , v["DuraMax"] i`R(7Z , v["Where"] m^'~&!ba , v["Dura"] o:H'r7N
, v["Name"] CuIqh BW! , v["Shape"] }'v{dK , v["MakeIndex"] 1z3]PA!R , v["Weight"] el}hcAY/RP , v["StdMode"] X:U=MWc> , v["Index"])
}\>+H local ss = "" CX]RtV! if #v["Values"] > 1 then z+ uL "PG[ for x, y in pairs(v["Values"]) do '!AT if y["Value"] > 0 then qg|Ox*_od" local Values = string.format("m_Value=%s,m_ValueID=%s" +;YE)~R? , y["Value"] ?THa5%8f , y["Id"]) >n1h^AW ss = ss .. Values [#IBYJ.6 end lQh~Q<[ge end ; 4l
-M2 end KM 5jl9Vv result = result .. s1 .. "," .. ss .. "\r\n" <>VIDE end Qg[heND return result c5<kbe end ' 4,y .l7j8} --获取背包是否满 /9P^{OZ;y function API_GetBagFull() )y(oHRCp-> return ssr.IsBagToFull(isTips) xna7kA end 'y< t/qo _a fciyso --获取背包百分比 ijE<spG function API_GetBagEx() Wux 0RF& HW = ssr.GetMetaValueByKey("BW") zaH
5
Km_j MAXHW = ssr.GetMetaValueByKey("MAXBW") J9NsHr:A[ ELL = HW / MAXHW * 100 ";75 6'> return math.ceil(ELL) JR])xPI` end DQ%`v= E1#H{)G --获取背包是否满 ZT r:xX{R6 function API_GetBagFull() X{#bJ return ssr.IsBagToFull(isTips) (Z5qf end U[IQ1AEr 3'.!
+# --读取地图ID GI}4,!^N function API_GetMapID() Fs?( UM local tt = ssr.GetCurMapData() =n)JJS94 return tt.mapID ,|6Y\L end oN_S}o
kea e.6[ --读取地图名称 ?Y%}(3y function API_GetMapName() Pa3{Ds local tt = ssr.GetCurMapData() L7X7Zt8% return tt.mapName 3(MoXA* end 2XzF k_6H ?){0-
A4 --获取背包最大数 cLn; ,u4 function API_GetMaxBag() )
uANmThOz return ssr.GetMaxBag() rFf:A-#l end jMTRcj];( W&HF?w}s --使用物品 8b-7]% function API_UseItem(itemName) }*0,>w> local items = ssr.getQuickUseData() :b.3CL\.6 local item = ssr.getCurBagData() dv}8YH[" for k, v in pairs(items) do TViBCed40 if v.Name == itemName then 2=jd;2~ ssr.UseItemByIndex(v.Index) ~azF+}x90N end B.
V?s,U end >s;oOo+5 Jw2B&)k/ for k, v in pairs(item) do MKV=m8G= if v.Name == itemName then C_6G
Opl ssr.UseItemByIndex(v.Index) 5P-K *C& end @m5O{[euj< end Y=AH%Gy9) end >/(i3) lt }r}HM+ --获取金币数量 &/ \O2Aw8 function API_GetMoney(Index) CR%D\I$o return ssr.GetMoneyCountById(Index) SL6mNn9c end 0PYvey }[ s4x'f$r
function API_MergeTables(t1, t2) SCgyp( local merged = {} s.f`.o for key, value in pairs(t1) do B0 6s6Q merged[key] = value xt?3_?1 end AmP#'U5 for key, value in pairs(t2) do eL<m.06cfY merged[key] = value
fn4= end ~C%2t{" return merged _`TepX R end 7bctx_W&6 U*
-%
M 0eQ~#~j& --获取物品数量 eKL
]E! function API_GetItemCount(itemName,isBind) O]c=Yyl local items=ssr.getQuickUseData() ='7er.~\ local bagData=ssr.getBagData() /p[|DJoM items=API_MergeTables(items,bagData) _{N0OX local bind=isBind or false 9yh9HE local count=0 NYWG#4D for k,v in pairs(items) do
m"96:v if bind then ;M%oQ>].[ --绑定 m\<<
oIlH if v.Name==itemName and v.Bind~=nil then Q2JdO 6[96 count=count+ v.OverLap RpBiE8F4 end 5x:Ift
* else MDMtOfe|
--不绑定 SNQz8(O if v.Name==itemName and v.Bind==nil then mgmWDtxN count=count+ v.OverLap qzuQq94k end it(LphB8 end G>
f^ 2 end D+bB G return count 2
z'+1+B' end K<$wz/\ --读取人物坐标 It#h p,@e aO~si= %1Vu=zCAW
f$:7A0 function API_GetMapXY() !7e
i1 local aa = ssr.GetMainPlayerMapPos() \4[c}l local aa = string.format("x=%s,y=%s" {Q{lb(6Ba , aa.x z7O
Z4R: , aa.y) *ge].E return aa jA20c(O end ;X?Ah `,F&y{A -- 获取角色是否活着 s`$NW^'] function API_IsRoleAlive() CQ@#::'F1 return ssr.IsRoleAlive() BP )q6?Mz end B'WCN&N i_j9/k --读取聊天信息
FY1},sq function API_ChatMsg() )e4WAlg8c local function listcb(msg) 7Vz[ji --table l.__10{ ChatTable = msg -@EBbM& end b@nri5noBm ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) .`oJcJ if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then 8@Egy%_ local ChatT = string.format( *(?U "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" u=p ;A1oy , ChatTable.SendName W?*Xy6",JF , ChatTable.SendId ET >S , ChatTable.ChannelId R`0foSq \M , ChatTable.mt .b=M5JsyV , ChatTable.SendTime b*I&k": , ChatTable.Msg) ^CowJ(y( return ChatT k #1` end *u|lmALs end ?noETH z) DFt=%aV[ function API_ChatMaa() 3q~":bpAp return ssr.GetMaxBag() :zizca4 end LK'S)Jk p)?qJ2c| --修理装备 C m,*bgX function API_CopyTable(original) @<@R=aqE local copy = {} '1>g=Ic0 for key, value in pairs(original) do Hmz=/.$ if type(value) == "table" then !Z<mrr;T@ copy[key] = API_CopyTable(value) `jD8(}_ else |i,zY{GI+2 copy[key] = value |<|28~# end `^ieT#(O end wx]+*Lzz return copy c,#~L7 end 2*~JMbm 修衣服 = "0,4" --衣服,头盔 oj,HJH+ 修武器 = "1" SR&(HH$ 修项链 = "3" KuIt[oM 修手镯 = "5,6" 5 {T9* 修戒指 = "7,8" --左戒指 右戒指 }<(
"0jC function API_Repair(npcName, itemPos) ?D*Hl+iu local npcId = API_GetNpcIdByName(npcName) KKeb ioW local tempData = ssr.getEquipData() "_ PH "W local tobeRepair = {} b
xk'a,!S for k, v in pairs(tempData) do |'V<>v.v if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then }aHB$}"! local tmp = { P?Gd}mdX?m Name = v.Name, VfL]O 8P> MakeIndex = v.MakeIndex, 6=Y3(#Ddt Where = v.Where +z]:CF
} T[Z <bW~0 table.insert(tobeRepair, tmp) A%NK0j$;} ssr.TakeOffEquipRequest(v) `l[6rf_. end ImUQ*0 end bqw/O`*wfN --脱完 开始修理 ZYwBw:y}y for k, v in pairs(tobeRepair) do ifJv~asp local Name = v.Name .c=$ bQ>^ local MakeIndex = v.MakeIndex WL
IDw@fv local networkCtl = global.networkCtl xh+
AZ3 networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) OCbQB5k3 end ,(@Y%UW: --开始穿 %fn'iKCB local function ToDress()
.G5NGB for k, v in pairs(tobeRepair) do |0C|$2 ssr.TakeOnEquipRequest(v, v["Where"]) 9[t]] end \j2:
6]Hm end U<ku_(2"# local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) L337/8fh API_CloseNpcTalk() fd!pM4"0 end ++J Bbuzj!
{<-
ouD %8Z|/LGg ~cO?S2!W 药店={0} 4*N@=v 首饰店={19,20,21,22,23,24,26} bik] JIM 衣服店={10,11,15,16,27,28,62,64} ?YkO+?}+ 武器店={5,6} sx)$=~o 杂货店={3,25,2,30,31} .-C+0L1j 铁匠铺={43} X <ba|( 书店={4} dyQ<UT --检测背包是否有指定类型物品 7.lK$J: function API_IsNeedToStore(StdModes) Q>SPV8s local function IsNeed(StdMode) qHC*$v#.V? local bagData=ssr.getBagData() ?{@!!te@3v for k,v in pairs(bagData) do Q8}TNJsU if v.StdMode==StdMode then K%[}[.cW return true ]HNT(w@ end F- !}dzO end 7})!>p ) local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) +H)!uLvaB local equip = EquipProxy:GetEquipData() ~n8Oyr for k,v in pairs(equip) do PK.h E{R if v.StdMode==StdMode then 8T>3@kF if tonumber(v.Dura)/v.DuraMax < 0.9 then YobC'c\~9 return true uNPD~TYN end E5Snl#Gl\0 end F'?5V0\he end =\Tud-1Z return false M@!]U:5~V end o5*74Mv ?vht~5' for k,v in pairs(StdModes) do ?j&~vy= T if IsNeed(v) then UijuJ(Tle return true np'
M4^E; end {jx#^n&5R end evndw> return false ^huBqEs end VuO) &|'Kut?8 .swgXiRvs --范围内怪物个数 bool型返回distance 5fvUv"m function API_范围内怪物个数(distance, count) +e\:C~2f28 local proxyUtils = requireProxy("proxyUtils") <M=W)2D7 local mainPlayerID = global.gamePlayerController:GetMainPlayerID() }Yo15BN+ return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) 7b7%( end .=b
+O~ --关闭NPC框 .^9/ 0.g8t function API_CloseNpcTalk()
(<>Sz( global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) >PTu*6Z global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) /\3XARt end =CG!"&T --无怪随机 r$3~bS$] function API_无怪随机() jziA;6uL local list = global.monsterManager.mMonstersInCurrViewField *s<dgFA' local actors = {} lvz:UWo for k, v in pairs(list) do b]so9aCz local actor = {} "b1R5(Ar actor["mID"] = v:GetID() RBv= table.insert(actors, actor); $:-= > end HkfSx rTgQ if #actors < 1 then c~0VNuN API_UseItem("随机传送石") 0+2Matk>. local aa = API_GetItemCount(1078) O'&X aaZV if aa < 1 then wNf*/?N ssr.BuyStoreItemsById(2, 1) QX.F1T2e? end 8&2gM end 0()9vTY+ return #actors
Skk3M? end vUIK4uR. ,h^;~|GT --API_周围怪物数量 @WDqP/4 function API_周围怪物数量() vU\w3 local list = global.monsterManager.mMonstersInCurrViewField gKm~cjCB`~ local actors = {} qed!C for k, v in pairs(list) do @|\s$L local actor = {} -%/,j)VKD actor["mID"] = v:GetID() >ihe|WN table.insert(actors, actor); qRP8dH end fbx;-He! return #actors -fSKJo#}| end AVevYbucB D)/XP --API_周围人物数量 参数是 白名单 b]s1Q
]V function API_视野内敌人(Name, lv) %.6?\w1e local list = global.playerManager.mPlayersInCurrViewField d=+Lv< local myName = global.gamePlayerController:GetMainPlayer():GetName() RfKxwo|M
< local actors = {} On96N| local names = myName .. "," .. Name ?w5nKpG#RI for k, v in pairs(list) do
~RR_[t2Z local actor = {} +DV6oh actor["mID"] = v:GetID() `aWwF}
+Y actor["mName"] = v:GetName() NM.f0{:cj actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] Kj<<&_B.H --local myName=global.gamePlayerController:GetMainPlayer():GetName() woH3?zR if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then |z<wPJ,;2 table.insert(actors, actor); c&I,ed
s end h> 5~
(n8 end
B|q3;P return #actors K7&8;So
end G/RheH
G uTlT'9) n`I
jG --自动捡 KxTYc API_NoBodyPickEnable=true _^2[(<Gmv yg[Oy
#^ --捡取物品白名单 Kn9=a -b?, API_MyPlayerNames = "我不是药神," y3
o4%K8 ~NW5+M(u --全图捡 t+)GB=C API_MapPickEnable = true b8b PK< --自动存 }HQT
@&= API_InStoreEnable=false ,w58n%)H API_InStoreItems="" ;|
$]Qq --自动扔 )i6U$,] API_ItemDropEnable=false kq.R(z+ --自动用 v8fZ?dx API_ItemKeepCountEnable=true [q+39 --自动领取 m+gG &`&u API_GetMailItemEnable=false pvwnza1 --自动买回城石 VV}fW"_ND API_BuyStoneEnable=false gZ=9
Y:$ API_RecoveryItemMaxMoney=1000000 ]#7Y@Yo --地图 MPEBinE? API_PreMapName="盟重省" buM>^A" --开关 vM3|Ti>a' API_TimerEnable=true Z FrXw+ Ef*.}gcU API_TimerEnable1s=true (XIq?c1T API_TimerEnable10s=true fvBC9^3 --1S定时器 me`$5Z` function API_AutoSchedule1s() [;LPeO if GET_GAME_STATE() == "world" and API_TimerEnable1s then 6pz:Lfd80 --自己设置的自动捡 .L TFa.jxA --API_PickItems() O>):^$-K% --系统自动捡 KZ
>"L if API_NoBodyPickEnable then }Yl8Q>t if API_IsInCurrViewField(API_MyPlayerNames) then b
yreleWo API_OpenGroupPick(false) o >4>7
--release_print("来人,关自动捡") Zz*mf+ --API_RunAway() --逃跑 jvKaxB;e --API_UseItem3Second("回城石") #&8pp8wd,} else ~i&< !O& API_OpenGroupPick(true) ib=^tK API_PickItems() EV,NJ3V --release_print("无人,开自动捡") ^l2d?v8 end ;@-5lCvC(+ end /t 6u
"I~ end 8RT0&[ end {|wTZ --10s定时器 9M~$W-5 function API_AutoSchedule10s() Pg
8= if GET_GAME_STATE()=="world" and API_TimerEnable then iU+,Jeu --自动扔 /g-X=|?F if API_ItemDropEnable then >a~FSZf API_DropItemKeep("回城卷",2) qGUe0( end %pKs- n` h0QQP --自动组队 J3E:r_+ if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then u+FftgA API_InviteJoinTeam() J-?(sjIX API_TeamApplyUpdate() --允许所有邀请 ?^GsR[-x end @
MoMU T1
.@Tbbt --自动用消耗品 -mdPqVIJn: if API_ItemKeepCountEnable then Ev ,8? if API_GetItemCount("强效金创药") > 1 then l_IX+4(@b| API_UseItem("强效金创药") 9e*poG end aV#;o9H{ if API_GetItemCount("强效魔法药") > 1 then #yxYL0CcA: API_UseItem("强效魔法药") Q#bo!]H{t end 2_DtzY:= if API_GetItemCount("太阳水") > 1 then :#KURYO< API_UseItem("太阳水") 8j+;Xlh end tELnq#<6 if API_GetItemCount("魔法药(中量)") > 7 then 56aJE
.?< API_UseItem("魔法药(中量)") I4ct``Di end <xz-7EqbwX if API_GetItemCount("魔法药(中量)") < 1 then NT:>.~ah@& API_UseItem("魔法药(中)包") }i~ j"m end g{{SY5qDj if API_GetItemCount("金创药(中量)") > 1 then ZI]K+jza API_UseItem("金创药(中量)") Efd[ZJxS6 end +@v} ( if API_GetItemCount("护身符(大)") < 1 then 2xm?,p` API_UseItem("回城卷") #?|z&9 end 'v)+S;oB if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then gvt4'kp API_UseItem("回城卷") 0kEq|k9 end f}d@G/L if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then YH$`r6\S API_UseItem("回城卷") Ki\jiflc7 end zOp"n\ end :Dm@3S$4< 5mBk[{ if API_GetMailItemEnable then c67!OHu mP global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) Qp Vm global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) Um&@
0C+L end 5<
nK.i, end ~qxc!k!w4 end t":>O0>cz -^N '18: --定时器 7:<># function API_TimerStart() >qZRIDE5$ --1S定时开关 %uMsXa if API_AutoScheduleID1s == nil then KwyXM9h6= API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) wpmtv325 else qA[}\8}h ssr.UnSchedule(API_AutoScheduleID1s)
=7@ API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) [a6lE"yr end $o^}<)DW --10S定时开关 m8`A~ if API_AutoScheduleID10s == nil then `;hBO#(H0} API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) >?xVr else '1
*MiFxKq ssr.UnSchedule(API_AutoScheduleID10s) "fw
uvT
1 API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) Yq.@7cJ end QY!A[!6h end =^}2 /vA function API_IsInCurrViewField(names, level) P0<uF`87 local lv = level or 0 3g?T,|2K local nameList = names or "" Q5ao2-\ local list = global.playerManager.mPlayersInCurrViewField s#sXr local actors = {} Fv
B2y8&W for k, v in pairs(list) do / nRaxzf' local actor = {} 3Ed
PKM j& actor["mID"] = v:GetID() C
iFbk&-g actor["mName"] = v:GetName() 8i"fhN3?Y actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] ?whp_ if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then xbIA97g-O, table.insert(actors, actor); Y6Q6--P end **[p{R]8o end $
S/ 8T if #actors > 0 then D':A-E return true ],m-
,K else }zi6 F. return false ^.7xu/T end 7dIDKx end W3kilhZ d{jl&:
--打开组捡 q3t@)+l>* function API_OpenGroupPick(isOpen) iBt5aUt local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) +!wc(N[(2 local count = 0 V00zk`PH for key, value in pairs(GameSettingProxy._pickConfig) do 7Q&P4{hi0 count = count + 1 oKiu6= end &aU+6'+QXB local function SetGroup(pickgroup) t@v8>J%K for i = 1, count do ;!b(b% GameSettingProxy:SetPickGroupValue(i, pickgroup) U/X ^ end c{0?gt. end sy?W\(x if isOpen then k2a^gCBC local pickgroup = { 1, 1, 1 } yo=d"*E4^ SetGroup(pickgroup) yDrJn*
r^
else 7#`:m|$ local pickgroup = { 1, 1, 0 } O5w\oDhMb SetGroup(pickgroup) Ig2VJ s; end ~Hf,MLMdTf end }M@ pdE 2J5dZYW