游戏地址
}H^^v[4 www.fgcq996.com +6-!o,( 那年传奇百区1.76 lhODNWi KA2B3\ 找到 lua_State 然后调用下面的函数就能实现功能
>~InO^R`5 一个跑单狗注意qq1946913194
Nn\\}R 游戏账号密码。fanren9527 qq2293307009 u`nn
{C4D"
l@jJJ)Qyk 搞完演示完,删除好友跑单 L%Hm#eFx ?q&mI* j! --自动寻路Ex
~H~4 fp b function API_AutoMoveEx(mapX, mapY)
H;L&G|[ ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
2xj`cFT local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
a{.n(M local pathPoints = inputProxy:GetPathFindPoints()
?bA]U: if pathPoints == nil then
_(
Cp return 0
$^ 3 f}IzA end
bx6}zk
f& return #pathPoints
tC~it
U=V end
@C)h;TR WF0>R^SpZ --自动寻路
|?W function API_AutoMove(mapX, mapY)
O:R{4Q*5 ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
.H.v c_/ local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
|mA*[?ye@ local pathPoints = inputProxy:GetPathFindPoints()
#=3]bg if pathPoints == nil then
TC}u[kM return 0
l0_O< end
!A0bbJ return #pathPoints
~`fB\7M end
N^at{I6C @SB+u+mOS --停止寻路
9>P(eN function API_AutoMoveEnd()
Z%Kj^
M global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
*r3vTgo$ end
i*>yUav" @h3)!#\N --自动打怪
!!>G{ function API_AutoFight(isAFK)
:]jtV~E\ if isAFK then
_s,svQ8# if not IsAFKState() then
__npX_4%S global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
gC 4#!P global.Facade:sendNotification(global.NoticeTable.AFKBegin)
yh<aFYdk end
?J-KB3Uv3 else
C" WZsF^3 if IsAFKState() then
i i
Y[ global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
Yw
`VL)v(y global.Facade:sendNotification(global.NoticeTable.AFKEnd)
Rw%KEUDm end
@]4 s&;
end
|&Wo-;Ud end
;hDr+&J| 9$i`B>C~ function IsAFKState()
$
7!GA9Bn local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
\[jItg,+ return AutoProxy:IsAFKState()
#1k,t end
c5pG?jr+d LOzKpvGl --打开自动穿戴
v_h{_b8 function API_AutoDress()
u>#'Y+7 --不抢别人归属
x$I>e global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
`6su_8Hno global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
"(GeW286k local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
B\yid@e ServerOptionsProxy._data["autoDress"] = 1
mD3#$E!A1 global.ConstantConfig.autousetimes = 0
nX'.'3 end
6 [E"
`SrVMb( --强制打开自动挂机拾取
sqRuqUj+ function API_AutoPick()
5 <poN)" local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
2T5ZbXc+x local config = ItemConfigProxy.config
RPwSo.c4 for k, v in pairs(config) do
{lJpcS --local res = string.gsub(v.pickset, "0", "1")
zZ-*/THB@R v.pickset = v.pickset .. 1
^lj>v}4fkW end
p10->BBg end
^`THV *1Q?~ --获取人物坐标
&baY[[N function API_GetMapXY()
s]UeDZ<a return ssr.GetMainPlayerMapPos()
?=&*6H_v end
KivzgNz j*}x
e'# --获取人物状态
g>f394j function API_GetAction()
8pk">"#s local player = global.gamePlayerController:GetMainPlayer()
XlPy(> local list = global.playerManager.mPlayersInCurrViewField
YR2/`9s\QJ return player:GetAction()
9"TPDU7" end
wC~Uy%
7
pV3#fQ --设置宠物状态
uDR(^T{g# function API_PetSleep(isSleep)
3@*8\ local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
Lq.k?!D3uh if not SummonsProxy:IsAlived() then
AsOI`@FV return false
PoZBiw@ end
r>\.b{wI if isSleep then
C4,W[L]4" SummonsProxy:RequestModeChange(2)
PH.v3
3K else
v80e]M! SummonsProxy:RequestModeChange(4)
NT 'Y h end
e6Y0G,K end
Tec6]
: T28#?Lp6] --获取人物数据
zuw6YY8kQ function API_GetGamePlayer()
NG ~sE&,7 local player = global.gamePlayerController:GetMainPlayer()
6*tGf`Pfdw local list = global.playerManager.mPlayersInCurrViewField
vHmn)d1pl local person = {}
%BJ V$tO person["等级"] = player:GetLevel()
?FyA2q! person["职业"] = player:GetJobID()
wB@A?&UY person["名字"] = player:GetName()
fqxMTTg@ person["金币"] = ssr.GetMoneyCountById(1)
#"l=Lv person["元宝"] = ssr.GetMoneyCountById(2)
%|Vq"MW,I person["绑金"] = ssr.GetMoneyCountById(3)
lCXo+|$?s return person
Ox RzKT end
*&s_u)b hdzaU&w function API_GetGamePlayerLevel()
GmFNL/x8-v local player = global.gamePlayerController:GetMainPlayer()
Jh1fM`kB5K return player:GetLevel()
8}2
`^<U end
E@p9vf-> Gwe9<
y --获取周围怪物
zK v}J function API_GetMonster()
sy;~(rpg local list = global.monsterManager.mMonstersInCurrViewField
DwPl,@T_i\ local actors = {}
V.qB3V$ for k, v in pairs(list) do
oT
OMqR{" local actor = {}
?]S*=6 actor["mID"] = v:GetID()
'tekne actor["mName"] = v:GetName()
V0>,Kxk actor["mRace"] = v:GetRace()
xQ4Q '9 actor["mType"] = v:GetType()
Pg7/g=Va actor["mSubType"] = v:GetSubType()
_F3 :j9^ actor["mX"] = v:GetMapX()
HzV3O-Qz] actor["mY"] = v:GetMapY()
7y!{lr=n actor["mAction"] = v:GetAction()
Ad(j&P actor["mTypeIndex"] = v:GetTypeIndex()
L fhd02 actor["mAnimationID"] = v:GetAnimationID()
*:iFhKFU actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
gwyz)CUkL actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
yd$y\pN=< actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
gO29:L[t actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
/1YqDK0 actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
"\30YO>\ actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
*5^h>Vk/ actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
:0/I2: actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
z@ 2NAC actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
umY4tNe]$ actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
sNWj+T actor["mColor"] = "0xFFFFFF"
92EvCtf if v:GetType() == global.MMO.ACTOR_PLAYER then
CAk.2C/ local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
IIzdCa{l local label_name = global.MMO.HUD_LABEL_NAME
]'{<O3:7 local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
0oD?4gn if hudName then
b@Fa|>"_ actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
FKPI{l end
!
"Kg
b;A end
V<b"jCXI table.insert(actors, actor);
>Gkkr{s9 end
!^w+<p xGjEEBL return actors
ne%ckW?ks end
W1 E((2 U.&=b<f(0r --遍历周围玩家
x@yF|8 function API_GetPlayer()
=73wngw local list = global.playerManager.mPlayersInCurrViewField
WK-WA$7\ local actors = {}
>354O6 for k, v in pairs(list) do
Tw$la kw local actor = {}
~%cbp&s*/q actor["mID"] = v:GetID()
J}BS/Tr}= actor["mName"] = v:GetName()
(fC [
Y actor["mRace"] = v:GetRace()
8@ b8
3 actor["mType"] = v:GetType()
xRb-m$B}L actor["mSubType"] = v:GetSubType()
?g1%-F+ actor["mX"] = v:GetMapX()
YQ&Xd/z- actor["mY"] = v:GetMapY()
qvCl
mZ actor["mAction"] = v:GetAction()
M*nfWQ
a actor["mTypeIndex"] = v:GetTypeIndex()
|VIBSty2d actor["mAnimationID"] = v:GetAnimationID()
mhL,:UE actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
fN@2 B actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
f5AK@]4G actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
7yK
> actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
e tY9Pq actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
p tMysYT' actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
;sDFTKf actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
Gt' %:9r actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
{{j?3O // actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
.hUndg actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
C;_10Rb2ut actor["mColor"] = "0xFFFFFF"
}{s<!b if v:GetType() == global.MMO.ACTOR_PLAYER then
: -OHD#>% local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
99vm7"5 hQ local label_name = global.MMO.HUD_LABEL_NAME
uGOvZO^v local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
ZhW>H if hudName then
))<3+^S0V\ actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
aB.`'d)V end
$w{#o E end
rk
`x81 table.insert(actors, actor);
B+ +:7! end
~nw]q<7r return actors
g9g^zd, end
,u/GA<'#M lCDXFy(E --遍历周围玩家EX
SBs_rhe function API_GetPlayerExe()
;a2TONW local s1 = API_GetPlayer()
kP3'BBd, local result = ""
w[t!?(![> for k, v in pairs(s1) do
):1NeJOFF local s2 = string.format(
s/8>(-H# "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
Z':}ZXy] , v["mID"]
iphe0QE[#} , v["mName"]
!ce5pA , v["mRace"]
K[O'@v , v["Dura"]
>J+hu;I5 , v["mType"]
zxY , v["mSubType"]
b k 30d , v["mX"]
3DbS\jja , v["mY"]
O.Z<dy+ , v["mAction"]
ex1b jM7 , v["mTypeIndex"]
4 QD.'+L , v["mAnimationID"])
y]yp8
Bs+ local s3 = ""
Qn_*(CSp 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}dtJ , v["mLv"]
5\lOZYHX , v["mJobID"]
5^+>*z , v["mHP"]
/2 ')u| , v["mHPMax"]
^<Q+=\h , v["mMP"]
_Uc le , v["mMPMax"]
7EO/T,{a , v["mOwnerID"]
X0O@, , v["mOwnerName"]
#}3$n/ , v["mGuildName"]
b$[O^p9x , v["mColor"])
3+rud9T result = result .. s2 .. s3 .. "\r\n"
s0WI93+z end
t[|^[%i return result
va[@XGaC3 end
w|7<y8#qC L>
> % --遍历周围指定NPC
:A.dlesv6 function API_GetNpcIdByName(npcName)
k%Jv%m}aB local npcVec = global.npcManager:FindNpcInCurrViewField()
=y.? =`" local npc = {}
|p}qK
Fdi for k, v in pairs(npcVec) do
lku}I4 local npcs = {}
&N.D!7X npc[v["mID"]] = v["mName"]
0P_qtS end
g4^=Q'j- for key, value in pairs(npc) do
0
fX local sPos, ePos = string.find(value, npcName)
1--_E,Su> if sPos then
Ep)rEq6 return key
<KlG#7M> end
i{vM
NI{ end
(< gk<e* return nil
gZ8n[zxf6 end
H:TRJ.!w2 `KgIr,Q) --NPC名称打开NPC
b S[;d5 function API_NpcTalk(npcName)
'tm%3`
F local npcid = API_GetNpcIdByName(npcName)
WW\t<O;z local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
3=SIIMp7= NPCProxy:RequestTalk(npcid)
hE@s~~JYd end
n$&xVaF|
74i --NPCID打开NPC
9)}Nx>K function API_NpcTalkEx(npcid)
!N ua local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
b=(?\ NPCProxy:RequestTalk(npcid)
u czOSd end
6qp2C]9= e:#c\Ay+ function API_GetNpcTalkData()
wa7) local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
os9X)G local talkData = NPCProxy:GetCurrentNPCTalkData()
;n0VF77>O return talkData
N{w)}me[YY end
EFSln*| qn=~4rg]R function API_GetAllLink()
X]
cI ? local talkData = API_GetNpcTalkData()
ruiAEC<Ej $ReoIU^< local acts = {}
n o).70K local kv = {}
M@%$9N)gd #[=%+ *Q for line in talkData.content:gmatch("(text=.->)") do
w eu3c`-a if string.find(line, "@") then
M*6}# ST local key = line:match("text=(.-)|")
VjsQy
>5m vy&q7EX<i local value = line:match("(@.-)>")
a$-:F$z kv[key] = value
Us
kz~~}G end
F6,[!.wl end
AM?6
2 Y_S>S(0 for result in talkData.content:gmatch("(@.-)>") do
[ed6n@/O@ table.insert(acts, result)
w% Vw*i6o end
!A@Ft}FB local sendData = {
0@ccXFE UserID = talkData.npcID,
4K{<R!2I index = talkData.index,
C
0@tMB7 --Act = "@blbumj",
BUhLAO
--commonInput = jsonData.commonInput,
9OI&De5?=V --inputID= jsonData.inputID,
_ljdo`j#N }
`q":i>FP2 return acts, kv, sendData
vK@t=d end
:56f y{{7)G --按索引号点击按
$=) i{kGS@ function API_ClickLinkByIndex(index)
,j^z]; acts, kv, sendData = API_GetAllLink()
! 3&_#VO sendData["Act"] = acts[index + 2]
"eRf3Q7w: local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
fiG/"/u NPCProxy:ExecuteWithJsonData(sendData)
Vm
+e% end
p{c+ +P5 N!RkV\:X --按索购买引号点击按
=\u QGH function API_ClickBuyLinkByIndex(index)
bvpP/LeY acts, kv, sendData = API_GetAllLink()
E6
glR sendData["Act"] = acts[index]
\l$gcFXb local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
H!uB&qY NPCProxy:ExecuteWithJsonData(sendData)
VEUdw(-?s end
[3&Y* W "lU%Pm]> --按名称点击按
GP|G[ function API_ClickLinkByName(linkName)
YhpNeP{A acts, kv, sendData = API_GetAllLink()
6<E4?<O% sendData["Act"] = kv[linkName]
0uZ 'j local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
CB&$tDi NPCProxy:ExecuteWithJsonData(sendData)
e[`u: end
@!;EW
R] ,AX7~;hpq --出售物品
e(t,~( function API_Sell(npcName,itemsName)
kWkAfzf4a local npcId=API_GetNpcIdByName(npcName)
0qND 2_ local bagData=ssr.getBagData()
pyvZ[R9 for k,v in pairs(bagData) do
D`|.% if string.find(itemsName,v.Name) then
+=Xgi$ --if #v["Values"]<2 then
n+Bh-a V local Name = v.Name
Jng,:$sZ local MakeIndex = v.MakeIndex
ctqXzM ` local networkCtl = global.networkCtl
iobL6SUZ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
8Df(|>mK --end
WrzyBG_ end
ah1DuTT/G end
)+!~xL end
r&qFv)0!` --全部卖
@#wBK3Ut^ function API_SellAll(npcName)
u>e4;f`F local npcId=API_GetNpcIdByName(npcName)
<|,0%bq)| local bagData=ssr.getBagData()
]6#7TT for k,v in pairs(bagData) do
)}{V#,xz@ --if #v["Values"]<2 then
?=C?3R local Name = v.Name
y}TiN!M local MakeIndex = v.MakeIndex
H?ZlJ|/c local networkCtl = global.networkCtl
7F=Xn@ _ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
^&nC)T<w --end
5|I2 end
6L`{oSX! end
wTT_jyH) @%8Xa7+ ~KtA0BtC
--NPC购买
[5KzawV function API_Buy(npcName,itemName,count)
Q2 tM~ --进入子菜单
c_oI?D9 local sendData =
oSDx9% {
f(H
h( UserID = API_GetNpcIdByName(npcName),
aq a%B Name = itemName,
2d%j6D }
"!\O N)l* SendTableToServer(1015, sendData)
86.LkwlqoH local function ToBuy()
}PdHR00^ local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
+W= local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
KZK9|121 for i=1,count do
ve#*qz Y if i>#list then
=e<;B_~. break
[8T
end
Ib$*w)4: sendData.MakeIndex= list[#list-i].MakeIndex
3
M/iuu SendTableToServer(1014, sendData)
-]!m4xvK end
IYJS>G%* API_CloseNpcTalk()
*""JE'wG end
(6Ss
k4 local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
\dIc_6/D1 end
!>%U8A <ZF,3~v? m~upTQz function 打开子项(item)
q(N2#di local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
]}K\&ho2 if item.SubMenu == 1 then
5P?7xR
A NPCProxy:RequestNpcStoreItemList(item)
F4=+xd >0 end
< C{-ph end
bo;;\>k R`7v3{ function 子项购买(count)
[gZz'q&[) local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
s`:>"1\| for i = 1, count do
j _r?4k if i > #list then break end
z0XH`H|~ NPCProxy:RequestNpcStoreBuy(list
) ;=&D_jGf]
end >lD*:#o
end H,/|pP. dMcC
SwYh --登录角色 AixQR[Ul*c }P
u|%\ function API_LoginRole(index) gH{X? local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) l~f>ve| LoginProxy:SetSelectedRoleByIndex(index) 81O\BO.T LoginProxy:RequestEnterGame() RC[b+J,q global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) Xx
N=vL&m end @y{i.G d+
LEi^ --登录 %SWtE5HZQq function API_Login(name, password) uxbDRlOS local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) aD2+9?m local data = {} 3'
HtT data.type = 1 A7{l60(5 data.username = name =44hI86 data.password = password ^LA.Y)4C2% AuthProxy:RequestLogin(data) R"j6 w[tn end y:FxX8S$'e r6B\yH2 --开门 _`Ojh0@00 function API_EnterRoom(x, y) ,I(PDlvtM local qq = ssr.GetCurMapData() Lk%u(duU^ global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) U#o5(mK local function callback() (IAc*V~ ssr.AutoMoveBegin(x, y, qq.mapID) ^X&`:f end
(r&e| SL:ScheduleOnce(callback, 0.5) b zz{ p1e end - EwtO4vLJ mw^Di --多开 $!+t2P@d.5 function API_PcOpen() 6mawcK:7 LuaBridgeCtl:Inst():CheckClientCount(2) Kp_L\'.I5$ end aJnZco6 Z */*P4\ --盒子显示 (9;qV:0` function API_hezi() .EOHkhn global.L_GameEnvManager._envData["isBoxLogin"] = 1 r_sZw@lqJ end ~:65e 8K &4aY5y`8+f --遍历背包物品 qr5ME/)z function API_GetCurBagData() b!>w4MPe local s1 = ssr.getCurBagData() f8>S<: local result = "" uYh6q1@"~ for k, v in pairs(s1) do ,bv?c@ local s1 = string.format( nm[ yp3B "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" _}_lrg}U , v["OverLap"] R~jV
, v["DuraMax"] U}c[oA , v["Where"]
T?!&a0 , v["Dura"] (h"Yw , v["Name"] oXC
ZpS , v["Shape"] j Hd <* , v["MakeIndex"] M4;A4V=W , v["Weight"] z0@)@4z! , v["StdMode"] 9Y9pKTU , v["Index"]) #MZ0Sd8]& local ss = "" v>vU]6l if #v["Values"] > 1 then {{FA"NW for x, y in pairs(v["Values"]) do Vrz6<c-'B if y["Value"] > 0 then wH:'5+u:6 local Values = string.format("m_Value=%s,m_ValueID=%s" =c)O8 , y["Value"] \O]1QM94Y , y["Id"]) nN|zEw] ss = ss .. Values DYvi1X6 end n&?]GyQ end &FQ]`g3_@ end <lk_]+ XJ3 result = result .. s1 .. "," .. ss .. "\r\n" o=!3=2@dh end .3(=UQ return result P,S$qD*4 end
sFR'y. #8N9@ --获取背包是否满 !fFmQ\|)4S function API_GetBagFull() _$OhV#LKG return ssr.IsBagToFull(isTips) d|,,,+fS end :#M(,S"Qq x;RjLI 4h --获取背包百分比 YF{ KSGq function API_GetBagEx() 7=.}484>J HW = ssr.GetMetaValueByKey("BW") |"[[.Adw9" MAXHW = ssr.GetMetaValueByKey("MAXBW") X#s:C=q1 ELL = HW / MAXHW * 100 !}sYPz]7! return math.ceil(ELL) #y~`nyg%| end ulnG|3A9 B_u+$Odo --获取背包是否满 st;.Po[h function API_GetBagFull() dXKv"*7l return ssr.IsBagToFull(isTips) b"Hg4i) end $qN+BKd]3 %ZV a{Nc --读取地图ID i8$tId function API_GetMapID() 8G?{S.%. local tt = ssr.GetCurMapData() 'ADaz75`*r return tt.mapID 3r=IO# end .Gq)@{o> []K5l% --读取地图名称 M5C}*c9 function API_GetMapName() ~lx5RTkp local tt = ssr.GetCurMapData() wW4/]so M return tt.mapName e+"rL] end "%+C@>`( H79|%@F" --获取背包最大数 ~%Y*2i
f function API_GetMaxBag() K5x&:z return ssr.GetMaxBag() MKd{y~' end &[BDqi =bUVGjr%96 --使用物品 xUYUOyV function API_UseItem(itemName) ArBgg[i local items = ssr.getQuickUseData() ~+VIELU<% local item = ssr.getCurBagData()
D7%`hU for k, v in pairs(items) do W,zlR5+Jk if v.Name == itemName then _oxc~v\< ssr.UseItemByIndex(v.Index) C7%+1w'D8 end L+@RK6dq end +
M2|-C ffGiNXCM for k, v in pairs(item) do }U$Yiv if v.Name == itemName then I;`)1
ssr.UseItemByIndex(v.Index) &6/#
O end clz6;P end #vhxW=L`= end
M*)}F 6Lw34R --获取金币数量 S#{e@ C function API_GetMoney(Index) ZHxdr
X) return ssr.GetMoneyCountById(Index) 9N>Dp N end [((P,v* E Kks8 function API_MergeTables(t1, t2) ;o;P2}zD local merged = {} z
BWn*A[4 for key, value in pairs(t1) do Lwgk}!KR merged[key] = value &?(r#T end `gq@LP"o for key, value in pairs(t2) do Q7`}4c) merged[key] = value Qcu1&t\ C end 9)p VDS return merged l -~HY* end >JVZ@
PV
H u\zRWX Q4Mp[ --获取物品数量 VsOn j~@ function API_GetItemCount(itemName,isBind) R9gK> }>Y local items=ssr.getQuickUseData() %n`wU-?lK local bagData=ssr.getBagData() e:IUO1# items=API_MergeTables(items,bagData) R;6(2bTN6 local bind=isBind or false ))}w;w local count=0 )*N]Q for k,v in pairs(items) do H kDT14 `& if bind then >\hu1C|W --绑定 //VgPl if v.Name==itemName and v.Bind~=nil then 4os7tx count=count+ v.OverLap rmc0dm&l] end 8
>G3KZ3 else
Ch607i= --不绑定 uzL)qH$b if v.Name==itemName and v.Bind==nil then EBS04]5ul count=count+ v.OverLap $L>tV=' end 8$<jd^w
end h^ ex? end I.I:2Ew+ return count oDul ?% end xg)cA C\= --读取人物坐标 n{j14b' [E_6n$w XA}! ^G{3x function API_GetMapXY() ny17(Y = local aa = ssr.GetMainPlayerMapPos() A P><l@ local aa = string.format("x=%s,y=%s" G"0YCi#I| , aa.x !+&"y K@J , aa.y) aG QC return aa uW!',"0ER end zN JK+_O= g$eb@0$ -- 获取角色是否活着 agX-V{l. function API_IsRoleAlive() $x]'6 return ssr.IsRoleAlive() ]O s!=rt end *+h2,Z('a b|t` )BF --读取聊天信息 tUl#sqN_{ function API_ChatMsg() ww
VK15t local function listcb(msg) U<fe 'd --table T1?fC) ChatTable = msg u|ia end
1HxE0> ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) U/&!F if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then hZ!N8nWwNR local ChatT = string.format( Da5Zz( "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" &;5QB , ChatTable.SendName k'Fc:T8:~5 , ChatTable.SendId s%"3F<\ , ChatTable.ChannelId }X94M7+-> , ChatTable.mt qczGv2%! , ChatTable.SendTime cP63q|[[ , ChatTable.Msg) NK]X ="` return ChatT +=hiLfnE end &!#,p{}ccU end oEvXZ;F@. !'(bwbd function API_ChatMaa() zbZ0BD7e return ssr.GetMaxBag() =@;uDu:Q end ?B@(W(I B<(v\=xZ --修理装备 a) GLz function API_CopyTable(original) P31}O2 Nh local copy = {} ?e9Acc`G5 for key, value in pairs(original) do B25@6 if type(value) == "table" then ['j_W$8n copy[key] = API_CopyTable(value) ]&w>p#_C else O]RP ?'vO copy[key] = value eAS~>
|N#x end Q~<$'j end eZR{M\Q return copy w+gA3Dg end +CtsD9PA 修衣服 = "0,4" --衣服,头盔 jSp4eq 修武器 = "1" {\
vj": 修项链 = "3" L31B:t
^ 修手镯 = "5,6" :%Na-j9hV) 修戒指 = "7,8" --左戒指 右戒指 F)g.CDQ!c function API_Repair(npcName, itemPos) :Lqz` local npcId = API_GetNpcIdByName(npcName) (D F{l?4x- local tempData = ssr.getEquipData() Rok`}t local tobeRepair = {} , A?o for k, v in pairs(tempData) do '0D
2e if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then
v??}d
local tmp = { 5hak'#2 Name = v.Name,
bz'V50 MakeIndex = v.MakeIndex, vBAds Where = v.Where E#X1P #$pW } 1a4
[w
table.insert(tobeRepair, tmp) ),y{.n:wm ssr.TakeOffEquipRequest(v) #` )zD"CO end oUXu;@l end -Wc'k 2oU --脱完 开始修理 5xL%HX[S for k, v in pairs(tobeRepair) do z8FeL5.( local Name = v.Name 1\t}pGSOeh local MakeIndex = v.MakeIndex ;o }pRC local networkCtl = global.networkCtl K4NB# networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) 2i`N26On end YpMQY-n --开始穿 `J \1t
K{ local function ToDress() I`:nb for k, v in pairs(tobeRepair) do A$.woE@ ssr.TakeOnEquipRequest(v, v["Where"]) qwJeeax end l/0TNOA end q\*",xZxwz local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) .dwb@$ API_CloseNpcTalk() +"rZ< i end Rf2$k/lZ }@Lbvaa p>7!"RF:U \xJT
sdd 药店={0} &*iar+vr 首饰店={19,20,21,22,23,24,26} ;|&Ak_I2G 衣服店={10,11,15,16,27,28,62,64} _!6~o> 武器店={5,6} c<)C3v 杂货店={3,25,2,30,31} JTB_-J-TU 铁匠铺={43} e8O[xM 书店={4} [ah%>&u --检测背包是否有指定类型物品 A$vCm function API_IsNeedToStore(StdModes) ~Q%C
> local function IsNeed(StdMode) (cJb/|?3 local bagData=ssr.getBagData() F
}l_= for k,v in pairs(bagData) do fM,U| if v.StdMode==StdMode then 1"ko wp return true \hv1"WaJ end }
<; y,4f end ?LAKH$t local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) 7bOL ,S local equip = EquipProxy:GetEquipData() +ou5cQ^ for k,v in pairs(equip) do 6U)Lhf\'o if v.StdMode==StdMode then QWG?^T
fi if tonumber(v.Dura)/v.DuraMax < 0.9 then sI4Ql0[ return true zbn0)JO end @bU(z$eB end 1V(tt{ end i3g;B?54 return false TWE$@/9 )g end M6U/.
n ](c[D9I!8 for k,v in pairs(StdModes) do //*>p if IsNeed(v) then 3Qmok@4e) return true zB`)\ end lSU&Yqx end u|h>z|4lJj return false (r,tU(
end Wo=Q7~
=+ `I%>wc TMZg GUn --范围内怪物个数 bool型返回distance o
mstJ9 function API_范围内怪物个数(distance, count) UqRm\h local proxyUtils = requireProxy("proxyUtils") e!wBNcG2 local mainPlayerID = global.gamePlayerController:GetMainPlayerID() fdP[{.$?( return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) +o})Cs`|=A end i9fK`:) --关闭NPC框 A;Rr#q< function API_CloseNpcTalk() b$)b/=2 global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) P<
yd global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"})
L>Bf}^ end '}h[*IB}5 --无怪随机 +V*FFv function API_无怪随机() )TV4OT# local list = global.monsterManager.mMonstersInCurrViewField >Z
ZX]#=I local actors = {} CI$pPY<u1 for k, v in pairs(list) do v`8dRVN local actor = {} ?h4-D:!$L actor["mID"] = v:GetID() *fVs| table.insert(actors, actor); u1d{|fF end VKRj
1LXz if #actors < 1 then p|VoIQ
Y API_UseItem("随机传送石") AA34JVm] local aa = API_GetItemCount(1078) oZ;u>MeZ if aa < 1 then }l{r9ti ssr.BuyStoreItemsById(2, 1) m5Gt8Z 6a end 44_
7gOZ end fhlhlOg return #actors 2)(P;[m^o end =\H.C@r &scHyt --API_周围怪物数量 QZ(se
function API_周围怪物数量() X?5M)MP+I local list = global.monsterManager.mMonstersInCurrViewField +FiM?,G local actors = {} . _JM3o}F for k, v in pairs(list) do |pk1pV
| local actor = {} DP`$gd actor["mID"] = v:GetID() RMU]GCa table.insert(actors, actor); PEZ~og:w end = BW>jD return #actors w8i"-SE end l%@>)%LA g,/gApa --API_周围人物数量 参数是 白名单 (.Y
t|
"j function API_视野内敌人(Name, lv) Dn;6O local list = global.playerManager.mPlayersInCurrViewField }I_/>58 local myName = global.gamePlayerController:GetMainPlayer():GetName() sS#Lnj^`% local actors = {} 2@WF]*Z local names = myName .. "," .. Name 8d.5D& for k, v in pairs(list) do t.B%7e local actor = {} G\3@QgyQ actor["mID"] = v:GetID() HH/bBM! actor["mName"] = v:GetName() z;`o>Ja2 actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] `Cy-*$$ --local myName=global.gamePlayerController:GetMainPlayer():GetName() ++ !BSQ e if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then `ro~l_U;A table.insert(actors, actor); rxtp?|v9 end ;KqH]h) end ,&$=2<Dx return #actors sp*_;h3' end c0M=T X=]FVHV; #xZ7% --自动捡 XUeBK/aQ{ API_NoBodyPickEnable=true `[x`#irD NFpR jC? --捡取物品白名单 a!YpSFr API_MyPlayerNames = "我不是药神," }Jkz0 JY~ =w='qjh --全图捡 h; 105$E1 API_MapPickEnable = true GQ~wx1jj1 --自动存 q]+'{Ci@ API_InStoreEnable=false &x$1hx' API_InStoreItems="" 3n-~+2l --自动扔 4A(kM}uRB API_ItemDropEnable=false d>@&[C!28 --自动用 @MMk=/WDw API_ItemKeepCountEnable=true ;A)w:"m --自动领取 V"=(I'X API_GetMailItemEnable=false pX3Q@3,$ --自动买回城石 =jZ}@L/+
API_BuyStoneEnable=false z45
7/zO API_RecoveryItemMaxMoney=1000000 $,R
QA^gxW --地图 &t1?=F,] API_PreMapName="盟重省" {w*5uI%
%e --开关 9A0wiKp API_TimerEnable=true )=6|G^ ~_^#/BnAl API_TimerEnable1s=true luD.3&0n API_TimerEnable10s=true *|S.[i_7 --1S定时器 :[f2iZ" function API_AutoSchedule1s() z^s/7Va[ if GET_GAME_STATE() == "world" and API_TimerEnable1s then x#z}A&
--自己设置的自动捡 B
^>}M --API_PickItems() 5*QNE! --系统自动捡 Ul#||B .c{ if API_NoBodyPickEnable then tVJ}NI # if API_IsInCurrViewField(API_MyPlayerNames) then r}ZL{uWMW API_OpenGroupPick(false) 2t'^ --release_print("来人,关自动捡") 3dm lP2 --API_RunAway() --逃跑 PScq-*^ --API_UseItem3Second("回城石") T0L h"_X3 else (}1 gO API_OpenGroupPick(true) .9X, )^D API_PickItems() d%tF~|#A% --release_print("无人,开自动捡") -7^?40A end }S84^2J_ end 9Qja|;
end P9(]9np,, end W8hf
Qpw --10s定时器 RzG7Xr=t function API_AutoSchedule10s() R$qp3I if GET_GAME_STATE()=="world" and API_TimerEnable then \[</|]'[ --自动扔 M(>" e*Pi
if API_ItemDropEnable then }T([gc7~ API_DropItemKeep("回城卷",2) U1zcJl^ end -olD!zKS a(>oQG8F --自动组队 Y>v(UU if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then &~`Ay4hq API_InviteJoinTeam() V2-fJ! API_TeamApplyUpdate() --允许所有邀请 BK._cDR end y"4Nw]kU >|h$d:~n --自动用消耗品 zq ;YE if API_ItemKeepCountEnable then :H/CiN if API_GetItemCount("强效金创药") > 1 then 8%-+@\= API_UseItem("强效金创药") 3q7Z?1'o
end ]z5`!e)L if API_GetItemCount("强效魔法药") > 1 then [k)xn3[
API_UseItem("强效魔法药") Kgev*xg end g *}M;"
if API_GetItemCount("太阳水") > 1 then ]ADj9 API_UseItem("太阳水") *fs'%"w- end " sh%8
<N if API_GetItemCount("魔法药(中量)") > 7 then @lvvI<U API_UseItem("魔法药(中量)") }"k+e^0^ end k e$g[g if API_GetItemCount("魔法药(中量)") < 1 then 9C;Hm>WEpP API_UseItem("魔法药(中)包") ,khB*h14;h end %mLQ'$ if API_GetItemCount("金创药(中量)") > 1 then C(o]3):? API_UseItem("金创药(中量)") '~-JR> end vFuf{ @P if API_GetItemCount("护身符(大)") < 1 then ]&l.-0jt API_UseItem("回城卷") [,;h1m ~iX end 1CS[%)-c if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then 70s. API_UseItem("回城卷") xw2dEvjgp% end }O=QXIF5 if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then 3{wr*L1%-~ API_UseItem("回城卷") 3Yu1ZuIR end 5\hJ& end 6:Eu[PE~w 34k}7k~n if API_GetMailItemEnable then VRr_s:CWK global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) h>jLhj<07W global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) u~kfz*hz end Skm$:`u; end V5$J end X}XTEk3[ |^z?(?w --定时器 9ure:Dko(Y function API_TimerStart() f+*wDH --1S定时开关 ){yw
k if API_AutoScheduleID1s == nil then Snm
m(. API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) $"VgNynq else >eF4YZ" ssr.UnSchedule(API_AutoScheduleID1s) s{IXth6 API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) (;1rM}B;1 end ~nul[>z --10S定时开关 fb8"hO]s if API_AutoScheduleID10s == nil then ?9jl8r> API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) :-Gf GL>] else NI(fJ%U ssr.UnSchedule(API_AutoScheduleID10s) uK_ Q l\d API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) i:8g3|JfMe end XQI.z7F end vAeh#V~# function API_IsInCurrViewField(names, level) wD(1Sr5n local lv = level or 0 EP!zcp2' C local nameList = names or "" EvA{@g4> local list = global.playerManager.mPlayersInCurrViewField bwHl}3 local actors = {} ;=.i+ for k, v in pairs(list) do J$Huzs# local actor = {} r3~~4Q4XI> actor["mID"] = v:GetID() tCkKJ)m
actor["mName"] = v:GetName() 9wR-0E
) actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] HTfHAc?W if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then EVovx7dr table.insert(actors, actor); {z":hmt end (wxdT6RVm\ end Y8*k18~ if #actors > 0 then 3Zy $NsY3 return true M]\p9p(_ else ;
W ZA return false &.1F\/]k end ohI>\ end eVRFb#EU0e ?fO
2&)r
--打开组捡 \tL9`RKpg function API_OpenGroupPick(isOpen) l| /tKW local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) x 6=Yt{ local count = 0 z5~{WAAI for key, value in pairs(GameSettingProxy._pickConfig) do HiTn 5XNf count = count + 1 z:Sr@!DZ end S1_X@[t local function SetGroup(pickgroup) Vfm (K for i = 1, count do 1h.Ypzu GameSettingProxy:SetPickGroupValue(i, pickgroup) wI\
n%# end @I\&-Z ^ end /^#8z(@B if isOpen then BU\P5uB!V local pickgroup = { 1, 1, 1 } >.P/fnvJ SetGroup(pickgroup) 2&L2G' else aD
33!
:y local pickgroup = { 1, 1, 0 } SZGeF;N SetGroup(pickgroup) >]6inS9 end [&IJy end i5oV,fiZo BQ&G7V