寫一個簡單的FGO腳本

東西在GitHub

前言

正好最近事情比較少叉存,就抓緊時間簡單寫了一個FGO腳本(API)撑毛,當初的想法相當簡單恋脚,就是想寫一個abstract的FGO的API來實現(xiàn)對FGO的操作恋腕,同時還可以當腳本來用抹锄。

思路

因為是關于FGO操作的API,所以只要把各種操作抽象出來就好了:

  • 選擇關卡
  • 選擇助戰(zhàn)
  • 開始戰(zhàn)斗
  • 選擇指令卡(包括寶具卡)
  • 選擇從者技能
    • 普通的技能
    • 有目標從者的技能
  • 選擇御主技能
    • 普通的技能
    • 有目標從者的技能
    • 換人技能
  • 戰(zhàn)斗結束

基本上的內容就那么多荠藤,還有像是金蘋果之類的就打算之后再加上去伙单。

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

  • 戰(zhàn)斗界面比例
  • 隨機點按和點按位置的偏移
  • 戰(zhàn)斗界面識別

然后,和之前的自動戰(zhàn)斗的腳本一樣哈肖,同樣使用ADB進行操作吻育。

實現(xiàn)

1.輔助函數(shù)

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

  • 截圖(ADB)
  • 裁剪(PIL)
  • 界面識別(OpenCV)
  • template matching的坐標獲取(OpenCV)
  • 點按(ADB)
  • 坐標偏移(random)

2.游戲界面坐標采集

這個沒啥好說的,就是對者 Photoshop 把每一個需要用到的按鈕的坐標記錄下來淤井。主要都放在了crds.py里面布疼,還有一些像是checkpointsupport這樣坐標不確定的則通過OpenCV識別。

3.主程序

其實具體的代碼的Structure已經在前面講過了币狠,在這里舉幾個例子:

初始化

def __init__(self, ckp : str, spt : str = None, sft = (0, 0)):
        self.shifts = sft
        self.checkpoint = ckp
        self.support = spt

構造這樣一個類的好處就是在后面應用別的函數(shù)時會比較方便游两,特別是關于界面偏移(非16:9適配)而且如果之后加上金蘋果計數(shù)時也很方便。這里就初始化了關卡和助戰(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)

這段代碼要做的就是首先檢測是不是在戰(zhàn)斗界面(因為界面變化需要一定時間)贱案,然后注意這個函數(shù)接受一個List,這個list對應的就會是儲存的指令卡的坐標渐行。當接受的list的長度小于3時(不滿三張卡)轰坊,程序就會自動往其中添加其他的普通卡(非寶具)直至三張铸董,這樣對只需要點寶具的速刷相當友好,同時隨機點按減少了當腳本使用時被封的可能性肴沫。

技能選擇

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)

這個整體來說還是很好理解粟害,甚至比選擇指令卡更加簡單。注意里面第二個參數(shù)tar是可選參數(shù)颤芬,當是0的時候表示沒有目標從者(像是式姐的一技能)悲幅,如果是其他數(shù)字時則代表目標從者(像是梅林三技能)。

結尾

總的來說站蝠,因為這個腳本整體思路并不難所以寫出來相當?shù)娜菀住?/p>

剩下的感受還有一些詳細的東西到時候再補充OWO

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末汰具,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子菱魔,更是在濱河造成了極大的恐慌留荔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澜倦,死亡現(xiàn)場離奇詭異聚蝶,居然都是意外死亡,警方通過查閱死者的電腦和手機藻治,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門碘勉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桩卵,你說我怎么就攤上這事验靡。” “怎么了雏节?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵胜嗓,是天一觀的道長。 經常有香客問我矾屯,道長兼蕊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任件蚕,我火速辦了婚禮孙技,結果婚禮上,老公的妹妹穿的比我還像新娘排作。我一直安慰自己牵啦,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布妄痪。 她就那樣靜靜地躺著哈雏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裳瘪,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天土浸,我揣著相機與錄音,去河邊找鬼彭羹。 笑死黄伊,一個胖子當著我的面吹牛,可吹牛的內容都是我干的派殷。 我是一名探鬼主播还最,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毡惜!你這毒婦竟也來了拓轻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤经伙,失蹤者是張志新(化名)和其女友劉穎扶叉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帕膜,經...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡辜梳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泳叠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茶宵,死狀恐怖危纫,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情乌庶,我是刑警寧澤种蝶,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站瞒大,受9級特大地震影響螃征,放射性物質發(fā)生泄漏。R本人自食惡果不足惜透敌,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一盯滚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酗电,春花似錦魄藕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春寝姿,著一層夾襖步出監(jiān)牢的瞬間交排,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工饵筑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留埃篓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓翻翩,卻偏偏與公主長得像都许,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嫂冻,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內容