#[HOTKEY]END
#SetArgsOnCompile
/*-------------------變數宣告-----------------------*/
dim sum=1,hp,hp1,hp2,hp4,hp11,hp12,hp13,mp,mp1,mp2,xp,pet,pet1,pet2,pmp2,IDname,can1,can2,winx0,winy0,winid,cons,N1,N2,N3,N4,huy,sumtime=0
dim RunNO1=0,Scope,MyPosX,MyPosY,PosXNo1,PosYNo1,ID,find,Mywx,Myhy,WinX,WinY,MapX,MapY,hp3,maptitle,exp1//加入(全局變量)
/*-------------------偵測視窗ID碼,遊戲座標-----------------------*/
function main
N3=GetConfigNumber("走路回範圍幾秒")
N4=GetConfigNumber("消滅幾隻怪檢查紀錄點")
S1=GetConfigNumber("掛機範圍")
GetActiveWindowSize(width, height)
GetActiveWindowID(ID)
IF RunNO1=0 then //初始化,自動紀錄範圍掛機位置
GetActiveWindowID(ID)
Print("視窗ID碼: 【 "& ID &"】")
check()
PosXNo1=MyPosX //自動紀錄PosXNo1=目前人物所在X座標;或是手動更改MyPosX指定掛機位置,ex:PosXNo1=200
PosYNo1=MyPosY //同上,Y座標
Scope=S1 ///////////////掛機範圍(自行設定,預設5)///////////////
print("初始化:紀錄腳本開始的座標 【"& PosXNo1 & "," & PosYNo1 &"】")
print("人物目前在【"& maptitle & "】 地圖")
print("目前經驗直【"& exp1 &"】")
print("掛機範圍【"& Scope &"】")
Mywx=(width/2)
Myhy=(height/2)
print("人物視窗座標:【"& Mywx&","& Myhy &"】")
RunNO1=1
end if
/*-------------------討伐書座標設定--------------------*/
//物品欄有討伐書時(討伐書放在上面第一排第5格)
WinX=770 //背包討伐書 X 座標
WinY=361 //背包討伐書 Y 座標
//請利用原點座標抓取
/*----------------------------------------------------*/
SetInputMode(4)
GetActiveWindowXY(WinX0, WinY0)
/*-------------------技能,討伐計時器-----------------------*/
bufftime1=GetConfigNumber("施放輔助技能1間隔秒數")
bufftime2=GetConfigNumber("施放輔助技能2間隔秒數")
bufftime3=GetConfigNumber("施放輔助技能3間隔秒數")
bufftime4=GetConfigNumber("施放輔助技能4間隔秒數")
bufftime5=GetConfigNumber("施放輔助技能5間隔秒數")
bufftime6=GetConfigNumber("施放輔助技能6間隔秒數")
bufftime7=GetConfigNumber("施放輔助技能7間隔秒數")
SetTimer("skill1", bufftime1*1000, true) //施放技能1,每10分鐘
SetTimer("skill2", bufftime2*1000, true) //揓技技能2,每30分鐘
SetTimer("skill3", bufftime3*1000, true) //揓技技能3,每30分鐘
SetTimer("skill4", bufftime4*1000, true) //揓技技能4,每30分鐘
SetTimer("skill5", bufftime5*1000, true) //揓技技能5,每30分鐘
SetTimer("skill6", bufftime6*1000, true) //揓技技能6,每30分鐘
SetTimer("skill7", bufftime7*1000, true) //揓技技能7,每30分鐘
while true
GO()
wend
end function
/*-------------------自動攻擊,自動檢取-----------------------*/
function GO
n=GetConfigNumber("選怪模式")
N2=GetConfigNumber("討伐怪的數量")
KSP_ReadMemory(&H1C1027C,2,find)
//check2() //討伐腳本
//check3()
if find=0 then
ReturnScope() //超出掛機範圍,回掛機點
KeyPress("`")
choice(n) //選怪模式1:不搶怪 ;選怪模式2:只打指定怪+不搶怪
else
while find>0
choice(n) //選怪模式1:不搶怪 ;選怪模式2:只打指定怪+不搶怪
KeyPress("1")
wait(500)
//KeyPress("4")
check() //邊打邊檢查hp、mp、寵hp
KSP_ReadMemory(&H1C1027C,2,find)
wend
check() //打完再檢查一下hp、mp、寵hp
wait(10)
//Punitive(N2) //討伐書 現在關閉 要用時請清除前面的[//]
FindTreasure() //找尋寶箱
Wait(50)
KeyPress("`")
KeyPress("1")
print("第" & sum &"隻怪–【" & IDname & "】 |討伐已擊殺:" & sum & "隻 | 需擊殺"&N2 &"隻怪")
print("HP:" & hp2 & "%|MP:" & mp2 & "%|XP:" & xp & "|寵HP:" & pet2 & "%" &"|寵MP:" & pmp2 & "%" &"|補機HP:" & hp13 & "%")
sum=sum+1
sumtime=sumtime+1
huy=N4
print("殺【"& huy & "】隻怪物時,檢查範圍紀錄點,目前殺【" & sumtime & "】隻,倒數【" & huy-sumtime & "】隻")
if sumtime >= huy then
print("檢查範圍紀錄點")
ReturnScope()//超出掛機範圍,回掛機點
sumtime=0
end if
end if
end function
/*-------------------記憶體內存位置-----------------------*/
function Check //檢查hp、mp、xp、寵血
nhp1=GetConfigNumber("人物HP小於%第一組補血")
hpkey1=GetConfigString("第一組補血鍵")
nhp2=GetConfigNumber("人物HP小於%第二組補血")
hpkey2=GetConfigString("第二組補血鍵")
nmp1=GetConfigNumber("人物MP小於%第一組補藍")
mpkey1=GetConfigString("第一組補藍鍵")
nmp2=GetConfigNumber("人物MP小於%第二組補藍")
mpkey2=GetConfigString("第二組補藍鍵")
pethp2=GetConfigNumber("寵物HP小於%補血")
pethpkey=GetConfigString("寵物補血鍵")
petmp2=GetConfigNumber("寵物MP小於%補藍")
petmpkey=GetConfigString("寵物補藍鍵")
nhp3=GetConfigNumber("人物HP小於%回城")
hpkey3=GetConfigString("人物回城鍵")
ResetMemBuffer()
KSP_ReadMemory(&H163A8A4,2,hp)
KSP_ReadMemory(&H163A8C0,2,hp1)
KSP_ReadMemory(&H163380C,2,hp11)
KSP_ReadMemory(&H1633814,2,hp12)
KSP_ReadMemory(&H163A8A8,2,mp)
KSP_ReadMemory(&H163A8C4,2,mp1)
KSP_ReadMemory(&H1A4F4B0,2,xp)
KSP_ReadMemory(&H1676E28,2,pet)
KSP_ReadMemory(&H1676E2C,2,pet1)
KSP_ReadMemory(&H1677FB8,2,pmp)
KSP_ReadMemory(&H1677FBC,2,pmp1)
KSP_ReadMemory(&H1C14EEC,5,20,IDname)
KSP_ReadMemory(&H163A86C,3,MyPosX)
KSP_ReadMemory(&H163A870,3,MyPosY)
KSP_ReadMemory(&H01C50A70,5,16,maptitle)
KSP_ReadMemory(&H163A8B4,2,exp1)
/*-------------------宣告-----------------------*/
MyPosX=int(MyPosX)
MyPosY=int(MyPosY)
hp3=int(hp/hp1*100)
hp4=int(hp/hp1*100)
hp2=int(hp/hp1*100)
mp2=int(mp/mp1*100)
hp13=int(hp11/hp12*100)
pet2=int(pet/pet1*100)
pmp2=int(pmp/pmp1*100)
/*-------------------自動輔助補血,魔-----------------------*/
if hp2<nhp1 then //hp低於80%,按補血鍵
KeyPress(hpkey1)
end if
if hp2<nhp2 then //hp低於60%,執行第二補HP按鍵
KeyPress(hpkey2)
end if
if mp2<nmp1 then //mp低於50%,按補mp鍵
KeyPress(mpkey1)
end if
if mp2<nmp2 then //hp低於30%,執行第二補MP按鍵
KeyPress(mpkey2)
end if
if pet2<pethp2 then //寵的血低於80%,按吃藥鍵
KeyPress(pethpkey)//寵的魔低於80%,按吃藥鍵
end if
if pmp2<petmp2 then
KeyPress(petmpkey)//寵的魔低於80%,按吃藥鍵
end if
if xp=1000 then //xp滿,自動放
KeyPress("9")
end if
if hp3<nhp3 then //hp低於35%,回城
KeyPress(npkey3)
wait(6000)
print("血量低於"& hp3 & "%|嘗試回城")
end if
if hp4=0 then //hp為 0 人物死亡
print("血量歸"& hp4 & "%|人物已死亡")
end if
end function
/*-------------------自動使用技能-----------------------*/
function skill1 //技能1按鍵
buffkey1=GetConfigString("輔助技能1的按鍵")
KeyPress(buffkey1)
end function
function skill2 //技能2按鍵
buffkey2=GetConfigString("輔助技能2的按鍵")
KeyPress(buffkey2)
end function
function skill3 //技能3按鍵
buffkey3=GetConfigString("輔助技能3的按鍵")
KeyPress(buffkey3)
end function
function skill4 //技能4按鍵
buffkey4=GetConfigString("輔助技能4的按鍵")
KeyPress(buffkey4)
end function
function skill5 //技能5按鍵
buffkey5=GetConfigString("輔助技能5的按鍵")
KeyPress(buffkey5)
end function
function skill6 //技能6按鍵
buffkey6=GetConfigString("輔助技能6的按鍵")
KeyPress(buffkey6)
end function
function skill7 //技能7按鍵
buffkey7=GetConfigString("輔助技能7的按鍵")
KeyPress(buffkey7)
end function
/*-------------------自動討伐書接取-----------------------*/
//物品欄有討伐書時(討伐書放在上面第一排第5格)
//OOOO[O]←背包討伐書位置
//OOOOO
//OOOOO
//OOOOO
//OOOOO
function Punitive //討伐書鍵
KSP_ReadMemory(&H1CDBB68,2,itemtab)
if sum>N2 then
KeyPress("A")
Wait(500)
//討伐書原點坐標:
//單擊鼠標右鍵
MouseRightClick(WinX, WinY)
Wait(200)
//點擊確定代替 "RETURN" 減少游標跑到打字那裡,人物無法打怪
//如你沒法點到 請自行抓點 否是改回舊的設定
KeyPress("Esc")
Wait(100)
KeyPress("A")
sum=0 //歸零,重新計算怪死亡數
wait(1000)
itemtab_A(0)
check3()
end if
end function
/*-------------------選怪模式-----------------------*/
function choice(mode) //選怪模式1:不搶怪 ;選怪模式2:只打指定怪+不搶怪
can1=1
can2=1
if mode=1 then //模式1,不搶怪
do
can_hit() //不搶怪
loop until can1=0
end if
if mode=2 then //模式2,只打指定怪+不搶怪
do
need_hit() //只打指定怪
can_hit() //不搶怪
loop until can1=0 and can2=0
end if
end function
/*-------------------不搶怪-----------------------*/
function can_hit
KSP_ReadMemory(&H1C3DAE0,2,can1)
if can1>0 then
KeyPress("`")
end if
end function
/*-------------------指定怪物設定-----------------------*/
function need_hit
need=Array(10)
need[1]=GetConfigString("怪物指定列表1")
need[2]=GetConfigString("怪物指定列表2")
need[3]=GetConfigString("怪物指定列表3")
need[4]=GetConfigString("怪物指定列表4")
need[5]=GetConfigString("怪物指定列表5")
need[6]=GetConfigString("怪物指定列表6")
need[7]=GetConfigString("怪物指定列表7")
need[8]=GetConfigString("怪物指定列表8")
need[9]=GetConfigString("怪物指定列表9")
need[10]=GetConfigString("怪物指定列表10")
ResetMemBuffer()
KSP_ReadMemory(&H1C14EEC,5,20,need1)
for i=1 to 10
Pos = Instr(need1, need)
if pos>0 then
exit for
end if
next
if pos=0 then
KeyPress("`")
else
can2=0
end if
end function
/*-------------------回到原掛點-----------------------*/
function ReturnScope
if PosXNo1-MyPosX>Scope Or PosXNo1-MyPosX<-Scope Or PosYNo1-MyPosY>Scope Or PosYNo1-MyPosY<-Scope then
Print("掛機範圍:"& Scope & " 已超出範圍:" & PosXNo1-MyPosX & "," & PosYNo1-MyPosY)
if find>0 then //如果有目標,可能是打怪中,取消選取)
KeyPress("Esc")
Wait(500)
end if
Check_Tab(1)
MouseLeftClick(MaptoPosX(PosXNo1), MaptoPosY(PosYNo1))
Wait(N3*1000)
Check_Tab(0)
end if
end function
/*-----------------檢查Tab----------------------*/
function Check_Tab(value)
//調用方式Check_Tab(value) value=0 關閉 value=1 開啟
KSP_ReadMemory(&H01C8FD10,2,chktab)
while chktab<>value
Keypress("Tab")
Wait(400)
KSP_ReadMemory(&H01C8FD10,2,chktab)
wend
end function
/*-----------------地圖座標轉換視窗座標----------------------*/
//調用方式 MouseLeftClick(MaptoPosX(地圖座標X), MaptoPosY(地圖座標Y))
function MaptoPosX(MapX)
MaptoPosX=int(166+(MapX*1.56))
end function
function MaptoPosY(MapY)
MaptoPosY=int(124+(MapY*1.56))
end function
#地圖座標轉視窗座標
/*-----------------寶箱搜尋----------------------*/
function FindTreasure
if find=0 then
//找尋寶箱
FOR x=412 TO 612 STEP 45
FOR y=269 TO 469 STEP 45
MouseRightClick(x,y,3)
NEXT
NEXT
end if
end function
/*-----------------內存討伐----------------------*/
function check2 //討伐怪
book=&H09E85EA8 //每個人都不同,請自行尋找。
KSP_ReadMemory(book,2,cons)//選擇討伐怪類型 (這行是討伐怪數量所在的記憶體位址,但每個人會不同,重開遊戲後也會不同)
KSP_ReadMemory(&H1CDBB68,2,itemtab)
print("已討伐 "& cons & " 隻|設定 50 隻 完成討伐")
if cons=50 then
//當未接任務時,其值會是0,因此在直接啟動腳本時並不會自動開道具欄接任務,所以需要自己先接一次討伐卷
KeyPress("A")
MouseRightClick(781, 224)
wait(1000)
KSP_ReadMemory(book,2,cons)//選擇討伐怪類型
itemtab_A(0)
end if
end function
/*-----------------內存檢查畫面變灰----------------------*/
function check3 //檢查esc
KSP_ReadMemory(&H3297e11,2,chkesc)
if chkesc=1 then
Keypress("Esc")
end if
end function
/*-----------------檢查背包開關----------------------*/
function itemtab_A(pig)
//調用方式itemtab_A(pig) pig=0 關閉 pig=1 開啟
KSP_ReadMemory(&H1CDBB68,2,itemtab)
while itemtab<>pig
Keypress("A")
Wait(400)
KSP_ReadMemory(&H1CDBB68,2,itemtab)
wend
end function |