configEditProc.cpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. #include "Win32.h"
  2. #include "Function.h"
  3. #include "SharedValue.h"
  4. #include "Config.h"
  5. #include <vector>
  6. HFONT Font();
  7. HWND hGamemode, hDifficulty, hPermission;
  8. WORD wmId, wmEvent;
  9. LRESULT CALLBACK ConfProc(HWND hWnd1, UINT msg, WPARAM wParam, LPARAM lParam)
  10. {
  11. switch (msg)
  12. {
  13. case WM_CREATE:
  14. {
  15. HFONT hFont = Font();
  16. HWND hLabel_1 = CreateWindow(
  17. L"STATIC", L"服务器名称",
  18. WS_VISIBLE | WS_CHILD,
  19. 20, 20, 100, 30,
  20. hWnd1, NULL,
  21. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  22. );
  23. HWND hServerName = CreateWindow(
  24. L"EDIT", L"不修改",
  25. WS_VISIBLE | WS_CHILD | WS_BORDER | ES_MULTILINE,
  26. 150, 20, 300, 40,
  27. hWnd1, (HMENU)CONF_ServerName,
  28. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  29. );
  30. HWND hLabel_A = CreateWindow(
  31. L"STATIC", L"(1)世界选项:作用于游戏存档",
  32. WS_VISIBLE | WS_CHILD,
  33. 20, 95, 400, 30,
  34. hWnd1, NULL,
  35. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  36. );
  37. HWND hLabel_2 = CreateWindow(
  38. L"STATIC", L"游戏模式",
  39. WS_VISIBLE | WS_CHILD,
  40. 20, 150, 100, 30,
  41. hWnd1, NULL,
  42. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  43. );
  44. hGamemode = CreateWindow(
  45. L"COMBOBOX", NULL,
  46. WS_VISIBLE | WS_CHILD | CBS_DROPDOWNLIST,
  47. 150, 150, 150, 100,
  48. hWnd1, (HMENU)CONF_GameMode,
  49. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  50. );
  51. SendMessage(hGamemode, CB_ADDSTRING, 0, (LPARAM)L"不修改");
  52. SendMessage(hGamemode, CB_ADDSTRING, 0, (LPARAM)L"冒险");
  53. SendMessage(hGamemode, CB_ADDSTRING, 0, (LPARAM)L"生存");
  54. SendMessage(hGamemode, CB_ADDSTRING, 0, (LPARAM)L"创造");
  55. SendMessage(hGamemode, CB_SETCURSEL, 0, 0);
  56. HWND hForceGM = CreateWindow(
  57. L"BUTTON", L"强制游戏模式",
  58. WS_CHILD | BS_AUTOCHECKBOX,
  59. 320, 145, 150, 40,
  60. hWnd1, (HMENU)CONF_ForceGameMode,
  61. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  62. );
  63. HWND hLabel_3 = CreateWindow(
  64. L"STATIC", L"游戏难度",
  65. WS_VISIBLE | WS_CHILD,
  66. 20, 195, 100, 30,
  67. hWnd1, NULL,
  68. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  69. );
  70. hDifficulty = CreateWindow(
  71. L"COMBOBOX", NULL,
  72. WS_VISIBLE | WS_CHILD | CBS_DROPDOWNLIST,
  73. 150, 195, 150, 100,
  74. hWnd1, (HMENU)CONF_GameDifficuty,
  75. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  76. );
  77. SendMessage(hDifficulty, CB_ADDSTRING, 0, (LPARAM)L"不修改");
  78. SendMessage(hDifficulty, CB_ADDSTRING, 0, (LPARAM)L"和平");
  79. SendMessage(hDifficulty, CB_ADDSTRING, 0, (LPARAM)L"简单");
  80. SendMessage(hDifficulty, CB_ADDSTRING, 0, (LPARAM)L"普通");
  81. SendMessage(hDifficulty, CB_ADDSTRING, 0, (LPARAM)L"困难");
  82. SendMessageW(hDifficulty, CB_SETCURSEL, 0, 0);
  83. HWND hCheat = CreateWindow(
  84. L"BUTTON", L"作弊模式",
  85. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  86. 20, 255, 110, 40,
  87. hWnd1, H_ CONF_Cheat,
  88. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  89. );
  90. HWND hCheat_1 = CreateWindow(
  91. L"BUTTON", L"不修改此项",
  92. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  93. 150, 255, 150, 40,
  94. hWnd1, H_ CONF_Cheat_NOEDIT,
  95. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  96. );
  97. SendMessage(hCheat_1, BM_SETCHECK, BST_CHECKED, 0);
  98. HWND hLabel_4 = CreateWindow(
  99. L"STATIC", L"玩家默认权限等级",
  100. WS_VISIBLE | WS_CHILD,
  101. 20, 320, 170, 30,
  102. hWnd1, NULL,
  103. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  104. );
  105. hPermission = CreateWindow(
  106. L"COMBOBOX", NULL,
  107. WS_VISIBLE | WS_CHILD | CBS_DROPDOWNLIST,
  108. 210, 320, 150, 100,
  109. hWnd1, (HMENU)CONF_DeflautPermission,
  110. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  111. );
  112. SendMessage(hPermission, CB_ADDSTRING, 0, (LPARAM)L"不修改");
  113. SendMessage(hPermission, CB_ADDSTRING, 0, (LPARAM)L"访客");
  114. SendMessage(hPermission, CB_ADDSTRING, 0, (LPARAM)L"成员");
  115. SendMessage(hPermission, CB_ADDSTRING, 0, (LPARAM)L"操作员");
  116. SendMessage(hPermission, CB_SETCURSEL, 0, 0);
  117. HWND hLabel_B = CreateWindow(
  118. L"STATIC", L"(2)服务端基本选项:作用于服务器自身",
  119. WS_VISIBLE | WS_CHILD,
  120. 20, 390, 400, 30,
  121. hWnd1, NULL,
  122. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  123. );
  124. HWND hLabel_5 = CreateWindow(
  125. L"STATIC", L"指定存档的名称",
  126. WS_VISIBLE | WS_CHILD,
  127. 20, 450, 170, 30,
  128. hWnd1, NULL,
  129. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  130. );
  131. HWND hLevelName = CreateWindow(
  132. L"EDIT", L"不修改",
  133. WS_VISIBLE | WS_CHILD | WS_BORDER | ES_MULTILINE,
  134. 220, 450, 300, 40,
  135. hWnd1, H_ CONF_LevelName,
  136. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  137. );
  138. HWND hLabel_6 = CreateWindow(
  139. L"STATIC", L"新建存档的种子",
  140. WS_VISIBLE | WS_CHILD,
  141. 20, 510, 170, 30,
  142. hWnd1, NULL,
  143. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  144. );
  145. HWND hLevelSeed = CreateWindow(
  146. L"EDIT", L"不修改",
  147. WS_VISIBLE | WS_CHILD | WS_BORDER | ES_MULTILINE,
  148. 220, 510, 300, 40,
  149. hWnd1, (HMENU)CONF_LevelSeed,
  150. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  151. );
  152. HWND hLabel_7 = CreateWindow(
  153. L"STATIC", L"最大玩家数量",
  154. WS_VISIBLE | WS_CHILD,
  155. 20, 570, 130, 30,
  156. hWnd1, NULL,
  157. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  158. );
  159. HWND hMaxPlayer = CreateWindow(
  160. L"EDIT", L"不修改",
  161. WS_VISIBLE | WS_CHILD | WS_BORDER | ES_MULTILINE | ES_NUMBER,
  162. 170, 570, 70, 40,
  163. hWnd1, (HMENU)CONF_MaxPlayer,
  164. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  165. );
  166. HWND hLabel_8 = CreateWindow(
  167. L"STATIC", L"挂机踢出时间\n填0为永不踢出",
  168. WS_VISIBLE | WS_CHILD,
  169. 280, 570, 130, 50,
  170. hWnd1, NULL,
  171. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  172. );
  173. HWND hIdle = CreateWindow(
  174. L"EDIT", L"不修改",
  175. WS_VISIBLE | WS_CHILD | WS_BORDER | ES_MULTILINE | ES_NUMBER,
  176. 430, 570, 70, 40,
  177. hWnd1, (HMENU)CONF_Idle,
  178. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  179. );
  180. HWND hOnlineMode = CreateWindow(
  181. L"BUTTON", L"在线模式",
  182. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  183. 20, 650, 100, 40,
  184. hWnd1, (HMENU)CONF_OnlineMode,
  185. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  186. );
  187. HWND hLAN = CreateWindow(
  188. L"BUTTON", L"局域网可见",
  189. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  190. 170, 650, 130, 40,
  191. hWnd1, (HMENU)CONF_LanVisible,
  192. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  193. );
  194. HWND hWhiteList = CreateWindow(
  195. L"BUTTON", L"打开原生白名单",
  196. WS_CHILD | BS_AUTOCHECKBOX,
  197. 320, 650, 200, 40,
  198. hWnd1, (HMENU)CONF_Whitelist,
  199. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  200. );
  201. HWND hOnlineMode_1 = CreateWindow(
  202. L"BUTTON", L"不修改上项",
  203. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  204. 20, 700, 130, 40,
  205. hWnd1, (HMENU)CONF_OnlineMode_NOEDIT,
  206. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  207. );
  208. HWND hLAN_1 = CreateWindow(
  209. L"BUTTON", L"不修改上项",
  210. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  211. 170, 700, 130, 40,
  212. hWnd1, (HMENU)CONF_LanVisible_NOEDIT,
  213. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  214. );
  215. HWND hWiteList_1 = CreateWindow(
  216. L"BUTTON", L"不修改上项",
  217. WS_CHILD | BS_AUTOCHECKBOX,
  218. 320, 700, 130, 40,
  219. hWnd1, (HMENU)CONF_Whitelist_NOEDIT,
  220. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  221. );
  222. SendMessage(hOnlineMode_1, BM_SETCHECK, BST_CHECKED, 0);
  223. SendMessage(hLAN_1, BM_SETCHECK, BST_CHECKED, 0);
  224. SendMessage(hWiteList_1, BM_SETCHECK, BST_CHECKED, 0);
  225. HWND hLabel_C = CreateWindow(
  226. L"STATIC", L"(3)反作弊选项:防止部分作弊方法得逞",
  227. WS_VISIBLE | WS_CHILD,
  228. 20, 770, 400, 30,
  229. hWnd1, NULL,
  230. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  231. );
  232. HWND hFroceTexture = CreateWindow(
  233. L"BUTTON", L"强制材质包",
  234. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  235. 20, 820, 130, 40,
  236. hWnd1, (HMENU)CONF_FroceTexture,
  237. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  238. );
  239. HWND hDIYskin = CreateWindow(
  240. L"BUTTON", L"禁用自定义皮肤",
  241. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  242. 165, 820, 180, 40,
  243. hWnd1, (HMENU)CONF_BanSkin,
  244. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  245. );
  246. HWND hMute = CreateWindow(
  247. L"BUTTON", L"全员禁言",
  248. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  249. 360, 820, 100, 40,
  250. hWnd1, (HMENU)CONF_Mute,
  251. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  252. );
  253. HWND hFroceTexture_1 = CreateWindow(
  254. L"BUTTON", L"不修改上项",
  255. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  256. 20, 870, 130, 40,
  257. hWnd1, (HMENU)CONF_FroceTexture_NOEDIT,
  258. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  259. );
  260. HWND hDIYskin_1 = CreateWindow(
  261. L"BUTTON", L"不修改上项",
  262. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  263. 165, 870, 130, 40,
  264. hWnd1, (HMENU)CONF_BanSkin_NOEDIT,
  265. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  266. );
  267. HWND hMute_1 = CreateWindow(
  268. L"BUTTON", L"不修改上项",
  269. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  270. 360, 870, 130, 40,
  271. hWnd1, (HMENU)CONF_Mute_NOEDIT,
  272. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  273. );
  274. SendMessage(hDIYskin_1, BM_SETCHECK, BST_CHECKED, 0);
  275. SendMessage(hMute_1, BM_SETCHECK, BST_CHECKED, 0);
  276. SendMessage(hFroceTexture_1, BM_SETCHECK, BST_CHECKED, 0);
  277. HWND hCompare = CreateWindow(
  278. L"BUTTON", L"服务端校验",
  279. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  280. 20, 930, 130, 40,
  281. hWnd1, (HMENU)CONF_AntiCheat,
  282. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  283. );
  284. HWND hCompare_1 = CreateWindow(
  285. L"BUTTON", L"不修改上项",
  286. WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX,
  287. 20, 980, 130, 40,
  288. hWnd1, (HMENU)CONF_AntiCheat_NOEDIT,
  289. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  290. );
  291. SendMessage(hCompare_1, BM_SETCHECK, BST_CHECKED, 0);
  292. HWND hOpenConfig = CreateWindow(
  293. L"BUTTON", L"打开配置文件",
  294. WS_VISIBLE | WS_CHILD ,
  295. 240, 1070, 160, 40,
  296. hWnd1, (HMENU)CONF_OPENCONFIG,
  297. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  298. );
  299. HWND hConfigOK = CreateWindow(
  300. L"BUTTON", L"提交",
  301. WS_VISIBLE | WS_CHILD ,
  302. 410, 1070, 110, 40,
  303. hWnd1, (HMENU)CONF_OK,
  304. (HINSTANCE)GetWindowLongPtr(hWnd1, GWLP_HINSTANCE), NULL
  305. );
  306. break;
  307. }
  308. case WM_COMMAND:
  309. {
  310. wmId = LOWORD(wParam);
  311. wmEvent = HIWORD(wParam);
  312. if (wmEvent == CBN_SELCHANGE && wmId == CONF_GameMode)
  313. {
  314. int selected = SendMessage(GetDlgItem(hWnd1, CONF_GameMode), CB_GETCURSEL, 0, 0);
  315. ShowWindow(GetDlgItem(hWnd1, CONF_ForceGameMode), SW_HIDE);
  316. if (selected != 0)
  317. ShowWindow(GetDlgItem(hWnd1, CONF_ForceGameMode), SW_SHOW);
  318. }
  319. if (wmEvent == BN_CLICKED && wmId == CONF_OnlineMode)
  320. {
  321. ShowWindow(GetDlgItem(hWnd1, CONF_Whitelist), SW_HIDE);
  322. ShowWindow(GetDlgItem(hWnd1, CONF_Whitelist_NOEDIT), SW_HIDE);
  323. if (IsDlgButtonChecked(hWnd1, CONF_OnlineMode) == BST_CHECKED)
  324. {
  325. ShowWindow(GetDlgItem(hWnd1, CONF_Whitelist), SW_SHOW);
  326. ShowWindow(GetDlgItem(hWnd1, CONF_Whitelist_NOEDIT), SW_SHOW);
  327. }
  328. }
  329. //Update(hWnd1,);
  330. Update(hWnd1, CONF_Cheat, CONF_Cheat_NOEDIT);
  331. Update(hWnd1, CONF_OnlineMode, CONF_OnlineMode_NOEDIT);
  332. Update(hWnd1, CONF_LanVisible, CONF_LanVisible_NOEDIT);
  333. Update(hWnd1, CONF_FroceTexture, CONF_FroceTexture_NOEDIT);
  334. Update(hWnd1, CONF_BanSkin, CONF_BanSkin_NOEDIT);
  335. Update(hWnd1, CONF_Mute, CONF_Mute_NOEDIT);
  336. Update(hWnd1, CONF_AntiCheat, CONF_AntiCheat_NOEDIT);
  337. Update(hWnd1, CONF_Whitelist, CONF_Whitelist_NOEDIT);
  338. switch (wmId)
  339. {
  340. case CONF_OPENCONFIG:
  341. ShellExecute(NULL, L"open", L"server.properties", NULL, NULL, SW_SHOW);
  342. break;
  343. case CONF_OK:
  344. Submit(hWnd1);
  345. DestroyWindow(hWnd1);
  346. break;
  347. default:
  348. break;
  349. }
  350. break;
  351. }
  352. case WM_CLOSE:
  353. {
  354. INT result = MessageBox(hWnd1,
  355. L"是否提交你所更改的内容?\n点击“取消”继续编辑", TITLE,
  356. MB_YESNOCANCEL | MB_ICONWARNING);
  357. if (result == IDYES)
  358. {
  359. Submit(hWnd1);
  360. DestroyWindow(hWnd1);
  361. }
  362. else if (result == IDNO)
  363. {
  364. DestroyWindow(hWnd1);
  365. }
  366. break;
  367. }
  368. case WM_DESTROY:
  369. hConfig = NULL;
  370. break;
  371. default:
  372. return DefWindowProc(hWnd1, msg, wParam, lParam);
  373. }
  374. }