2022-10-27 Mercury233注:
此文内容已过期,等待更新。
开源地址: https://github.com/lllyasviel/YGOProUnity_V2
第一步 运行游戏。
第二步 用记事本打开commamd.shell。
第二点五步 把用户的头像以“用户名.png”的格式写入“texture\face\用户名.png”,写多少个都可以。
第三步 输入以下五条指令中的任意【一条】并保存文件。(单行,没有回车符,所有涉及到的文件没有ydk,lua,yrp等扩展名)。
online miaowu 118.178.111.167 233 0x133c
online miaowu 118.178.111.167 233 0x133c password
edit [Miao]割草光道
puzzle Sample
replay 任意录像名字无扩展名
注意:
1.游戏过程中建议不要把游戏关闭,再次启动游戏可能耗时较久。
2.只要commamd.shell存在就会无条件执行指令,commamd.shell不存在则意味着玩家正在对战或者正在编辑一个没有保存的卡组。
3.可以通过控制窗口的句柄来实现最小化。
4.请在指令执行之前把头像写入完毕。对战中游戏不会扫描目录里的头像。
5.不必担心文件读写冲突导致游戏崩溃,游戏内部做了完好的文件读写锁。
6.每条指令执行完毕之后,shell文件会被清空。
7.切记commamd.shell的编码是UTF8,请在命令内部有中文的时候小心。
8.无论输入什么杂鱼东西都会被程序在读取之后立刻清空。利用这一点可以检测游戏是否在指令待命状态。你可以在commamd.shell内部输入“miaowu”,如果它被清空了,说明程序正在等待你的指令,如果没有发生什么事情,说明玩家正在操作(对战中,卡组没有保存的编辑中),这时程序不会理会你的指令。
9.利用8,你可以在获取游戏窗口句柄之后实现大厅界面最小化和游戏最小化之间的切换。(进入指令待命状态则游戏最小化,一旦指令待命取消,立刻游戏窗口前台激活。)
下面是程序读入指令的代码,c#语法。供参考。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| all = File.ReadAllText("commamd.shell", Encoding.UTF8); char[] parmChars = all.ToCharArray(); bool inQuote = false; for (int index = 0; index < parmChars.Length; index++) { if (parmChars[index] == '"') { inQuote = !inQuote; parmChars[index] = '\n'; } if (!inQuote && parmChars[index] == ' ') parmChars[index] = '\n'; } string[] mats = (new string(parmChars)).Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); if (mats.Length > 0) { switch (mats[0]) { case "online": if (mats.Length == 5) { UIHelper.iniFaces(); Program.I().selectServer.KF_onlineGame(mats[1], mats[2], mats[3], mats[4]); } if (mats.Length == 6) { UIHelper.iniFaces(); Program.I().selectServer.KF_onlineGame(mats[1], mats[2], mats[3], mats[4], mats[5]); } break; case "edit": if (mats.Length == 2) { Program.I().selectDeck.KF_editDeck(mats[1]); } break; case "replay": if (mats.Length == 2) { UIHelper.iniFaces(); Program.I().selectReplay.KF_replay(mats[1]); } break; case "puzzle": if (mats.Length == 2) { UIHelper.iniFaces(); Program.I().puzzleMode.KF_puzzle(mats[1]); } break; default: break; } }
|