BotRunner.Login.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using DeepCore;
  2. using DeepCore.FuckPomeloClient;
  3. using DeepMMO.Data;
  4. using DeepMMO.Protocol;
  5. using DeepMMO.Protocol.Client;
  6. using System;
  7. namespace DeepMMO.Client.BotTest.Runner
  8. {
  9. public partial class BotRunner
  10. {
  11. protected virtual void on_gate_connect_callback(ClientEnterGateResponse token)
  12. {
  13. this.net_status.Value = "";
  14. log_response(token);
  15. client.Connect_Connect(on_game_connect_callback);
  16. }
  17. protected virtual void on_gate_in_queue(ClientEnterGateInQueueNotify ntf)
  18. {
  19. this.net_status.Value = $"排队中: 人数:{ntf.QueueIndex} 预计时间:{ntf.ExpectTime}";
  20. }
  21. protected virtual void on_game_connect_callback(ClientEnterServerResponse rsp)
  22. {
  23. log_response(rsp);
  24. if (Response.CheckSuccess(rsp))
  25. {
  26. do_get_role_list(on_get_role_list);
  27. }
  28. }
  29. //---------------------------------------------------------------------------------------------------------------------------
  30. protected virtual void do_get_role_list(Action<PomeloException, ClientGetRolesResponse> cb)
  31. {
  32. this.client.GameClient.Request<ClientGetRolesResponse>(
  33. new ClientGetRolesRequest() { }, cb);
  34. }
  35. protected virtual void on_get_role_list(PomeloException err, ClientGetRolesResponse rsp)
  36. {
  37. log_response(rsp, err);
  38. if (Response.CheckSuccess(rsp))
  39. {
  40. if (rsp.s2c_roles != null && rsp.s2c_roles.Count > 0)
  41. {
  42. var role = random.GetRandomInArray(rsp.s2c_roles);
  43. do_enter_game(role.uuid, on_enter_game);
  44. }
  45. else
  46. {
  47. do_get_random_name(on_get_random_name);
  48. }
  49. }
  50. }
  51. //---------------------------------------------------------------------------------------------------------------------------
  52. protected virtual void do_get_random_name(Action<PomeloException, ClientGetRandomNameResponse> cb)
  53. {
  54. var prolist = RPGClientTemplateManager.Instance.AllRoleTemplates;
  55. var pro = random.GetRandomInArray(prolist);
  56. this.client.GameClient.Request<ClientGetRandomNameResponse>(new ClientGetRandomNameRequest()
  57. {
  58. c2s_role_gender = (byte)(random.Next() % 2),
  59. c2s_role_template_id = pro != null ? pro.id : 0,
  60. }, cb);
  61. }
  62. protected virtual void on_get_random_name(PomeloException err, ClientGetRandomNameResponse rsp)
  63. {
  64. log_response(rsp, err);
  65. if (Response.CheckSuccess(rsp))
  66. {
  67. do_create_role(rsp.s2c_name, on_create_role);
  68. }
  69. }
  70. //---------------------------------------------------------------------------------------------------------------------------
  71. protected virtual void do_create_role(string roleName, Action<PomeloException, ClientCreateRoleResponse> cb)
  72. {
  73. var prolist = RPGClientTemplateManager.Instance.AllRoleTemplates;
  74. var pro = random.GetRandomInArray(prolist);
  75. if (pro != null)
  76. {
  77. this.client.GameClient.Request<ClientCreateRoleResponse>(new ClientCreateRoleRequest()
  78. {
  79. c2s_name = roleName,
  80. c2s_template_id = pro.unit_template_id,
  81. }, cb);
  82. }
  83. }
  84. protected virtual void on_create_role(PomeloException err, ClientCreateRoleResponse rsp)
  85. {
  86. log_response(rsp, err);
  87. if (Response.CheckSuccess(rsp))
  88. {
  89. do_enter_game(rsp.s2c_role.uuid, on_enter_game);
  90. }
  91. else if (rsp.s2c_code == ClientCreateRoleResponse.CODE_NAME_ALREADY_EXIST)
  92. {
  93. var rn = client.GameClient.GetLastResponse<ClientGetRandomNameResponse>();
  94. if (rn != null)
  95. {
  96. var name = rn.s2c_name + this.random.Next(100).ToString();
  97. do_create_role(name, on_create_role);
  98. }
  99. else
  100. {
  101. var name = this.account + this.random.Next(100).ToString();
  102. do_create_role(name, on_create_role);
  103. }
  104. }
  105. else if (rsp.s2c_code == ClientCreateRoleResponse.CODE_BLACK_NAME)
  106. {
  107. var name = this.account + this.random.Next(100).ToString();
  108. do_create_role(name, on_create_role);
  109. }
  110. else
  111. {
  112. var name = client.GameClient.GetLastResponse<ClientGetRandomNameResponse>();
  113. do_create_role(name.s2c_name, on_create_role);
  114. }
  115. }
  116. //---------------------------------------------------------------------------------------------------------------------------
  117. protected virtual void do_enter_game(string roleUUID, Action<PomeloException, ClientEnterGameResponse> cb)
  118. {
  119. this.client.GameClient.Request<ClientEnterGameResponse>(new ClientEnterGameRequest()
  120. {
  121. c2s_roleUUID = roleUUID
  122. }, cb);
  123. }
  124. protected virtual void on_enter_game(PomeloException err, ClientEnterGameResponse rsp)
  125. {
  126. log_response(rsp, err);
  127. if (Response.CheckSuccess(rsp))
  128. {
  129. }
  130. }
  131. //---------------------------------------------------------------------------------------------------------------------------
  132. }
  133. }