將表格更新為最新版本 (1.0.1119132)。 它不需要修復任何東西,但還有一些補充。 理論上,應該適用於 Steam 和 EGS(使用 EGS 測試,我知道它可以在那里工作)。
下載
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
添加了 1 個功能(本來可以是兩個,但是嘿,沒用):
將游戲存檔 SQLite 數據庫從內存轉儲到磁盤
故事:
如您所知,該遊戲使用 SQLite 數據庫來存儲遊戲中的大量信息。 您收集、實現等的任何內容都被插入和更新到該數據庫(簡稱:db)中。 遊戲將此數據庫中的各種表格分解為內存中的表格,這些表格會單獨更新。 當發生自動保存事件或您保存時,每個表中的信息將被收集並更新到內存數據庫中。 然後將其保存到磁盤,保存到您的遊戲存檔中。 這就是流程。
腳本:
該腳本將找到從您的遊戲存檔加載到內存中的數據庫(原始磁盤,而不是您當前的進度)並將其作為 game.db 轉儲到磁盤到您的桌面。 然後您可以使用 DB Browser for SQLite 工具瀏覽它。
顯示此內容的視頻:
https://streamable.com/4zr4zs
將內存保存遊戲 SQLite 數據庫替換為已編輯的數據庫
腳本沒有效果! 這背後的理論很簡單:我想使用上面的腳本,將游戲中的數據庫轉儲到磁盤,用 SQL 編輯器打開它,在其中更改我想要的任何內容並保存。 該腳本然後從桌面獲取“game.db”,檢查其大小並分配新內存以將其加載到那裡。 加載後,它將指向原始數據庫的指針替換為我加載的地址(大小已更新)。 不幸的是,遊戲在內存中拼接了各種表格,因此在自動保存或保存時,它會用遊戲中的值在內存中覆蓋(更新它)。 所以我所有的編輯都消失了。 這就是為什麼,雖然理論付諸實踐——替換數據庫——因為遊戲覆蓋了它,但效果並不是我們想要的。 它是灰色的,所以不要使用它(你可以,但不會做任何你會注意到的事情)。
內容:
[引擎]小節
掛鉤 UCheatManager execs (execFly, execGhost, execWalk)
該腳本還原了 fly、ghost、walk 控制台命令的核心。 激活此腳本後,打開遊戲內控制台(請參閱下面的 [ 20 年 2 月 7 日 - Hit #1 ] 部分)並輸入:
飛行然後按 [Enter] 鍵
從某種意義上說,您在移動時不會從表面上掉下來(將其視為沒有重力),您現在可以飛行了。 要獲得高度,您必須沿著向上彎曲的表面擺動。 我找不到遊戲的移動功能(向前,向右)來掛鉤它們並允許在鼠標指向的方向上移動(稍後我會看看是否可以修復它)。
ghost 然後按 [Enter] 鍵
與飛行相同,但這次沒有碰撞。 這意味著您可以穿過表面(例如:鎖著的門)。 有助於進入遊戲開始時不應該進入的區域。
走然後按 [Enter] 鍵
這會禁用飛行/幽靈,使您的角色返回到堅實的地面(正常移動行為)。
對於每一個,您都會在控制台中看到一條消息彈出,因此您會知道它正在運行。
您可以忽略其餘腳本,因為它們要么被 dxgi.dll 覆蓋(Patch AllowCheats;Patch "SET" Command;Set UFunctions Executable (on console use)),要么在此時沒有用(Unrestrict CVars; 清除控制台(僅適用於控制台活動))
[遊戲]小節
切換 SQLite 執行 UDF
這將打開一個 UDF(用戶定義的表單)窗口,您可以在其中鍵入遊戲將提交給的 SQL 命令
https://www.sqlite.org/inmemorydb.html
筆記:
窗口可調整大小(向左、向右、向上、向下拖動其邊框以根據您的需要進行調整)
底部的白色輸入備忘錄框用於輸入文本:
您可以使用 Enter 鍵移動到下一行並輸入更多內容
Shift+Enter 組合鍵將執行您輸入的內容
你可以水平和垂直滾動它
我推薦用Notepad++寫SQL語句,然後復制粘貼到輸入框,然後Shift+Enter
紫色備忘錄框用於顯示您執行的內容
它不像窗口的“返回結果”日誌類型那樣工作; 只打印您輸入的副本
清除按鈕
清除紫色備忘錄框
關閉 [x] 按鈕
將關閉 UDF 窗口並停用“Toggle SQLite Exec UDF”腳本
請注意,在 UDF 中執行 SQL 語句不會在遊戲中生成任何通知! 因此,不要指望像您通常在收集物品時收到的彈出窗口那樣。 可以通過打開清單(或適當的選項卡,稍後我們會發現更多)來檢查效果。
更新時間(重要)
這大概是內部調度程序計時器。 對於那些需要 UpdateTime 作為要在內存數據庫中的相應列上更新的值的語句,這一點很重要。 您需要手動將其複制粘貼到您的報表中。 幸運的是,它在正在運行的遊戲會話期間保持不變。 如果您發現它在 CE GUI 中發生了變化,那麼您將不得不在您的語句中再次手動更新它。 為什麼這很重要? 因為 - 未經測試,假設 - 我相信當您關閉遊戲時,不會提交來自 SQLite 內存數據庫的保存遊戲的任何更新。 因此,您通過沒有 UpdateTime、null/0 或 < current_UpdateTime 的語句手動添加的項目將被丟棄。
現在.. 你可以用這個 UDF 執行什麼可以在“SQL 示例”部分下的第 2 篇文章中找到。 這是一項正在進行的工作,因此如果您想提供幫助,請閱讀下面的紅色文本。
請注意,您仍然需要 DLL (dxgi.zip > dxgi.dll) 來訪問遊戲中的控制台(用於“飛行”、“幽靈”、“行走”命令)! 該 DLL 在下面的部分中,所以請不要忽略帖子的其餘部分。 是的,它與上面的 SQL 或 UDF 無關。 只是說..因為人們去“不能使用控制台,我下載了表格”-或-“我以為我只需要表格”..
如果您想提供幫助和貢獻,請閱讀以下內容:
在 [ Debug ] 部分有幾個腳本,當您激活它們並執行指示的操作時,它們會將文本寫入 Lua 引擎控制台。 我的進度還很早,所以那些已經取得很大進展或完成遊戲的人可以通過提供包含 ITEM IDS 和 VARIATIONS 的 SQL 語句來提供幫助。 我將在下面解釋您可以做什麼。
所有腳本都需要在您的 CE 設置中啟用 VEH 調試器。 像這樣:
完成後,激活 [啟用] 腳本,以便它收集調試所需的位置。 然後在以 Commit_ 開頭的 [ Debug ] 部分中激活任一腳本(您一次最多可以激活 4 個腳本!這是一次可以設置多少個硬件斷點!)並執行您在名稱中看到的指定操作 腳本,在 _ 字符之後。
例如,激活 Commit_OnEquip 腳本。 然後回到遊戲中,用 I 鍵打開你的物品欄並裝備一個物品。 這就是腳本名稱所暗示的動作; 希望它是直截了當的。 這是應該發生的事情:
https://streamable.com/tggay6
不幸的是,我目前沒有辦法將項目在遊戲中的真實名稱附加到正在運行的 SQL 語句中。 所以我會指望你提供盡可能多的信息(例如:物品名稱,物品稀有度, - 從屏幕上讀取 - 然後是你記錄的 Lua 引擎窗口中的 SQL 語句)。
根據上面的視頻示例,您應該如何格式化您的發現:- tem Name: BLACK LEATHER GLOVES
- Item Rarity: STANDARD
- Sell Value: 30
- INSERT OR REPLACE INTO EquippedGearDynamic (ActorID, SlotID, GearID, GearVariation ) VALUES ('Player0', 'HAND', 'Hand_007_Basic', 'DF27DEF14990490A255E99B419ED02D4')
- --
- Item Name: TEAL FINGERLESS GLOVES
- Item Rarity: WELL-APPOINTED (green)
- Item Level: 2
- Offence: 3
- Others: Cannot Upgrade
- Sell Value: 60
- INSERT OR REPLACE INTO EquippedGearDynamic (ActorID, SlotID, GearID, GearVariation ) VALUES ('Player0', 'HAND', 'Hand_019_Common', 'E3B2129E4ABA1F9AC4A072B588231C04')
- --
- Item Name: HUNTER FINGERLESS GLOVES
- Item Rarity: WELL-APPOINTED (green)
- Item Level: 4
- Offence: 6
- Others: Cannot Upgrade
- Sell Value: 60
- INSERT OR REPLACE INTO EquippedGearDynamic (ActorID, SlotID, GearID, GearVariation ) VALUES ('Player0', 'HAND', 'Hand_017_Common', 'C1A4AD97407DE525471058BE36297692')
複製代碼 遊戲名稱:霍格沃茨的遺產
遊戲供應商:Epic Games Store [應該與Steam兼容]
遊戲版本:1.0.1117238
遊戲進程:HogwartsLegacy.exe
大家好。
下面附上一個 DLL,它將執行以下操作:
掛鉤 UGameViewportClient::SetupInitialLocalPlayer 以構建控制台 UObject,GameViewportClient 的成員。 然後您可以使用波浪號 (~) 鍵打開控制台。
要更改密鑰:
- 單擊任務欄左下角的開始,然後輸入“運行” - 或 - 按 WinKey+R 鍵
- 將其複制粘貼到輸入字段:%LocalAppData%\HogwartsLegacy\Saved\Config\WindowsNoEditor
- 按回車鍵
- 打開 Input.ini 文件
- 將以下文本複制並粘貼到 [CurrentIniVersion] 部分下:- [/Script/Engine.InputSettings]
- ConsoleKey=Tilde
複製代碼
將鍵更改為您想要的任何內容(例如:F10)
- 保存存檔
- 如果你打開了它,請重新啟動遊戲(這將在你重新啟動遊戲之前不起作用,因此它可以讀取文件)
通過補丁在控制台中啟用設置命令(例如:set Engine.Actor bCanBeDamaged False)。
使您在控制台中運行的任何命令 - 如果命令存在 - 不返回“命令無法識別”。 它基本上掛鉤 CallFunctionByNameWithArguments 並為通過此內部函數運行的任何內容設置 UFUNC_Exec 標誌。
該遊戲的開發人員已將 PlayerController vftable 中構造 CheatManager 的函數 - APlayerController::AddCheats(bool bForce) 替換為一個簡單地執行類似 GetWorld 的函數。 基本上沒什麼用。 我修補了 APlayerController:ostInitializeComponents 以在 bForce 參數設置為 1 的情況下執行它,因此無論遊戲類型如何(本地或遠程/在線),CheatManager 始終被構建。
以防萬一你想知道為什麼 EnableCheats 1 什麼都不做(針對 Frans 的 UUU 工具的用戶)。
話雖如此,您現在可以自由地試用控制台了。 我將在下一篇文章中發布任何發現(命令等)。 一旦我有足夠的東西可以分享,而單靠控制台是無法實現的,就應該有一個作弊表。
dxgi.zip
(64.54 KB, 下載次數: 3)
password: sunbeam
作弊命令
上帝
讓你刀槍不入。 如果您退出到主菜單,然後返回游戲,加載保存/快速保存或以任何其他方式顯示加載屏幕的轉換,則需要重新啟用它。 為什麼; 重新初始化。 god flag 是 Character 結構中的一個 BOOL。 當您重新加載遊戲時,引擎會重新初始化所有結構,並設置它們的默認狀態。 這意味著你的 god bool 將被重置。
slomo <浮動>
減慢、加速或將游戲速度設置回正常,具體取決於您給它的值。 (例如:slomo 0.5;slomo 1;slomo 1.5)
傳送
將您的角色傳送到鼠標指針指定的位置。 只需瞄準某個點,然後輸入 teleport + 按 [Enter]。 您將立即到達目標位置。
僅限玩家
當前旨在凍結任何 AI,包括您自己。 在舊版本的引擎中,這會凍結除您以外的所有內容。 我猜 Epic 改變了主意。 可以通過代碼掛鉤進行調整,以將玩家角色從凍結實體列表中排除。
切換調試相機
這會將當前相機與播放器分離(實際上,它將控制器更改為新創建的相機 UObject),讓您四處飛行並探索該區域。 您可以將它與傳送一起使用,例如,將您的玩家移動到相機指向的位置。 一旦你決定了地點,只需在控制台中輸入它。
按鍵(激活時):
Q/Space - 上移
E/Ctrl - 向下移動
鼠標滾輪向上/向下 - 增加/減少相機速度
召喚 <blueprint_name>
可能是人們可以使用的最強大的命令。 它旨在在您的視圖前生成/生成一個由您輸入的藍圖名稱定義的 Actor。目前沒有任何列表,因此您必須等待或試驗(例如:獲取 FModel 工具,打開 一個一個地研究遊戲包並研究內容樹;您對名為 Actor(s)、Character(s) 等的文件夾感興趣;然後查看文件名並執行 summon MyCharacter_C [Enter];這是最好的 我暫時得到了)。
更新了使用召喚的說明(這些可以在任何 UE4 遊戲中使用):
-- 使用 CHEAT ENGINE 7.4 測試了這個 --
1) 獲取一個可以DUMP OBJECTS的工具或表格,比如Cake-san的“Basic UE4 Win64 Base Table”。 即 Automate 版本 Update 7.3(該帖子中的第一個附件)。
2) 打開表格,文件 > 打開進程 > 雙擊列表中的第二個 HogwartsLegacy.exe 進程。 當系統詢問您是否要保持表格加載時,單擊“是”。
3) 激活“Unreal Engine”腳本並等待它完成或出錯。 即使它出錯,該表也會完成它的工作。 Lua 控制台將一路打開並輸出內容。 為我運行大約 10 分鐘,因為我有 16GB 的 RAM 和低磁盤空間(用於臨時掃描)——10 年的 CPU 和我兄弟的 4 年用完的 GTX 1080Ti。
3.1) 如果出錯且腳本未激活,則右鍵單擊腳本並選擇“組配置”>“停用時隱藏子項”。
3.2) 如果沒有報錯,Lua窗口會關閉,腳本會啟動。 像這樣:
4) 確保您在遊戲世界中(而不是在主菜單中)並且您要生成的對像已加載/存在於地圖中。 視覺上。 例如,如果我看到周圍有一塊月光石,那麼我就知道該物體存在並且我可以生成它。 否則,無法將其他關卡中的內容生成到您當前的關卡中。 所以這個練習會有它的局限性。
5) 請安裝Notepad++。
https://notepad-plus-plus.org/downloads/
6) 我將以月光石為例。 我可以在這裡清楚地看到:
7) 前往桌子並運行“UE Object Dumper Algo”腳本。 讓它做它自己的事情,它會自動為您打開一個文本文件(順便說一句,它保存在您的桌面上,以防您不知道它在哪裡)。 這應該發生在你身上:
8) 在 Notepad++ 中按 Ctrl+F,勾選底部的“正則表達式”(確保勾選“環繞”)並將下面的文本粘貼到“查找此:”字段中:- BlueprintGeneratedClass(.*)
複製代碼 注意單詞前的空格字符。 如果你想要簡潔的結果,它必須在那裡。 單擊“在當前文檔中查找所有”。
你會看到這些:
您對地址列後以 BlueprintGeneratedClass 開頭的行感興趣。
9) 您現在可以復制整個結果列表並將其粘貼到一個新的空白文檔/窗口中:
10) 還記得我在看月光石嗎? 好吧,讓我們用我們所有的結果在這個新文檔中搜索它:
11) 所以..為了生成 Moonstone Actor,我們將使用(在我的例子中,對你來說可能不同)BP_Moonstone_M_C。 請記住並理解,當您在關卡/地圖上前進時,這些是由引擎動態加載和生成的。 如果您認為引擎會預先加載所有內容,那您就錯了。 它在需要時加載資產。
您可以在 Notepad++ 中雙擊搜索結果以轉到並突出顯示找到它的特定行。
12) 回到遊戲中,打開控制台並輸入(在我的例子中)summon BP_Moonstone_M_C。
這是視頻中的完整內容:
https://streamable.com/jy3f5w
作為旁注,您可以使用 | 堆疊控制台命令 特點。 這意味著您可以讓它運行 summon X 次,即您在塊中重複命令的次數。 以下是如何在一次復制-粘貼-輸入中召喚 10 塊月光石:- summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C|summon BP_Moonstone_M_C
複製代碼 https://streamable.com/boma0i
每次加載關卡或轉換到另一張地圖時,每次找不到某個對象名稱時,每次遊戲滯後/斷斷續續時(表明它正在加載資產以及它處理的其他內容),你都必須重新轉儲 . 所以禁用“UE Object Dumper Algo”腳本並重新運行它。 然後重做上面的步驟。
希望現在很清楚為什麼它不起作用,為什麼它起作用,它是如何起作用的等等。我沒有任何其他觀察結果,所以請自行試驗,不要問“我如何生成 X?” 問題。 你已經學會瞭如何去做。
例子
<< 首先,保存您的遊戲! 只是為了確保如果你搞砸了你可以恢復! >>
1)將您的貨幣設置為給定值:- UPDATE InventoryDynamic SET ItemID = 'Knuts', Count = 30000, Stolen = 0, UniqueItem = 0, KeepOnReset = 0, UpdateTime = 596323800000000000 WHERE CharacterID = 'Player0' AND HolderID = 'ResourceInventory' AND SlotNumber = 0;
複製代碼 將 Count = <value> 替換為您想要的數量; 這是一個UPDATE,意思是一個SET; 不是添加 (+)
用您的表/CE GUI 中的值替換 UpdateTime 值; 這:
在引用的語句中雙擊黃色突出顯示的值,Ctrl+C 和 Ctrl+V(其中 UpdateTime = ... 是)
***
|