游戏地址
B~G?&"] www.fgcq996.com 5(]=?$$*t 那年传奇百区1.76 r8A
KC[ql}JP 找到 lua_State 然后调用下面的函数就能实现功能
79^Y^.
D 一个跑单狗注意qq1946913194
sB"Oi|#lk 游戏账号密码。fanren9527 qq2293307009 tt$DWmm
olB?"M=H 搞完演示完,删除好友跑单 m0DD|7}+ @G@,)`p4? --自动寻路Ex
8M<q-sn4B function API_AutoMoveEx(mapX, mapY)
E_[|ZrIO&* ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
<l opk('7 local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
#N.W8mq local pathPoints = inputProxy:GetPathFindPoints()
["TUSf] if pathPoints == nil then
1qp<Fz[ return 0
x1VBO.t=* end
pnl7a$z return #pathPoints
gi\2bzWkbX end
Up*1j:_O
M=:!d$c
--自动寻路
^yL6A1 function API_AutoMove(mapX, mapY)
ce7$r*@! ssr.AutoMoveBegin(mapX, mapY, ssr.GetCurMapData().mapID)
n;+CV~ local inputProxy = global.Facade:retrieveProxy(global.ProxyTable.PlayerInputProxy)
TwJiYXHw? local pathPoints = inputProxy:GetPathFindPoints()
v'na{" if pathPoints == nil then
6Lj=%& return 0
lQ(I/[qVd end
&\),V 1" return #pathPoints
Aj#bhv end
R-QSv$ u5zL;C3O --停止寻路
jeLRS8]; function API_AutoMoveEnd()
69/aP= global.Facade:sendNotification(global.NoticeTable.AutoMoveEnd)
Kcf1$`F24 end
}% 2hBl/ `s1>7XWf
--自动打怪
%:Mi6sR| function API_AutoFight(isAFK)
9n9Z if isAFK then
l Oxz&m if not IsAFKState() then
>1uo5,wrF global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 1)
r'*x><m' global.Facade:sendNotification(global.NoticeTable.AFKBegin)
h.T]J9;9 end
Rn?Yz^
1q else
zNG]v?JAh if IsAFKState() then
I
"Qf};n global.networkCtl:SendMsg(global.MsgType.MSG_CS_AUTOPLAYGAME_REQUEST, 2)
3mef;!q global.Facade:sendNotification(global.NoticeTable.AFKEnd)
["O/%6b9+ end
(d
vsGYT|. end
"-
2HKs end
nUb0R~wr$G 0SS,fs<w3 function IsAFKState()
a9LK}xc={ local AutoProxy = global.Facade:retrieveProxy(global.ProxyTable.Auto)
C?dQ
QB$ return AutoProxy:IsAFKState()
/Uxp5 b h end
_L8|ZV./
M$J{clr --打开自动穿戴
@kh:o\ function API_AutoDress()
0c}pg:XT --不抢别人归属
"R< c global.MMO.SETTING_IDX_NO_ATTACK_HAVE_BELONG =1
v;6O# ta' global.MMO.SETTING_IDX_AUTO_PUT_IN_EQUIP = 1
5z/*/F=X local ServerOptionsProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerOptionsProxy)
&JUHm_wd&S ServerOptionsProxy._data["autoDress"] = 1
6&9}M Oc global.ConstantConfig.autousetimes = 0
E^s<5BC; end
K x4_`;> s8:-*VR9 --强制打开自动挂机拾取
J^w!?nk function API_AutoPick()
SHow~wxw local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
<Pn]{N local config = ItemConfigProxy.config
|(eR
v?Qy@ for k, v in pairs(config) do
~SzHIVj:6 --local res = string.gsub(v.pickset, "0", "1")
!#[B#DZc( v.pickset = v.pickset .. 1
I@/s&$H`l end
y@Gl'@-O end
fvE:'( #? 9M12|X\]8 --获取人物坐标
rbt/b0ET function API_GetMapXY()
x&
a<u@[wa return ssr.GetMainPlayerMapPos()
8el\M/u{ end
E\Qm09Dj`< D[H #W[ --获取人物状态
w. c]
function API_GetAction()
-prc+G,qyp local player = global.gamePlayerController:GetMainPlayer()
xfzGixA local list = global.playerManager.mPlayersInCurrViewField
XG!s+ShFV return player:GetAction()
fW3awR{ end
P:OI]x4 (
O!Q[WLS --设置宠物状态
gm8FmjZtf function API_PetSleep(isSleep)
<$>Jsv local SummonsProxy = global.Facade:retrieveProxy(global.ProxyTable.SummonsProxy)
fbrCl!%P if not SummonsProxy:IsAlived() then
3;%dn\
D return false
huat,zLS end
7Zw.m
M!i if isSleep then
'eYM;\%(' SummonsProxy:RequestModeChange(2)
y _
:~ else
z)_h"y?H{% SummonsProxy:RequestModeChange(4)
59MpHkr end
*Y]()#?Gr end
0ZAT;ea B ]EWEW*'
j --获取人物数据
w D}g\{P function API_GetGamePlayer()
5H^" local player = global.gamePlayerController:GetMainPlayer()
7=@3cw
H local list = global.playerManager.mPlayersInCurrViewField
BG9.h! local person = {}
`JAM]qB" person["等级"] = player:GetLevel()
A(@VjXl person["职业"] = player:GetJobID()
5Tg[-tl person["名字"] = player:GetName()
Yw6^(g8 person["金币"] = ssr.GetMoneyCountById(1)
Q!ReA{ person["元宝"] = ssr.GetMoneyCountById(2)
9Hm>@dBhM person["绑金"] = ssr.GetMoneyCountById(3)
Oz1S*<]=,~ return person
FzzV% end
s&)>gE\ 78UE?) X" function API_GetGamePlayerLevel()
*l.tsICmbP local player = global.gamePlayerController:GetMainPlayer()
MJ_]N+ return player:GetLevel()
cii!
WCu end
NpAZuISD! _I/uW|> --获取周围怪物
zDohp 5, function API_GetMonster()
&UxI62[k local list = global.monsterManager.mMonstersInCurrViewField
<$@*'i^7Ez local actors = {}
U][\|8i for k, v in pairs(list) do
oYR OGU
local actor = {}
!v\_<8 actor["mID"] = v:GetID()
),rd7GB> actor["mName"] = v:GetName()
w!--K9 actor["mRace"] = v:GetRace()
6k+4R< actor["mType"] = v:GetType()
"CY#_) actor["mSubType"] = v:GetSubType()
_Squ%z:D actor["mX"] = v:GetMapX()
lS96sjJp@ actor["mY"] = v:GetMapY()
We)l_>G actor["mAction"] = v:GetAction()
cV
f}8qf) actor["mTypeIndex"] = v:GetTypeIndex()
|y$8!*S~( actor["mAnimationID"] = v:GetAnimationID()
yKB&][)& actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
lO/?e!$ actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
:cA%lKg actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
Q:^.Qs"IK actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
M" vd/FV actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
vE{L `,\q actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
$2/v8 actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
,LodP%%UV actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
kNk$[Yfs actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
~]V}wZt>h actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
8nE}RD7bx actor["mColor"] = "0xFFFFFF"
:lE_hY if v:GetType() == global.MMO.ACTOR_PLAYER then
TsF>Y""*M local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
zEy,aa:M local label_name = global.MMO.HUD_LABEL_NAME
hF^y4v|5 local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
tl"?AQcBR if hudName then
QzilivJf actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
[Ol~}@gV end
YmPNaL end
M]7>Ar'zsG table.insert(actors, actor);
%U?1Gf e end
_%]x-yH!@ @;t6Slc"~ return actors
05ovz
end
T
*{nf A+41JMH --遍历周围玩家
x%RG>),U function API_GetPlayer()
@Yj+u2! local list = global.playerManager.mPlayersInCurrViewField
3%L@=q local actors = {}
E+z"m|G for k, v in pairs(list) do
jz$ ]"\G# local actor = {}
;!(GwgllD actor["mID"] = v:GetID()
AU4K$hC^ actor["mName"] = v:GetName()
GV0-"9uwX~ actor["mRace"] = v:GetRace()
DIBoIWSuR actor["mType"] = v:GetType()
?rxq//S2 actor["mSubType"] = v:GetSubType()
UUR+PfY actor["mX"] = v:GetMapX()
u3vM ! actor["mY"] = v:GetMapY()
<^d
a-b>C actor["mAction"] = v:GetAction()
Xj5oHHwn actor["mTypeIndex"] = v:GetTypeIndex()
"I,=L;p actor["mAnimationID"] = v:GetAnimationID()
s2`Qh9R
actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1]
-*[:3% actor["mSex"] = (v.GetSexID and { v:GetSexID() } or { 0 })[1]
&>A<{J@VL actor["mJobID"] = (v.GetJobID and { v:GetJobID() } or { 0 })[1]
)
>;V72 actor["mHP"] = (v.GetHP and { v:GetHP() } or { 0 })[1]
1n!xsesSc actor["mHPMax"] = (v.GetMaxHP and { v:GetMaxHP() } or { 0 })[1]
SIZZFihcYh actor["mMP"] = (v.GetMP and { v:GetMP() } or { 0 })[1]
i
`^[_ actor["mMPMax"] = (v.GetMaxMP and { v:GetMaxMP() } or { 0 })[1]
RdqB^>X actor["mOwnerID"] = (v.GetOwnerID and { v:GetOwnerID() } or { "" })[1]
ac!!1lwA actor["mOwnerName"] = (v.GetOwnerName and { v:GetOwnerName() } or { "" })[1]
EE5mVC& actor["mGuildName"] = (v.mGuildName and { v.mGuildName } or { "" })[1]
vHXCT?FuG actor["mColor"] = "0xFFFFFF"
-]Y@_T.C if v:GetType() == global.MMO.ACTOR_PLAYER then
v2jpao<K local batch_label = global.MMO.HUD_TYPE_BATCH_LABEL
9>k_z&< local label_name = global.MMO.HUD_LABEL_NAME
C K9FAuU local hudName = global.HUDManager:GetHUD(v:GetID(), batch_label, label_name)
R3|r`~@@ if hudName then
X'J!.Jj actor["mColor"] = GetColorHexFromRBG(hudName:getColor())
BcxALRWE end
b'%)?{E end
p(6KJK\ table.insert(actors, actor);
B'&QLO| end
%R^*MUTx return actors
.]YTS end
<j}A=SDZ) He*c=^8k --遍历周围玩家EX
;<l#k7 / function API_GetPlayerExe()
<Uc?#;%Y} local s1 = API_GetPlayer()
xi[\2g+ local result = ""
Q.,2G7[ < for k, v in pairs(s1) do
#Q1}h local s2 = string.format(
7S2"e[-x "mID=%s,mName=%s,mRace=%s,Dura=%s,mType=%s,mSubType=%s,mX=%s,mY=%s,mAction=%s,mTypeIndex=%s,mAnimationID=%s,"
T# .pi@PF> , v["mID"]
*f o>
, v["mName"]
ipC
<p?PpR , v["mRace"]
\:4SN&I~ , v["Dura"]
7yQw$zG,Iz , v["mType"]
yJ4ZB/ZQ , v["mSubType"]
#QNa|
f#= , v["mX"]
B!1h"K5.($ , v["mY"]
TW6F9}'f& , v["mAction"]
xmi@
XL@t , v["mTypeIndex"]
a4&Aw7"X , v["mAnimationID"])
4 '5|YGQj local s3 = ""
nc^
DFP 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"
Xp[x O 0 , v["mLv"]
,lcSJ^yr , v["mJobID"]
L6./5`b
s , v["mHP"]
]
@:x<> , v["mHPMax"]
N/78Ub , v["mMP"]
3X%h
?DC , v["mMPMax"]
an2Yluc; , v["mOwnerID"]
~P BJ~j+G , v["mOwnerName"]
rXR!jZ.hi , v["mGuildName"]
$wC'qV
* , v["mColor"])
"0 $UnR result = result .. s2 .. s3 .. "\r\n"
Y94S!TbB end
#z+?t return result
cH6++r end
8a3EVc C6'K)P[p --遍历周围指定NPC
+c$:#9$ | function API_GetNpcIdByName(npcName)
ZeqsXz local npcVec = global.npcManager:FindNpcInCurrViewField()
E[cH/Rm local npc = {}
VWc)AfKe for k, v in pairs(npcVec) do
m*.+9 6 local npcs = {}
xqb*;TBh* npc[v["mID"]] = v["mName"]
?I$- im end
^yX >^1 for key, value in pairs(npc) do
c~+KrWbZ~ local sPos, ePos = string.find(value, npcName)
2ck0k,WP if sPos then
]\y]8v5( return key
=~>g--^U end
82iFk`)T end
sC A return nil
qrf90F) end
J7Mbv2D *-*SCA`E^= --NPC名称打开NPC
G@txX
' function API_NpcTalk(npcName)
]$=#:uf local npcid = API_GetNpcIdByName(npcName)
On|b- local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
6qSsr] NPCProxy:RequestTalk(npcid)
~owodc end
>a&IFi,j _2Mpzv --NPCID打开NPC
qw
03]a function API_NpcTalkEx(npcid)
]h,iyWSs local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
e%EO/ 2" NPCProxy:RequestTalk(npcid)
msY6zJc` end
Y?$ *M/:W =,t function API_GetNpcTalkData()
GVhy
}0| local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
hr!' local talkData = NPCProxy:GetCurrentNPCTalkData()
|nfMoUI return talkData
=*R6O, end
JT&RaFX >}: function API_GetAllLink()
;W]9DBAB local talkData = API_GetNpcTalkData()
]GO=8$Z 0Py*%}r1 local acts = {}
w+wtr[;wwL local kv = {}
N=\weuED u 7
:Iv for line in talkData.content:gmatch("(text=.->)") do
yfal'DqKF if string.find(line, "@") then
B77`azwF local key = line:match("text=(.-)|")
wr5v-_7r, FA+"t^q
local value = line:match("(@.-)>")
r
sq?4+\ kv[key] = value
Sy']fGvx end
}|%1LL^pB end
eC94rcb}i{ `?O0) for result in talkData.content:gmatch("(@.-)>") do
C57m{RH table.insert(acts, result)
]6F\a= J end
u-_1)' local sendData = {
dyk(/#*7W UserID = talkData.npcID,
!6x7^E;c index = talkData.index,
&B]1 VZUp --Act = "@blbumj",
ujzfy --commonInput = jsonData.commonInput,
0HUylnXf0 --inputID= jsonData.inputID,
Z&79: 9=#> }
=^Sx
Z Bn return acts, kv, sendData
#IJeq0TVB end
S+#|j
fY6~Z
BvK --按索引号点击按
j
wUX?`6jX function API_ClickLinkByIndex(index)
k
<5g acts, kv, sendData = API_GetAllLink()
Xdwpn+7s sendData["Act"] = acts[index + 2]
}=}wLm#&1 local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
|B^Mj57DO NPCProxy:ExecuteWithJsonData(sendData)
tHAe end
gJCZ9{Nl BNj_f --按索购买引号点击按
XMiu}w! function API_ClickBuyLinkByIndex(index)
$rlrR'[H acts, kv, sendData = API_GetAllLink()
[Ky3WppR sendData["Act"] = acts[index]
$
nHD,h local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
.T)wG;+ NPCProxy:ExecuteWithJsonData(sendData)
]jYFrOMy4S end
tJ
2GSZ` \h_q] --按名称点击按
N/ f7"~+` function API_ClickLinkByName(linkName)
>,E^ R `y acts, kv, sendData = API_GetAllLink()
*\(z
"B sendData["Act"] = kv[linkName]
#q h
, local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
hf^<lJh~= NPCProxy:ExecuteWithJsonData(sendData)
Nke!!A}\| end
U`lK'.. :PtZKt;~X --出售物品
i")0 3b function API_Sell(npcName,itemsName)
WN<g _8QR local npcId=API_GetNpcIdByName(npcName)
![sXR local bagData=ssr.getBagData()
loO"[8i.k for k,v in pairs(bagData) do
X6",Xr!{ if string.find(itemsName,v.Name) then
1`YU9? --if #v["Values"]<2 then
_CfJ Kp) local Name = v.Name
g`%in local MakeIndex = v.MakeIndex
#fYB4.i~ local networkCtl = global.networkCtl
tc<uS%XT4^ networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
iaCV8`&q% --end
GB35o uE end
#c5jCy}n end
Dnl<w<}ZU: end
Xl$,f`f~ --全部卖
993f6 function API_SellAll(npcName)
8;V9
%h`P> local npcId=API_GetNpcIdByName(npcName)
nYFrp)DLK local bagData=ssr.getBagData()
wD=]U@t`, for k,v in pairs(bagData) do
!
5NuFLOf --if #v["Values"]<2 then
8AX_y3$ local Name = v.Name
:
nQlS local MakeIndex = v.MakeIndex
0/b
_T local networkCtl = global.networkCtl
<^'{=A>
networkCtl:SendMsg(global.MsgType.MSG_CS_NPC_STORE_SELL_ITEM, npcId, MakeIndex , 0, 0, Name , string.len(Name) )
LP=j/qf| --end
d 8DU[p end
](A2,F
9(U end
@p
L9a1PJv xH xTL>,? TI8r/P?
]V --NPC购买
fEX=csZ86 function API_Buy(npcName,itemName,count)
5&V=$]t --进入子菜单
3iIy_nWC local sendData =
qh:Bc$S {
REU," UserID = API_GetNpcIdByName(npcName),
}Nsdk',} Name = itemName,
sl `jovT[Y }
+a3E
=GJ SendTableToServer(1015, sendData)
IQRuqp KL local function ToBuy()
Fq@o_bI local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
&CQO+Yr$l local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
z@i4
for i=1,count do
BtZ]~S}v if i>#list then
l2qvYNMw break
5$:
toL end
EU %,tp sendData.MakeIndex= list[#list-i].MakeIndex
})H d]a SendTableToServer(1014, sendData)
/\c'kMAW! end
BG+i tyH API_CloseNpcTalk()
Z*ip=FYR end
d=PX}o^ local scheduleID = ssr.PerformWithDelayGlobal(ToBuy, 1)
iCE!TmDT end
>%k6k1CZ yQE'
!m E4L?4>V@\ function 打开子项(item)
njF$1? )sq local NPCProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
l6ym <V(1p if item.SubMenu == 1 then
;^5k_\ NPCProxy:RequestNpcStoreItemList(item)
n7cy[%yT end
bI55G#1G end
_cX}!d!j eF,F<IJT{ function 子项购买(count)
MLu!8dgI local list = NPCProxy.facade.view.mediatorMap.NPCStoreMediator._layer.itemList
O\ZC$XF for i = 1, count do
G
aV&y if i > #list then break end
lL:a}#qxU NPCProxy:RequestNpcStoreBuy(list
) ZpV]X(Px(o end rG}e\ziKuj end FfdB% (Jk&U8y --登录角色 q(6.VU@ n^Ca?|}
, function API_LoginRole(index) +e-F`k local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login) }l|S]m!
LoginProxy:SetSelectedRoleByIndex(index) kh5a >OX LoginProxy:RequestEnterGame() ~v+kO~ global.Facade:sendNotification(global.NoticeTable.Audio_Stop_BGM) wqb4w7% end ^$K&Met "XR=P>
xk --登录 #;]#NqFX function API_Login(name, password) X.eOw>. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy) 3m1(l?fp local data = {} rm8Ys61\= data.type = 1 C9!t&<\} data.username = name
bDkZU data.password = password K*SgEkb'l AuthProxy:RequestLogin(data) USVDDqZ end 1f`De`zXzr "bm|p/A --开门 eQuu\/z*H function API_EnterRoom(x, y) HIXAA?_eh= local qq = ssr.GetCurMapData() JWixY/ global.networkCtl:SendMsg(global.MsgType.MSG_CS_OPEN_DOOR_REQUEST, 0, x, y) ^#HaH local function callback() >>y`ap2%V ssr.AutoMoveBegin(x, y, qq.mapID) i6WH^IQ M end
/MGapmqV9 SL:ScheduleOnce(callback, 0.5) *siX:?l end 0%ul6LvM fF(2bVKP: --多开
zm"
function API_PcOpen() n#lbfN 4 LuaBridgeCtl:Inst():CheckClientCount(2) {p +&Q| end >}+{;d &h-_|N --盒子显示 f#0HiE! function API_hezi()
Ghgn<YG global.L_GameEnvManager._envData["isBoxLogin"] = 1 "do5@$p| end 3iCe5VF wa"0`a:`; --遍历背包物品 ^M'(/O1
function API_GetCurBagData() S6<o?X9,I local s1 = ssr.getCurBagData() Q$E.G63Wl local result = "" [';o -c"! for k, v in pairs(s1) do
W,xdj! ^t local s1 = string.format( ,/\`Rc^n "OverLap=%s,DuraMax=%s,Where=%s,Dura=%s,Name=%s,Shape=%s,MakeIndex=%s,Weight=%s,StdMode=%s,Index=%s" g8<ODU0[g , v["OverLap"] q)?%END , v["DuraMax"] ^kKLi , v["Where"] )9YDNVo*- , v["Dura"] FDMQLx f , v["Name"] Z hfp>D , v["Shape"] Uwc%'=@ , v["MakeIndex"] x?Abk , v["Weight"] }r:"X<` , v["StdMode"] B\J[O5}, , v["Index"]) FA+HR local ss = "" .xT?%xSi/ if #v["Values"] > 1 then UP-eKK'z for x, y in pairs(v["Values"]) do kE&R;T`Gb% if y["Value"] > 0 then ?Mjs [| local Values = string.format("m_Value=%s,m_ValueID=%s" /5NWV#- , y["Value"] _3`GZeGV , y["Id"]) %;[DMc/ ss = ss .. Values JW
D`} end y%TqH\RKv end w2s`9 end h4hAzFQ.s result = result .. s1 .. "," .. ss .. "\r\n" ?"yjgt7+y end !j6k
]BgZ return result ^E70$yB^ end ~7:q+\ Y~UuT8-c --获取背包是否满 {7:1F)Pj function API_GetBagFull() 7{#p'.nc5 return ssr.IsBagToFull(isTips) $--8%gh dG end JHxcHh
E`)e
;^ --获取背包百分比 :'[?/<iTg function API_GetBagEx() #{6VdWZ HW = ssr.GetMetaValueByKey("BW") xWxHi6U( MAXHW = ssr.GetMetaValueByKey("MAXBW") 7X$CJ%6b ELL = HW / MAXHW * 100 Et 0gPX- return math.ceil(ELL) k79OMf
<v end $u<;X^ n!4}Hwz! --获取背包是否满 T9yI%;D function API_GetBagFull() )G2Bx+Z;L return ssr.IsBagToFull(isTips) 3r~8:F"g end {"p ~M7 Zu
x L2W --读取地图ID w7MRuAJ4 function API_GetMapID() v}DNeIh~ local tt = ssr.GetCurMapData() o,i_py return tt.mapID QbJ7$, 4 end 1uo-?k -M{szH --读取地图名称 !X}+JeU' function API_GetMapName() {]IY;cL local tt = ssr.GetCurMapData() rmjuNy=( return tt.mapName i+`8$uz end (%^C}`|EA ToHx!,tDS --获取背包最大数 L1kn="5 function API_GetMaxBag() ie1~QQ return ssr.GetMaxBag() aj?ZVa6 end J_)F/S!T T
e+
# --使用物品 =c6d$ function API_UseItem(itemName)
gW~YB2 $ local items = ssr.getQuickUseData() s)
\PY local item = ssr.getCurBagData() {MtJP:8Jp for k, v in pairs(items) do (Aw@}! if v.Name == itemName then t]B`>SL3W ssr.UseItemByIndex(v.Index) EZj rX>"# end Mc?_2<u- end C^$E#|E9 N g0 Q,]\~ for k, v in pairs(item) do Ic3a\FTr\ if v.Name == itemName then zTue(Kr ssr.UseItemByIndex(v.Index) )a^&7 end Sst
z_t end tar/n o end Ox)<"8M \(??Ytc<B --获取金币数量 W%rUa&00 function API_GetMoney(Index) <SE-:T]sBz return ssr.GetMoneyCountById(Index) %qV:h# end s(X\7Hz_nC m+M^we*R function API_MergeTables(t1, t2) nzbVI local merged = {} Yv1yRoDv for key, value in pairs(t1) do K-'uE) merged[key] = value >_Tyzl>z end OI Fjc0 for key, value in pairs(t2) do HDhkg-QC merged[key] = value l(1.Ll
end 5B%KiE&p return merged 92j[b_P end 2H;#L`Z* p4uzw n{W(8K6d@[ --获取物品数量 /K2[`+- function API_GetItemCount(itemName,isBind) s58dHnj5+ local items=ssr.getQuickUseData() >JNdtP8s/1 local bagData=ssr.getBagData() -[*y{K@dh items=API_MergeTables(items,bagData) %Ja0:e local bind=isBind or false 0s8fF"$ local count=0 ?jmL4V2-f for k,v in pairs(items) do uBG!R#T if bind then ce$[H}rDB --绑定 /sYr?b!/<6 if v.Name==itemName and v.Bind~=nil then 8}BM`@MG count=count+ v.OverLap HMD\)vMK6 end $$ $[Vn_H< else SOPair <r --不绑定 "7-}#_!g if v.Name==itemName and v.Bind==nil then |zRrGQYm count=count+ v.OverLap 9<&*iIrM end _ow7E\70 end ByE@4+9 end xsU%?"r return count zZd.
U\"2 end LmY[{.'tX --读取人物坐标 "Pc}-& `j3 OFC{7E xm=Gt$>.o I>8_gp\1 function API_GetMapXY() OeGLMDw local aa = ssr.GetMainPlayerMapPos() E
6#/@C, local aa = string.format("x=%s,y=%s" n3?
msY(* , aa.x H{*rV>% , aa.y) LT)I
?ud return aa :/gHqEC24 end _|; d
D ;P'5RCqj -- 获取角色是否活着 {.U:Ce function API_IsRoleAlive() X#by Dg return ssr.IsRoleAlive() mCn:{G8+ end .Tl,Ek( ;eo}/-a_Xw --读取聊天信息 CY=lN5!J function API_ChatMsg() g'!"klS93 local function listcb(msg) JS03BItt --table $J<WFDn9 ChatTable = msg %$Fe[#1 end ml2/
}} ssr.RegisterLUAEvent("OnAddChatItem", "增加聊天消息", listcb) bp" @p: if ChatTable.mt == 1 and ChatTable.ChannelId == 3 or ChatTable.ChannelId == 6 then 83]m/Iz local ChatT = string.format( 97HI9R "SendName=%s,SendId=%s,ChannelId=%s,mt=%s,SendTime=%s,Msg=%s" X , ChatTable.SendName b*tb$F , ChatTable.SendId w3VgGc~ , ChatTable.ChannelId 8_wh9 , ChatTable.mt EajJv>X7 , ChatTable.SendTime x4 4V
9-o , ChatTable.Msg) 0`V=x+*, return ChatT Xn~\Vb end +P9eE,WR end {\k }:) `'3&tAy function API_ChatMaa() J(8?6&=ck return ssr.GetMaxBag() k&L/JzzI end 4C?4M; P
B-x_D --修理装备 d=D#cs;\ function API_CopyTable(original) >Q_
'[!S local copy = {} W8x&:5Fc)3 for key, value in pairs(original) do wQ/.3V[ if type(value) == "table" then h=6D=6c copy[key] = API_CopyTable(value) amExZ/ else Jza?DhSAZ copy[key] = value @+nCNXK end 9,&xG\z= end cDYOJu. return copy .*n*eeD, end @0
x 修衣服 = "0,4" --衣服,头盔 UlNiH 修武器 = "1" b)#rUI|O 修项链 = "3" |Y6;8e`H 修手镯 = "5,6" _B^X3EOc 修戒指 = "7,8" --左戒指 右戒指 -awG14% function API_Repair(npcName, itemPos) yq}{6IyZ^ local npcId = API_GetNpcIdByName(npcName) gAj)3T@
local tempData = ssr.getEquipData() 8Vn6* Xn local tobeRepair = {} q KM]wu0Et for k, v in pairs(tempData) do ?R(3O1,v^ if string.find(itemPos, tostring(v["Where"])) and v["Dura"] ~= v["DuraMax"] then :#/bA& local tmp = { vO_quQ[ . Name = v.Name, J qUVGEg MakeIndex = v.MakeIndex, )ziQ=k6d6 Where = v.Where )^\='(s } !{Y#<t
G] table.insert(tobeRepair, tmp) 4BT`|(7 ssr.TakeOffEquipRequest(v) 2mUu3fZ end ay_D.gxz end #H[4?4r --脱完 开始修理 XNUqZ-M: for k, v in pairs(tobeRepair) do R
`
Lm"5w local Name = v.Name p*0Ve21i, local MakeIndex = v.MakeIndex IR
LPUP local networkCtl = global.networkCtl cDiz!n*.q networkCtl:SendMsg(1023, npcId, MakeIndex, 0, 0, Name, string.len(Name)) +29\'w, end L:M9|/ --开始穿 V,+[XB local function ToDress() tFaE cP for k, v in pairs(tobeRepair) do .( h$@|Y ssr.TakeOnEquipRequest(v, v["Where"]) #Qr4Ke$g[l end JP4Moq~r end pQ
6#L local scheduleID = ssr.PerformWithDelayGlobal(ToDress, 1) D5pF:~tQ(j API_CloseNpcTalk() 9i}D6
te end .$0Ob<. |y%].y) j7 =3\SO ~
ZL`E
药店={0} ak) -OL1 首饰店={19,20,21,22,23,24,26} @MB _gt)7? 衣服店={10,11,15,16,27,28,62,64} XKX,7 武器店={5,6} p'uz2/g 杂货店={3,25,2,30,31} -o_TC 铁匠铺={43} o#xg:m_py 书店={4} ;a&:r7]= --检测背包是否有指定类型物品 oKi1=d+T function API_IsNeedToStore(StdModes) (AG local function IsNeed(StdMode) yXA f local bagData=ssr.getBagData() BozK!"R_< for k,v in pairs(bagData) do ,-3(^d\1F if v.StdMode==StdMode then yCIgxPv|7 return true U"+ ry.3` end L~{Vt~H9" end &H&P)Px*_ local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip) k|3(dXLG local equip = EquipProxy:GetEquipData() Mlw9#H6 for k,v in pairs(equip) do 8 tygs if v.StdMode==StdMode then [
5W#1 & if tonumber(v.Dura)/v.DuraMax < 0.9 then 7f%Qc
%B return true NNwd;AC end P\4tK<P| end hIQ[:f end n u8j_grW return false q#*6 )B end `b ")Bx| *+j{9LK for k,v in pairs(StdModes) do P! Ed
if IsNeed(v) then RVnyl`s return true AaYrVf 9! end TucAs0-bF end 4)HWPX return false AC:s4iacC end ZQ9oZHU m 6b]d|
PdH`_/6 --范围内怪物个数 bool型返回distance 4spaw?j function API_范围内怪物个数(distance, count) =)- Q?1q local proxyUtils = requireProxy("proxyUtils") 4l}M
i local mainPlayerID = global.gamePlayerController:GetMainPlayerID() N>fYH.c3Y return proxyUtils.checkIsEnoughEnemy(mainPlayerID, count, distance) yVI;s|jG end Q 95 --关闭NPC框 Ccr+SR2 function API_CloseNpcTalk() Qf-k&d global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Talk_Close) V$<G)dwUG5 global.Facade:sendNotification(global.NoticeTable.GuideEventEnded, {name = "GUIDE_END_NPC_TALK_LAYER_CLOSED"}) )L<?g!j~ end Z4AAg --无怪随机 //M4Sq( function API_无怪随机() %DRy&k/T local list = global.monsterManager.mMonstersInCurrViewField ]jVSsSv local actors = {} pOVghllO for k, v in pairs(list) do ,(0XsBL local actor = {} "YzTMKu actor["mID"] = v:GetID() <W51 oO table.insert(actors, actor); c =N]!
,MO end z3Y)- if #actors < 1 then id tQXwa
API_UseItem("随机传送石") |5IY`;+9 local aa = API_GetItemCount(1078) @`;Y/', if aa < 1 then W
B*`zCM ssr.BuyStoreItemsById(2, 1) 5uV"g5?w end $',GkK{NX end U=i8>6V return #actors +B q}>
end gLaO#cQ% \8*,&ak% --API_周围怪物数量 jqGo-C~ function API_周围怪物数量() 4 ?@uF[ local list = global.monsterManager.mMonstersInCurrViewField aT1CpY=T|. local actors = {} _%Jl&0%q for k, v in pairs(list) do 380-> local actor = {} '^ e/F)0 actor["mID"] = v:GetID() sL7`=a.&T table.insert(actors, actor); B~ !G lT end Iq0 #A5U% return #actors 9{%g-u\ end L.0} UXd ^[seK)
S= --API_周围人物数量 参数是 白名单 r$r&4dY function API_视野内敌人(Name, lv) c_z/At;4 local list = global.playerManager.mPlayersInCurrViewField {|5$1v local myName = global.gamePlayerController:GetMainPlayer():GetName() j,56Lh%1 local actors = {} pl#o!j( i local names = myName .. "," .. Name ui56<gI- for k, v in pairs(list) do PF'5z#] NP local actor = {} f_4S>C$ actor["mID"] = v:GetID() K_&c5(-(_ actor["mName"] = v:GetName() ]\a\
6&R actor["mLv"] = (v.GetLevel and { v:GetLevel() } or { 0 })[1] B)*#g --local myName=global.gamePlayerController:GetMainPlayer():GetName() XW~ BEa if not string.find(names, actor["mName"]) and tonumber(actor["mLv"]) > lv then tT* W5 table.insert(actors, actor); g2aT`=&Z end w{r(F` end gl9pgY1ni return #actors {FJX end 7zg)h 2-6.r_ [^U; --自动捡 xV,4U/T API_NoBodyPickEnable=true nG},v% 6>=-/)p} --捡取物品白名单 %%as>}. API_MyPlayerNames = "我不是药神,"
&6\r UL)" --全图捡 b
5F4+ API_MapPickEnable = true {V%%^Zhwy --自动存 [/AdeR API_InStoreEnable=false P^b:?% API_InStoreItems="" tIxhSI^ --自动扔 \Z\
IK API_ItemDropEnable=false #0?"J) --自动用 Zr.\`mG4f API_ItemKeepCountEnable=true )l!J$X+R --自动领取 @jE d%W API_GetMailItemEnable=false !Bk[p/\ --自动买回城石 r;cI}' API_BuyStoneEnable=false 0H OoKh API_RecoveryItemMaxMoney=1000000 lTV@b& --地图 Iuu<2#gb8" API_PreMapName="盟重省" BP[CR1Gs --开关 N;C"X4rV API_TimerEnable=true "$~}'`(] Ok}{jwJ%W; API_TimerEnable1s=true ReI=4Jq11 API_TimerEnable10s=true 5w,lw --1S定时器 #JL&]Z+X6 function API_AutoSchedule1s() A;fB6 if GET_GAME_STATE() == "world" and API_TimerEnable1s then ;!l*7}5X= --自己设置的自动捡
ko=aa5c --API_PickItems() J|gdO+ --系统自动捡 U^[cYTG if API_NoBodyPickEnable then ,30FGz^i if API_IsInCurrViewField(API_MyPlayerNames) then u#41osUVW> API_OpenGroupPick(false) <}28=d --release_print("来人,关自动捡") Hi; K"H]x1 --API_RunAway() --逃跑 0<]$v"`I --API_UseItem3Second("回城石") 7m|`tjQ1 else @4/~~ API_OpenGroupPick(true) u [V4OU}% API_PickItems() 4i_spF-3 --release_print("无人,开自动捡") MiSja#"+A end "ib K1}- end c$,c`H(~ end [Krm .) end L _vblUDq --10s定时器 'DCKD4@C/ function API_AutoSchedule10s() }zkL[qu; if GET_GAME_STATE()=="world" and API_TimerEnable then ig{A[7qN --自动扔 |~@x4J5, if API_ItemDropEnable then aW0u8Dz API_DropItemKeep("回城卷",2) -Q<z1vz end FF%\gJ hFsA_x+L; --自动组队 22)0zY%\ if ssr.GetCurMapData().mapName == "石墓二层" or ssr.GetCurMapData().mapName == "石墓三层" or ssr.GetCurMapData().mapName == "地牢一层西" then !Qv5"_ API_InviteJoinTeam() J6)efX)j-p API_TeamApplyUpdate() --允许所有邀请 8%;}LK end =@xN(]( h^o+E2<] --自动用消耗品 &