ルフィ 發表於 2018-11-18 00:02:51

[教學] Fate/Grand Order CE中使用的lua腳本

首先說,我是小白懂得並不多。
文章裡教大家一段CE中的lua代碼。
這段代碼的目的就是自動搜索你隊伍第一個從者的atk、hp、np組成的位元組陣列,然後自動修改他們。
希望這段代碼大家自己用用就行了。保持低調,萬一哪天CE也用不了了。就不好了,大家只能去喝西北風了。

我這段程式是在Notepad++這款編輯器裡寫的,最後保存叫fgo.lua文件。
如果你用windows自帶的記事本編寫應該也行吧?我不知道。。不過最後你要把檔結尾的點txt改成點lua。
不過最好還是推薦你有一款不錯的編輯器來寫這段腳本,能保存lua格式就行。


對了,我這個腳本使用的時候,每次進圖後都要點擊一下“運行腳本”那個按鈕。
如果你想像尼祿祭那樣,進1ap高難本後撤退,再進其他圖鎖定的話。我這個腳本是不適用的。

我這個腳本就是,每次進圖都要點擊“運行腳本”。雖然每次位址都變的,但每次都是腳本幫你搜索,然後腳本幫你修改。


打開CE後,添加完你模擬器進程後,點擊【表單】然後 點擊 【顯示CT表的Lua腳本】,然後你就在那裡面打開你自己的lua腳本。


下面是我的腳本代碼1-13行:


1到9行你們不用去管它,它就是搜索函數。
只是第11行的裡面那個位元組陣列FE 1B 00……,你們要替換掉,替換成你們自己的隊伍第一個從者的位元組陣列。
那麼這個位元組陣列是怎麼來的呢?
其實他就是我現在使用的隊伍,第一個從者的ATK HP NP 位元組陣列。
我現在的隊伍:

我第一個從者血斧的atk是7166 hp是7748 np是80,因為帶著寶石翁。
然後我用 生成群組 搜索,去搜 血斧的位元組陣列,看下圖:

搜到地址後,在那個地址上右鍵,然後點擊流覽相關記憶體區域
如下圖:

我用滑鼠選中,前2行陣列和第三行前4個陣列(也就是紅線哪裡)
【FE 1B 00 00 00 00 00 00 00 00 00 00 44 1E 00 00 44 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 1F 00 00】

然後你右鍵 點擊複製到剪切板,(或者直接用鍵盤ctrl+c複製)
我就得到了我自己第一個從者atk、hp、np組成的位元組陣列了。

我為什麼複製到40 1F 00 00 哪裡? 因為我帶的是寶石翁,
你打開你的win10計算器,選擇程式師的模式,你十進位輸入8000,計算器它轉化成16進制就是1F40
正好就是40 1F 00 00顛倒過來麼。。
同理我血斧atk是7166 轉換16進制後就是 1BFE,倒過來就是FE 1B了啊,就是那個位元組陣列的開頭了啊。

其實,前11行代碼,你只要修改第11行,修改成你第一個從者的位元組陣列,就ok了。
我得到這個位元組陣列後,我又去驗證了一下,看能不能通過這個位元組素組 搜索到唯一一個位址。
下圖是驗證,看搜這個陣列能不能 得到剛才那個位址,並且是唯一一個。


其實你們不驗證也行,如果你第一個從者帶的是寶石翁,你跟我一樣複製到位元組陣列是40 1F 00 00結尾就差不多。

接下來的程式就挺簡單了,就是修改 第一個從者 到 第三個從者 atk 跟np 的程式了


這裡應該沒啥要說的,你們照著弄就行了。
lua語言的拼接字串是兩個點.. 而不像其他語言那樣是+號。

還有就是,在我的電腦上每次搜索出來的第一個從者atk位址的後三位,總是以EAC結尾。
我第二個從者的atk後三位,總是以C64結尾。
我第三個從者的atk後三位,總是以A1C結尾。
注意,你們可能跟我不一樣,你們就不一定是 EAC C64 A1C那麼結尾。

還有就是,程式23行到27行 作用是 鎖定了第一個從者的np值不變。
每次進圖打完後,結算出圖後,你們一定要把下圖那個 紅叉 點掉。
結算獎勵出本後,下圖中的紅叉 一定要點掉,不要再鎖定這個地址了,
要不然下次進圖遊戲會閃退!



最後,我有時候比較討厭那些伸手黨,所以在這裡只分享前11行代碼,後面的代碼,自己對照圖片練手輸入吧。。function MyAobScan(Bytes)
local StartAddress=0;
local EndAddress=0x00007fffffffffff;
local Scan = createMemScan();
Scan.OnlyOneResult=true;
Scan.firstScan(soExactValue, vtByteArray, rtTruncated, Bytes, "", StartAddress, EndAddress, "", fsmNotAligned, "", true, false, false, false);
Scan.waitTillDone();
return Scan.getOnlyResult();
end

local s1_atk = string.format("%X",MyAobScan("你隊伍第一個從者的位元組陣列"))

local v = string.sub(s1_atk,1,5)
最後還要強調一下,如果你給第一個從者禮裝換了,或者喂芙芙了,
導致第一個從者atk hp 變化了。那麼你就要重新搜索位元組陣列了啊。
切記,切記。

国服玩家 發表於 2018-12-2 10:58:08

码的天书啊

人偶真红 發表於 2018-12-19 17:26:23

感谢分享,这下每次都不用键盘再改了:P

花被草弄 發表於 2018-12-21 21:21:42

請問這個是手機版的還是電腦版的?
頁: [1]
查看完整版本: [教學] Fate/Grand Order CE中使用的lua腳本