日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

linux spt 脚本,写一个简单的FGO脚本

發(fā)布時(shí)間:2024/1/1 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux spt 脚本,写一个简单的FGO脚本 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

正好最近事情比較少,就抓緊時(shí)間簡(jiǎn)單寫(xiě)了一個(gè)FGO腳本(API),當(dāng)初的想法相當(dāng)簡(jiǎn)單,就是想寫(xiě)一個(gè)abstract的FGO的API來(lái)實(shí)現(xiàn)對(duì)FGO的操作,同時(shí)還可以當(dāng)腳本來(lái)用。

思路

因?yàn)槭顷P(guān)于FGO操作的API,所以只要把各種操作抽象出來(lái)就好了:

選擇關(guān)卡

選擇助戰(zhàn)

開(kāi)始戰(zhàn)斗

選擇指令卡(包括寶具卡)

選擇從者技能

普通的技能

有目標(biāo)從者的技能

選擇御主技能

普通的技能

有目標(biāo)從者的技能

換人技能

戰(zhàn)斗結(jié)束

基本上的內(nèi)容就那么多,還有像是金蘋(píng)果之類(lèi)的就打算之后再加上去。

還有要考慮的其他東西有:

戰(zhàn)斗界面比例

隨機(jī)點(diǎn)按和點(diǎn)按位置的偏移

戰(zhàn)斗界面識(shí)別

然后,和之前的自動(dòng)戰(zhàn)斗的腳本一樣,同樣使用ADB進(jìn)行操作。

實(shí)現(xiàn)

1.輔助函數(shù)

主要的輔助函數(shù)有以下幾個(gè):(放在util.py之中)

截圖(ADB)

裁剪(PIL)

界面識(shí)別(OpenCV)

template matching的坐標(biāo)獲取(OpenCV)

點(diǎn)按(ADB)

坐標(biāo)偏移(random)

2.游戲界面坐標(biāo)采集

這個(gè)沒(méi)啥好說(shuō)的,就是對(duì)者 Photoshop 把每一個(gè)需要用到的按鈕的坐標(biāo)記錄下來(lái)。主要都放在了crds.py里面,還有一些像是checkpoint和support這樣坐標(biāo)不確定的則通過(guò)OpenCV識(shí)別。

3.主程序

其實(shí)具體的代碼的Structure已經(jīng)在前面講過(guò)了,在這里舉幾個(gè)例子:

初始化

def __init__(self, ckp : str, spt : str = None, sft = (0, 0)):

self.shifts = sft

self.checkpoint = ckp

self.support = spt

構(gòu)造這樣一個(gè)類(lèi)的好處就是在后面應(yīng)用別的函數(shù)時(shí)會(huì)比較方便,特別是關(guān)于界面偏移(非16:9適配)而且如果之后加上金蘋(píng)果計(jì)數(shù)時(shí)也很方便。這里就初始化了關(guān)卡和助戰(zhàn)。

指令卡選擇

def select_cards(self, cards : [int]):

while not util.standby(util.get_sh(self.shifts), "assets/attack.png"):

time.sleep(0.2)

# tap ATTACK

self.tap(crds.ATTACK, 100, 100)

time.sleep(1)

while len(cards) < 3:

x = random.randrange(1, 6)

if x in cards:

continue

cards.append(x)

# tap CARDS

for card in cards:

self.tap(crds.CARDS[card-1], 50, 100)

time.sleep(0.2)

這段代碼要做的就是首先檢測(cè)是不是在戰(zhàn)斗界面(因?yàn)榻缑孀兓枰欢〞r(shí)間),然后注意這個(gè)函數(shù)接受一個(gè)List,這個(gè)list對(duì)應(yīng)的就會(huì)是儲(chǔ)存的指令卡的坐標(biāo)。當(dāng)接受的list的長(zhǎng)度小于3時(shí)(不滿三張卡),程序就會(huì)自動(dòng)往其中添加其他的普通卡(非寶具)直至三張,這樣對(duì)只需要點(diǎn)寶具的速刷相當(dāng)友好,同時(shí)隨機(jī)點(diǎn)按減少了當(dāng)腳本使用時(shí)被封的可能性。

技能選擇

def select_servant_skill(self, skill : int, tar :int = 0):

while not util.standby(util.get_sh(self.shifts), "assets/attack.png"):

time.sleep(0.2)

self.tap(crds.SERVANT_SKILLS[skill-1], 8, 8)

time.sleep(1)

if tar != 0:

self.select_servant(tar)

這個(gè)整體來(lái)說(shuō)還是很好理解,甚至比選擇指令卡更加簡(jiǎn)單。注意里面第二個(gè)參數(shù)tar是可選參數(shù),當(dāng)是0的時(shí)候表示沒(méi)有目標(biāo)從者(像是式姐的一技能),如果是其他數(shù)字時(shí)則代表目標(biāo)從者(像是梅林三技能)。

結(jié)尾

總的來(lái)說(shuō),因?yàn)檫@個(gè)腳本整體思路并不難所以寫(xiě)出來(lái)相當(dāng)?shù)娜菀住?/p>

剩下的感受還有一些詳細(xì)的東西到時(shí)候再補(bǔ)充OWO

總結(jié)

以上是生活随笔為你收集整理的linux spt 脚本,写一个简单的FGO脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。