游戏地址
JRodYXjE www.fgcq996.com 9R ugkGy 那年传奇百区1.76 Z>M*!mQi ZT^PL3j+ 找到 lua_State 然后调用下面的函数就能实现功能
?C $_?Qi 一个跑单狗注意qq1946913194
uk\G
Am@O
游戏账号密码。fanren9527 qq2293307009 b%)a5H(
~4 \bR 搞完演示完,删除好友跑单 ^8MgNVoJ) X;6X
K$" --自动寻路Ex
)L#I#% function API_AutoMoveEx(mapX, mapY)
E*
lqC h ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
0;XnNz3& local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
C}00S{nAZ local pathPoints = inputProxy:GetPathFindPoints()
<?Lj!JGX if pathPoints == nil then
}'@*Ol j return 0
DD~8:\QD end
lcUL7 return #pathPoints
F'*{Fk
h end
nZ%<2 ]]7s9PCN --自动寻路
a(J~:wgd function API_AutoMove(mapX, mapY)
'E7|L@X"r ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
\7/xb{z| local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
]I}'
[D local pathPoints = inputProxy:GetPathFindPoints()
S
8]g'! if pathPoints == nil then
:^ cA\2= return 0
F`38sq end
dvXu?F55 return #pathPoints
lq%s/l end
#v~5f;[AAs (JF\%Yj/ --停止寻路
QTLOP~^ function API_AutoMoveEnd()
] xH ` global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
L~0B end
t;4{l`dk |bBYJ --自动打怪
U#Z}a
d?VX function API_AutoFight(isAFK)
A
f
-{' if isAFK then
^(6.M\Q if not IsAFKState() then
GQ[\R&]q< global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
sXfx[)T< global.Facade:sendNotification(global.NoticeTable.AFKBegin)
9xWeVlfQ end
1$
l3-x else
a]ftE\99 if IsAFKState() then
bF}~9WEa global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
"urQUpF global.Facade:sendNotification(global.NoticeTable.AFKEnd)
VTV-$D
u[} end
5q8bM.k\7N end
].Et&v end
k@wxN!w; >yL8C:J9 function IsAFKState()
Rq\.RR]( local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
E8V,".!+E return AutoProxy:IsAFKState()
IB?5y~+h end
{WC{T2:8 QiZThAe --打开自动穿戴
4W1"=VL[g function API_AutoDress()
"0]i4d1l --不抢别人归属
IPY@9+]
global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
R_Z
H+@O global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
N}^\$sVu_ local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
IRcZyry ServerOptionsProxy._data["autoDress"] = 1
3N<FG.6 global.ConstantConfig.autousetimes = 0
,ur_n7+LH end
QU\|RX Q*lZ;~R --强制打开自动挂机拾取
D&]SPhX function API_AutoPick()
hx:x5L> local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
\Mi y+<8$ local config = ItemConfigProxy.config
gN(8T_r for k, v in pairs(config) do
?p}m[9@ --local res = string.gsub(v.pickset, "0", "1")
X#pE!mT v.pickset = v.pickset .. 1
p'_*>%4~ end
,rG$JCS'KQ end
yuhSP{pv' O-mP{ --获取人物坐标
8-po| function API_GetMapXY()
J.*dA j return ssr.GetMainPlayerMapPos()
km8[azB o end
Rr:,'cXGi //AS44^IS --获取人物状态
;zp0,[r function API_GetAction()
JA1(yt local player = global.gamePlayerController:GetMainPlayer()
}b~ZpUL! local list = global.playerManager.mPlayersInCurrViewField
k.rZj|7 L return player:GetAction()
ymzlRs1^Ct end
_STN ^
z?+N3p9 --设置宠物状态
*xt3mv/<z function API_PetSleep(isSleep)
EY&hW
l*a^ local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
v+Ooihxl if not SummonsProxy:IsAlived() then
1'}~;?_ return false
d7l0;yR&+ end
PiM@iS if isSleep then
:}j{ NM# SummonsProxy:RequestModeChange(2)
pYVQ-r%QF else
@4H*kA SummonsProxy:RequestModeChange(4)
b^FB[tZ\x end
&
XcY|y=W end
#:236^xYS U?H!:?,C --获取人物数据
[['un\~r~ function API_GetGamePlayer()
&{"aD& local player = global.gamePlayerController:GetMainPlayer()
IEO5QV:u: local list = global.playerManager.mPlayersInCurrViewField
qf+I2kyS local person = {}
&grT} person["等级"] = player:GetLevel()
*R8q)Q person["职业"] = player:GetJobID()
N0/DPZX7 person["名字"] = player:GetName()
Bm.%bA>
person["金币"] = ssr.GetMoneyCountById(1)
Joe k4t&0< person["元宝"] = ssr.GetMoneyCountById(2)
Rsqb<+7 person["绑金"] = ssr.GetMoneyCountById(3)
ULAAY$o@5 return person
Eiwo==M end
@Vc*JEW wD"Y1?Mr function API_GetGamePlayerLevel()
*y
F 9_\n local player = global.gamePlayerController:GetMainPlayer()
4Yx?75/ return player:GetLevel()
CYs:P8^ end
mVW:]|!s P b2exS( --获取周围怪物
V[Auw3) function API_GetMonster()
n|3ENN local list = global.monsterManager.mMonstersInCurrViewField
A=E1S{C local actors = {}
mmEr2\L for k, v in pairs(list) do
?MyXii<a local actor = {}
e=TB/W_ actor["mID"] = v:GetID()
vA
:1z$m actor["mName"] = v:GetName()
jsc1B actor["mRace"] = v:GetRace()
.J'}qkz~ actor["mType"] = v:GetType()
T/uj5pMG actor["mSubType"] = v:GetSubType()
G'Jsk4:c actor["mX"] = v:GetMapX()
g/'MECB actor["mY"] = v:GetMapY()
hbzU?_} actor["mAction"] = v:GetAction()
;#cb%e3 actor["mTypeIndex"] = v:GetTypeIndex()
IIs'm!"Y> actor["mAnimationID"] = v:GetAnimationID()
WHMt$W}% actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
d z&8$(f, actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
}M * Oo actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
(wnkdI{ actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
t%V!
SvT8+ actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
U c$RYPq actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
Mb uD8B actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
-dZ7;n5&_ actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
.[NB"\<
q actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
mKQ!@$* actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
LZ}C{M{=5A actor["mColor"] = "0xFFFFFF"
(
{5LB4 if v:GetType() == global.MMO.ACTOR_PLAYER then
f9F@G&&Ugg local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
+A3@{2 local label_name = global.MMO.HUD_LABEL_NAME
| Fm( local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
$62!R]C9\ if hudName then
O}"VK actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
(n|
PLi end
m "h{HgJd end
TE3A(N' table.insert(actors, actor);
iE!\)7y end
G!u
o
KiL 6ix8P;;}# return actors
^ ,d!K2` end
u4, p.mZtb U;Y{=07a@ --遍历周围玩家
3g`uLA X>u function API_GetPlayer()
kR3g,P{L local list = global.playerManager.mPlayersInCurrViewField
VkZrb2]v local actors = {}
4(f[Z9 iZ] for k, v in pairs(list) do
Cpz'6F^oP local actor = {}
D({%FQ" actor["mID"] = v:GetID()
#Huvn4x actor["mName"] = v:GetName()
{+F/lN@ actor["mRace"] = v:GetRace()
%!mJnc% actor["mType"] = v:GetType()
NVAt-u0LB actor["mSubType"] = v:GetSubType()
0V@u] actor["mX"] = v:GetMapX()
c-(,%0G0 actor["mY"] = v:GetMapY()
pPu E-EDk actor["mAction"] = v:GetAction()
Np$pz actor["mTypeIndex"] = v:GetTypeIndex()
d@<(Z7| actor["mAnimationID"] = v:GetAnimationID()
mw-0n actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
uK2MC?LP actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
a4Qr\"Qm actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
,|<2wn#q actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
4RGEg;]S actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
MuQyHEDF actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
5IE 2&V actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
bx_`S#*N actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
z:{'IY actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
?
suNA actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
g[!t@K actor["mColor"] = "0xFFFFFF"
# y%Q{ if v:GetType() == global.MMO.ACTOR_PLAYER then
;!v2kVuS] local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
DpI)qg#>V local label_name = global.MMO.HUD_LABEL_NAME
m-dyvW+ local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
M,7A|?O if hudName then
dgh)Rfp3 actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
Y!N*J end
:
9wW*Ix end
01uMbtM table.insert(actors, actor);
}1VxMx@ end
)7l+\t return actors
XCc/\ end
nlOM4fJ( g"Mqh!{
FI --遍历周围玩家EX
-,C">T%\ function API_GetPlayerExe()
a{v1[i\ local s1 = API_GetPlayer()
^I*</w8 local result = ""
t;!vjac for k, v in pairs(s1) do
o{f|==<t3# local s2 = string.format(
B2w\ "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
.'k]]2%ILp , v["mID"]
(A|Gb2 X , v["mName"]
Ue^2H[zs- , v["mRace"]
RB`Emp&T , v["Dura"]
r BQFC4L , v["mType"]
7=(rk , v["mSubType"]
sEP-jEuwG , v["mX"]
XkLl (uyh , v["mY"]
kscZ
zXv , v["mAction"]
YB
qu7& , v["mTypeIndex"]
bi;?)7p&ZY , v["mAnimationID"])
,5$V;| local s3 = ""
:vZ8n6J[ 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"
'Alt+O_ , v["mLv"]
SR7$m<0t* , v["mJobID"]
mrX 2w , v["mHP"]
uu@Y]0- , v["mHPMax"]
veIR)i@dx , v["mMP"]
r2M Iw , v["mMPMax"]
V3DXoRE-8i , v["mOwnerID"]
1RpTI7
, v["mOwnerName"]
v]SHude{ , v["mGuildName"]
ufyqfI
D , v["mColor"])
Dvbrpn!sk result = result .. s2 .. s3 .. "\r\n"
&7"a.&*9xX end
yr?*{; return result
(N{Rda*8 end
`@1y|j:m PLD6Ug --遍历周围指定NPC
5G"LuA function API_GetNpcIdByName(npcName)
W/q-^Zkt,9 local npcVec = global.npcManager:FindNpcInCurrViewField()
$N4
%I4 local npc = {}
AlT41v~6 for k, v in pairs(npcVec) do
t[* ;v local npcs = {}
qKNX^n; npc[v["mID"]] = v["mName"]
{G$I|<MD2T end
VO r*YB& for key, value in pairs(npc) do
|U)m'W-(q local sPos, ePos = string.find(value, npcName)
ilJeI@ if sPos then
8|*#r[x return key
^L#\z7 end
.@KpN*`KH end
hqrI%% return nil
S81Z\=eK end
O_^O1 2NHuZ.af --NPC名称打开NPC
q/w<>u function API_NpcTalk(npcName)
\i_y(; local npcid = API_GetNpcIdByName(npcName)
-;9pZ'r local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
e&%m[:W:< NPCProxy:RequestTalk(npcid)
^PA[fL" end
Jf6uE?. E`s9SE --NPCID打开NPC
Rj6:.KEJ function API_NpcTalkEx(npcid)
swNJ\m local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
x}o]R NPCProxy:RequestTalk(npcid)
tVVnQX end
FdwT o (fZZ`6Y function API_GetNpcTalkData()
7yp7`|,p local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
yZkHBG4 local talkData = NPCProxy:GetCurrentNPCTalkData()
^T*^L=L_( return talkData
1&N|k;#QS end
Z)}q=NjA #!V
[(/ function API_GetAllLink()
Dlz||== local talkData = API_GetNpcTalkData()
dayp1%d %. ^8&4$+ local acts = {}
Xb +)@Y4h local kv = {}
*%<Ku&C vl59|W6 for line in talkData.content:gmatch("(text=.->)") do
b*$/(2"m if string.find(line, "@") then
R-nC+)^ local key = line:match("text=(.-)|")
oEPO0O at7|r\`?- local value = line:match("(@.-)>")
%~%1Is`4J kv[key] = value
y\0<f `v6 end
\;AW/&Ea end
B198_T! $jMU|{ for result in talkData.content:gmatch("(@.-)>") do
.Rl58]x~ table.insert(acts, result)
!#cZ! end
KQ'fp:5|/@ local sendData = {
gNkx]bm UserID = talkData.npcID,
$[9,
1.?C index = talkData.index,
p_h)|*W{ --Act = "@blbumj",
^,S
\-Uy9 --commonInput = jsonData.commonInput,
S~^0
_? --inputID= jsonData.inputID,
k#"Pv" }
5<Mht6"H return acts, kv, sendData
K|*Cka{ end
X&qRanOP;z XgY( Vv --按索引号点击按
qT]Bl+h2 function API_ClickLinkByIndex(index)
R
:=C acts, kv, sendData = API_GetAllLink()
+SCUS] sendData["Act"] = acts[index + 2]
7+]T}4; local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
`L0aQ$'>z NPCProxy:ExecuteWithJsonData(sendData)
XP'Mv_!Z end
|rJ_ pL` snVz --按索购买引号点击按
z{T2!w~[ function API_ClickBuyLinkByIndex(index)
e
iS~*@ acts, kv, sendData = API_GetAllLink()
_nu
%`?Va sendData["Act"] = acts[index]
_i [.5 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
: sIZ+3 NPCProxy:ExecuteWithJsonData(sendData)
3$f%{~3 end
*UVjN_na5 YbZ<=ZzO4 --按名称点击按
7kpCBLM(} function API_ClickLinkByName(linkName)
*8k`m)h26 acts, kv, sendData = API_GetAllLink()
Dz,Fu:) sendData["Act"] = kv[linkName]
rhFa rm4a local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
'Rk~bAX NPCProxy:ExecuteWithJsonData(sendData)
!ZP1?l30 end
H8y
c< pGw|T~e% --出售物品
{#M=gDhbX function API_Sell(npcName,itemsName)
I\V33Nd local npcId=API_GetNpcIdByName(npcName)
_@D}2 local bagData=ssr.getBagData()
FxOhF03\=[ for k,v in pairs(bagData) do
q|m8G if string.find(itemsName,v.Name) then
PZ69aZ*Gs --if #v["Values"]<2 then
0^44${bA local Name = v.Name
$eQ_!7Gom$ local MakeIndex = v.MakeIndex
\phG$4(7+ local networkCtl = global.networkCtl
m'1NZV%# networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
Y{y #us1 --end
,-u | l end
&H\$O.?f end
@ [_I| end
]7kq@o/7 --全部卖
#|*;~:fz function API_SellAll(npcName)
p-V#nPb local npcId=API_GetNpcIdByName(npcName)
)CS7>Vx local bagData=ssr.getBagData()
h`&@>uEiq for k,v in pairs(bagData) do
=0xuH>WY}w --if #v["Values"]<2 then
Avw"[~Xd local Name = v.Name
M64zVxsd local MakeIndex = v.MakeIndex
&rj6<b1A local networkCtl = global.networkCtl
+T[3wL~ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
G[u_Uu=> --end
/1++ 8= end
gUDd2T# end
GV)#>PL G\h8j*o
)>at]mH --NPC购买
:0ND0A{K: function API_Buy(npcName,itemName,count)
HC
w$v# --进入子菜单
>j?5MIm03 local sendData =
AF
D/
J {
Z91gAy^z< UserID = API_GetNpcIdByName(npcName),
IDBhhv3ak Name = itemName,
jM
J[6qj }
"d'xT/l
" SendTableToServer(1015, sendData)
mm%w0dOb" local function ToBuy()
P,AS`=z local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
Rf2/[ local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
<Xw 6m$fr: for i=1,count do
L.(T"`-i if i>#list then
Y">tfLIL_ break
xt
+fuL end
h./cs'& sendData.MakeIndex= list[#list-i].MakeIndex
4,f[D9|: SendTableToServer(1014, sendData)
9.e?<u*-z end
T,(IdVlJ API_CloseNpcTalk()
d%9I*Qo0, end
n);2b\& local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
#
l~d end
,: w~- @FkNT~OZ mquna"}N function 打开子项(item)
!_<. 6ja local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
IgEg if item.SubMenu == 1 then
QHr
3J
NPCProxy:RequestNpcStoreItemList(item)
u
]E% R& end
WlP@Tm5g/ end
6 6x} |7
0]8+rWp|Nz function 子项购买(count)
/0SG local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
En6fmEn&;o for i = 1, count do
5`oor86 if i > #list then break end
k}>l+_*+7 NPCProxy:RequestNpcStoreBuy(list
) f&`v-kiAn= end =Cs$0aA end V]H<:UE 7x9YA$
IE --登录角色 wO}
3i6 -j3 -
H& function API_LoginRole(index) EBzg<-?o local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) _KmpC>J+ LoginProxy:SetSelectedRoleByIndex(index) ~2@U85"o LoginProxy:RequestEnterGame() $qQ6u! global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) g^)> -$= end <!X'- >i%q g/+M&k$ --登录 $$ _ uQf function API_Login(name, password) ^1,]?F^ local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) ABhza| local data = {} DJ}xD&G data.type = 1 ^.kas7< data.username = name PyYKeo= data.password = password !::k\}DS AuthProxy:RequestLogin(data) IvIBf2D;Q end mm#U a/~1u TOMvJ>bF --开门 ^ bM;C_<$f function API_EnterRoom(x, y) uNXh"? local qq = ssr.GetCurMapData() +6<MK; global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) l0D.7>aj local function callback() .NjdkHYR ssr.AutoMoveBegin(x, y, qq.mapID) >4M_jC. end ieBW 0eMi SL:ScheduleOnce(callback, 0.5) (/"T=`3t end 0 {{7 " Qk
-y0 --多开 idO3/>R
[ function API_PcOpen() BqZLqGOKu LuaBridgeCtl:Inst():CheckClientCount(2) w#PaN83+ end oE)c8rE ~ezCE4^& --盒子显示 V<4)'UI?k9 function API_hezi() (!X:[Ah*$ global.L_GameEnvManager._envData["isBoxLogin"] = 1 8" 8{Nf-" end qwFn(pK[ vo71T<K --遍历背包物品 MiRH i<g0 function API_GetCurBagData() 0SKt8pL` local s1 = ssr.getCurBagData() )CR8-z1` local result = "" t1C{ for k, v in pairs(s1) do [&3"kb local s1 = string.format( =j;o,
J:( "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" iUI,r* , v["OverLap"] DvOg|XUU0 , v["DuraMax"] 't)j , v["Where"] HwST^\Ao , v["Dura"] ;;nmF# , v["Name"] SmR*b2U , v["Shape"] dje3&a , v["MakeIndex"] 2~J|x+
, v["Weight"] 0l 3RwWj , v["StdMode"] /-|xxy , v["Index"]) mz\m^g3 local ss = "" >MQW{^ if #v["Values"] > 1 then Q ;k_q3 for x, y in pairs(v["Values"]) do v?LJ_>hw*T if y["Value"] > 0 then =?*V3e3{ local Values = string.format("m_Value=%s,m_ValueID=%s" BMX x(W] , y["Value"] ;4qalxzu , y["Id"]) ZN4&:
9M ss = ss .. Values ae!_u
\$ end Be]o2N;J end '.kbXw0} end yp*kMC,3 result = result .. s1 .. "," .. ss .. "\r\n" n.1a1 Tf end P{>
T?-Hj return result q"52-42 end b/5~VY*T > %Y#(_~a --获取背包是否满 T3?kabbF function API_GetBagFull() ;QEGr|( return ssr.IsBagToFull(isTips) }+=@Ci end 5<a<!]|C IB;y8e, --获取背包百分比 A(s/Nz> function API_GetBagEx() g:,4Kd| HW = ssr.GetMetaValueByKey("BW") `7
B
[< MAXHW = ssr.GetMetaValueByKey("MAXBW") wy-!1wd
ELL = HW / MAXHW * 100 A,=l9hE' return math.ceil(ELL) O/-OW: 03 end +M.|D,wg2 *@BBlkcx --获取背包是否满 M]_vb,=1 function API_GetBagFull() z.H`a+cl return ssr.IsBagToFull(isTips)
w^p2XlQ< end 6)bfd^JYn D3HB`{ --读取地图ID 3=K-+dhk|t function API_GetMapID() 3<`h/`ku local tt = ssr.GetCurMapData() 7olA@;$ return tt.mapID Sv>aZ end e4`KnHsL Xs?>6i@$$ --读取地图名称 zYs? w= function API_GetMapName() UNAuF8>K local tt = ssr.GetCurMapData() B " B return tt.mapName oNh .Zgg end 0y ;gi3W LnyA 5T --获取背包最大数 v0xi(Wu function API_GetMaxBag() TX
+t
return ssr.GetMaxBag() 2
rBF<z7 end oDP|>yXC) &a(w0< --使用物品 x
p$0J<2 function API_UseItem(itemName) eo,]b1C2n local items = ssr.getQuickUseData() LaIif_fie^ local item = ssr.getCurBagData() z"H%Y8 for k, v in pairs(items) do $fn^i. if v.Name == itemName then *l
Tu- ssr.UseItemByIndex(v.Index) dW5z0VuB$/ end ~G$OY9UC end M1>a,va8Zq D2mB4
for k, v in pairs(item) do W UV Q_<i+ if v.Name == itemName then a&cV@~ ssr.UseItemByIndex(v.Index) o._^ end |JDJ{;o end r\1*N.O3|O end tw(2
V$J ZEMo`O --获取金币数量 (l^lS=x function API_GetMoney(Index) tsa6: D return ssr.GetMoneyCountById(Index) J+4uUf/d! end Q:LuRE!t =0-qBodbl function API_MergeTables(t1, t2) Z:OO|x local merged = {} }v!6BU6<Q for key, value in pairs(t1) do 0qZ)$YKq merged[key] = value NR [VGZj end j)0R*_-B[ for key, value in pairs(t2) do
2U+&F'&Q merged[key] = value [/kO> end >*(>%E~H return merged ~@O4>T+VW end !6%mt} h @rF\6I Qp54(` --获取物品数量 \r2qH0B function API_GetItemCount(itemName,isBind)
/6fPC;l local items=ssr.getQuickUseData() CNz[@6-cYU local bagData=ssr.getBagData() g\Zk*5( items=API_MergeTables(items,bagData) oF^B J8%Lm local bind=isBind or false ]aR4U` local count=0 `sXx,sV?B for k,v in pairs(items) do _aGdC8%[ if bind then WI9.?(5q --绑定 ,jWd?-NH if v.Name==itemName and v.Bind~=nil then z~_\onC count=count+ v.OverLap |)_R
bqZ end pWp2{G^XB else S ] &->5" --不绑定 M}<=~/k`j if v.Name==itemName and v.Bind==nil then !RD,:\5V count=count+ v.OverLap Y^G3<.B end 4s8E:I=K end >tzXbmFp; end LNb![Rq return count E6gEP0b end 2uTa}{/% --读取人物坐标 QUDVsN# vB{b/xmah )X/Faj
e CvJm7c function API_GetMapXY() N'1~ wxd local aa = ssr.GetMainPlayerMapPos() i<?4iwX%i* local aa = string.format("x=%s,y=%s" MD)"r>k , aa.x 8GP}g?% , aa.y) (D{}1sZBQ return aa l_%~X9" end v3"xJN_,[p lN'/Z&62 -- 获取角色是否活着 F~AS(sk function API_IsRoleAlive() Y<+4>Eh return ssr.IsRoleAlive() |gz,Ip{ end 6Ts`5$e bM-Rj1#Lo --读取聊天信息 s*f.` A*) function API_ChatMsg() 6~S0
t1/t? local function listcb(msg) U!5*V9T~J --table h"ylpv+ ChatTable = msg !;gke,fB end WdAGZUp ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) Mvv=)?: if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then Q(6(Scp{ local ChatT = string.format(
(ZK >WoV "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" xN
kY'4% , ChatTable.SendName (0Cszm. , ChatTable.SendId q9!9OcN2 , ChatTable.ChannelId aAM UJk , ChatTable.mt uH[0kh , ChatTable.SendTime G#:!wI , ChatTable.Msg) r\d:fot return ChatT <3}l8Z end obq}# end =@ZtUjcJx 0 l@P]_qq` function API_ChatMaa() ;%<4U^2 return ssr.GetMaxBag() t]
wM_]+ end to 6Q90( W<VHv"?V --修理装备 !&lPdEc@T function API_CopyTable(original) njMy&$6a## local copy = {} ][nUPl for key, value in pairs(original) do .}N^AO= if type(value) == "table" then J"rwWIxO* copy[key] = API_CopyTable(value) <h=M
Rw,l else GJs[m~`8# copy[key] = value \<B6> end !@{[I:5 end S(i(1H
s. return copy sV[Z|$&Z end )yW_O: 修衣服 = "0,4" --衣服,头盔 9 Zm<1Fw 修武器 = "1" )uvFta<( 修项链 = "3" l|A8AuO*? 修手镯 = "5,6" zDyeAxh4 修戒指 = "7,8" --左戒指 右戒指 "ru1 ;I
function API_Repair(npcName, itemPos) }!
V<"d,! local npcId = API_GetNpcIdByName(npcName) )c/y07er local tempData = ssr.getEquipData() o(/ia3 local tobeRepair = {} ?w/
nZQWi for k, v in pairs(tempData) do x
5Dt5Yp"o if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then D~Ohw sL4 local tmp = { rVy\,#| Name = v.Name, 03WRj+w MakeIndex = v.MakeIndex, H$amt^|zQ4 Where = v.Where X.l"f'`l } f+Me dc~ table.insert(tobeRepair, tmp) ukf\* ssr.TakeOffEquipRequest(v) ~^~RltY end ZHlin#" end [V,
;X
--脱完 开始修理 hX%v`8 for k, v in pairs(tobeRepair) do T zYg
H local Name = v.Name 43=-pyp local MakeIndex = v.MakeIndex sDm},=X} local networkCtl = global.networkCtl &6=ZT:.6Te networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) )]>
'7] i end kZ-~
;fBe --开始穿 ,7jiHF local function ToDress() "!6~*!]c for k, v in pairs(tobeRepair) do n "KJB ssr.TakeOnEquipRequest(v, v["Where"]) -#;VFSz,9* end ptyDv end h)
PB local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) up3<=u{>
API_CloseNpcTalk() 1r&
?J.z25 end |/=p HcVs(]tIW F>kn:I"X) )^S^s>3 药店={0} u6I0<i_KZ 首饰店={19,20,21,22,23,24,26} H0 n@kKr 衣服店={10,11,15,16,27,28,62,64} _8pkejg 武器店={5,6} 1vK(^u[ 杂货店={3,25,2,30,31} [pgkY!R?) 铁匠铺={43} ":#x\; 书店={4} ((>3,%B` --检测背包是否有指定类型物品 {_ho!OS> function API_IsNeedToStore(StdModes) Z?v6pjZ? local function IsNeed(StdMode) I+?$4SC local bagData=ssr.getBagData() 2mU-LQ1WN for k,v in pairs(bagData) do ;
9&.QR( if v.StdMode==StdMode then q\y# return true 9Q7cUoxY end OGi4m | end :'rZZeb' local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
i^ cM@? local equip = EquipProxy:GetEquipData() i-s?"Fk for k,v in pairs(equip) do Doc'7P if v.StdMode==StdMode then f9XO9N,hE: if tonumber(v.Dura)/v.DuraMax < 0.9 then 9hLmrYNM1 return true RyQ\5^z end Ldj^O9p( end }:l%,DBw end lPQ
Ut!xI return false VfC[U)w*vm end nB
Iv{ '`~(Fkj for k,v in pairs(StdModes) do %3#I:>si if IsNeed(v) then xKLcd+hCZ return true qMdtJ(gq end *o\Y~U-so end -kri3?Y, return false l)PFzIz=V end ]#-/i2-K ($ B]9* K
6yFpVl --范围内怪物个数 bool型返回distance UNcJ= function API_范围内怪物个数(distance, count) JvWs/AG1 local proxyUtils = requireProxy("proxyUtils") ^AjYe<RU} local mainPlayerID = global.gamePlayerController:GetMainPlayerID() =
']}; return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) 9Bvn>+_K end ?]:EmP --关闭NPC框 I;.!
hV>E function API_CloseNpcTalk()
&B7+>Ix, global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) A"<)(M+kG global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) qTa]th; end b}*@=X=4o --无怪随机 I1 R\Ts@ function API_无怪随机() 9s6>9hMb) local list = global.monsterManager.mMonstersInCurrViewField zmfRZ!Eh local actors = {} ze`1fO|% for k, v in pairs(list) do <d5@CA+M local actor = {} YEzU{J actor["mID"] = v:GetID() 6cJ<9i
& table.insert(actors, actor); H2_/,
n end "jMqt9ysN if #actors < 1 then JnfqXbE API_UseItem("随机传送石") HF"Eys local aa = API_GetItemCount(1078) EXuLSzQwv if aa < 1 then S_J,[#& ssr.BuyStoreItemsById(2, 1) |xn#\epy@ end *HR+a#o end PU W[e% return #actors .%q$d d>> end $@_{p*q 4SgF,a
c3r --API_周围怪物数量 nqT> qS[Z
function API_周围怪物数量() -<_QF82 local list = global.monsterManager.mMonstersInCurrViewField !O|ql6^; local actors = {} 3gAR4 for k, v in pairs(list) do 5iVQc -m& local actor = {} ZWO)tVw9G actor["mID"] = v:GetID() 11@]d]v , table.insert(actors, actor); 2d*
_Qq1 end \K;op2 return #actors L>dkrr)e end r'/\HWNP e@E17l- --API_周围人物数量 参数是 白名单 i}v9ut]B function API_视野内敌人(Name, lv) zh\$t]d<I local list = global.playerManager.mPlayersInCurrViewField bNGCOj local myName = global.gamePlayerController:GetMainPlayer():GetName() [)^mBVht local actors = {} lwc5S`" local names = myName .. "," .. Name MaO"#{i for k, v in pairs(list) do gH[,Xx?BN! local actor = {} &)n_]R#) actor["mID"] = v:GetID() `H\)e%] actor["mName"] = v:GetName() v5_7r%Hiw actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] 69-:]7.g --local myName=global.gamePlayerController:GetMainPlayer():GetName() u:@U
$:sZ if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then B{C_hy-fw table.insert(actors, actor); O gmSQ end K/txD20
O| end ~2
@Lx3t$ return #actors W^es;5 end VPt9QL( u)a' ,>n%
~'gb --自动捡 re^Hc(8M API_NoBodyPickEnable=true !^e =P%S 0"78/6XIs --捡取物品白名单 ]dSK
wxk API_MyPlayerNames = "我不是药神," Bq@zaMv /`
[!_4i --全图捡 4U=75!> API_MapPickEnable = true T>A{qu --自动存 rAb&I"\ZY API_InStoreEnable=false MuwQZ]u API_InStoreItems="" b7HffO O --自动扔 qj!eLA-aD API_ItemDropEnable=false MPIlSMe --自动用 ^rL_C}YBj- API_ItemKeepCountEnable=true /)EY2Y' --自动领取 K B!5u 9 API_GetMailItemEnable=false i0:>Nk --自动买回城石 j(eFoZz, API_BuyStoneEnable=false DVlJ*A API_RecoveryItemMaxMoney=1000000 T-gk <V --地图 PFM'&;V API_PreMapName="盟重省" (&[[46
--开关 z
x@$RS+] API_TimerEnable=true DIaYo4 \}5p0.= API_TimerEnable1s=true e4`
uVq5 API_TimerEnable10s=true G,XPT,:% --1S定时器 6?qDdVR~] function API_AutoSchedule1s() x({H{'9? if GET_GAME_STATE() == "world" and API_TimerEnable1s then "0CjP+1k --自己设置的自动捡 V5mlJml2( --API_PickItems() `]=oo%(h --系统自动捡 @*>Sw>oet if API_NoBodyPickEnable then Y
ya`&V if API_IsInCurrViewField(API_MyPlayerNames) then y<- _(^ API_OpenGroupPick(false) AQss4[\Dx --release_print("来人,关自动捡") t
P"\J(x --API_RunAway() --逃跑 EH n"n"Y --API_UseItem3Second("回城石") /6KIl else l>6@:nq|R API_OpenGroupPick(true) x[Im%k API_PickItems() 9MY
7a=5E~ --release_print("无人,开自动捡") L?5f+@0. end 2&Jdf end nwA8ALhE end @F~LW6K end x;LzG t:w --10s定时器 JWv{=_2w function API_AutoSchedule10s() 6/Fzco#N if GET_GAME_STATE()=="world" and API_TimerEnable then !TKkec8$ --自动扔 p
`F9Amb if API_ItemDropEnable then `_vB+a API_DropItemKeep("回城卷",2) x%N\5 V1 end -c%dvck^, 47r&8C+&\ --自动组队 X^@I]. if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then rJJ[X4$ API_InviteJoinTeam() XL$* _c <) API_TeamApplyUpdate() --允许所有邀请 'zZcn" +! end \.uc06 e`K)_>^n# --自动用消耗品 l@JSK; if API_ItemKeepCountEnable then ]Mi.f3QlO6 if API_GetItemCount("强效金创药") > 1 then S'LZk9E API_UseItem("强效金创药") \4d.sy0&>- end .8WXC
if API_GetItemCount("强效魔法药") > 1 then EW<kI+0D API_UseItem("强效魔法药") 3;[DJ5 end b:J(b? if API_GetItemCount("太阳水") > 1 then V\]" }V)" API_UseItem("太阳水") 0aI;\D*Ts end TUIk$U?/I if API_GetItemCount("魔法药(中量)") > 7 then G:W>I=^DaR API_UseItem("魔法药(中量)") "O[j!fG8, end (u3s"I
d if API_GetItemCount("魔法药(中量)") < 1 then CO:u1? API_UseItem("魔法药(中)包") 44ed79ly0) end 5O/i3m26 if API_GetItemCount("金创药(中量)") > 1 then ZR0r>@M3v< API_UseItem("金创药(中量)") nH|,T% end -
r7]S if API_GetItemCount("护身符(大)") < 1 then SqA
J-_~ API_UseItem("回城卷") Z8#Gwyinx end !v.9"!'
N if API_GetItemCount("魔法药(中量)") < 1 and SL:GetMetaValue("MAP_NAME") ~= "盟重省" and API_GetItemCount("魔法药(中)包") < 1 then Pmg)v!" API_UseItem("回城卷") (ll*OVL end ?, r~= if SL:GetMetaValue("HP") < 30 and not SL:GetMetaValue("IN_SAFE_AREA") then X-LA}YH=tS API_UseItem("回城卷") uX/$CM end OZY, @c end H)w(q^i }x0- V8 if API_GetMailItemEnable then N6OMYP1 global.networkCtl:SendMsg(global.MsgType.MSG_CS_EMAIL_GET_REQUEST, 2) i_Re* global.Facade:sendNotification(global.NoticeTable.Layer_Enter_Current) /u%h8!"R end (-77[+2 end g*UMG> end H9)m^* O,2~"~kF --定时器 I04jjr:< function API_TimerStart() 4+$b~u --1S定时开关
iIT8H\e
if API_AutoScheduleID1s == nil then >LC<O. API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) "9EE1];NT else *OJ/V O ssr.UnSchedule(API_AutoScheduleID1s) H5CR'Rp API_AutoScheduleID1s = ssr.Schedule(API_AutoSchedule1s, 1) $?G"GQ!. end WEg6Kz --10S定时开关 PNOGN|D if API_AutoScheduleID10s == nil then ;22l"-F API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) l>gI&1)% else j(:I7%3&(* ssr.UnSchedule(API_AutoScheduleID10s) K,'*Dz API_AutoScheduleID10s = ssr.Schedule(API_AutoSchedule10s, 10) |BT MJ:B end =]`lN-rYw end 9>zcBG8f function API_IsInCurrViewField(names, level) O,bkQY$v local lv = level or 0 "xmP6=1 local nameList = names or "" T<3BT local list = global.playerManager.mPlayersInCurrViewField VV4Gjc local actors = {} 9E2j! for k, v in pairs(list) do xkNyvqcw local actor = {} )n49lr6X actor["mID"] = v:GetID() {Gq*e/ actor["mName"] = v:GetName() `1*nL,i actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] u]NZ`t%AP if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then D\w h;r table.insert(actors, actor); Zv11uH-C end `\`> 0hlu end vu!d)Fy if #actors > 0 then QxuhGA return true 0~wF3BgV else n+@F`]Ke return false n\Fp[9+Z\ end 7!,YNy% end ]M/9#mD9~ tWTKgbj
( --打开组捡 /+*#pDx/zW function API_OpenGroupPick(isOpen) Z=B_Ty local GameSettingProxy = global.Facade:retrieveProxy(global.ProxyTable.GameSettingProxy) 1g##sSa6 local count = 0 <!-sZ_qq for key, value in pairs(GameSettingProxy._pickConfig) do W?yd#j count = count + 1 CQ`=V2:"ON end _=ua6}Xp local function SetGroup(pickgroup) 9Zry]$0~R for i = 1, count do !Fo*e GameSettingProxy:SetPickGroupValue(i, pickgroup) M.-"U+#aD end Xs&TJ8a end Pq*s{ if isOpen then 6u`F
d# local pickgroup = { 1, 1, 1 } D|Iur W1f SetGroup(pickgroup) ES~^M840f else 21s4MagC local pickgroup = { 1, 1, 0 } dzK{
Z SetGroup(pickgroup) [b{CkX06 end yR{x}DbG end 7 n]65].t du$|lxC