123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- using CommonAI.ZoneClient;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using pomelo.connector;
- using XmdsBattleClientBot.Bot;
- using pomelo.area;
- using CommonLang;
- using XmdsCommon.ZoneClient;
- using CommonAI.Zone;
- using CommonLang.Property;
- namespace XmdsBotTest.Runner
- {
- public class ModuleDungeon : BotRunner.RunnerModule
- {
- private FubenListResponse LastFubenList;
- private FubenInfo LastSelectFuben;
- private EnterDungeonRequest LastEnterFuben;
- public ModuleDungeon(BotRunner r) : base(r) { }
- protected internal override void OnGateBindPlayer(BindPlayerResponse e)
- {
- base.OnGateBindPlayer(e);
- select_random_fuben();
- }
- protected override void OnEnableChanged(bool enable)
- {
- base.OnEnableChanged(enable);
- if (Enable)
- {
- try_enter_selected_fuben();
- }
- }
- protected internal override void OnBattleActorReady(CommonAI.ZoneClient.ZoneLayer layer, CommonAI.ZoneClient.ZoneActor actor)
- {
- layer.AddTimeDelayMS(Config.CheckIntervalMS, (t) =>
- {
- if (Enable)
- {
- try_enter_selected_fuben();
- get_fuben_list();
- }
- });
- layer.AddTimePeriodicMS(Config.CheckIntervalMS, (t) =>
- {
- if (Enable)
- {
- on_do_1s(layer as HZZoneLayer);
- }
- });
- layer.MessageReceived += Layer_MessageReceived;
- }
- private void Layer_MessageReceived(ZoneLayer layer, CommonLang.Protocol.IMessage msg)
- {
- if (msg is GameOverEvent)
- {
- on_game_over();
- }
- }
- private void select_random_fuben()
- {
- client.GameSocket.fightLevelHandler.fubenListRequest(
- 0,
- (err, rsp) =>
- {
- LastFubenList = rsp;
- LastSelectFuben = CUtils.GetRandomInArray<FubenInfo>(rsp.s2c_list, bot.Random);
- // LastSelectFuben = rsp.s2c_list[0];
- runner.log_response("fubenListRequest done", err, rsp);
- });
- }
- private void get_fuben_list()
- {
- client.GameSocket.fightLevelHandler.fubenListRequest(
- 0,
- (err, rsp) =>
- {});
- }
- private void try_enter_selected_fuben()
- {
- if (LastSelectFuben != null)
- {
- //当前场景不是要进的副本//
- if (LastEnterFuben == null || LastSelectFuben.mapId != LastEnterFuben.c2s_dungeonId)
- {
- client.GameSocket.fightLevelHandler.enterDungeonRequest(LastSelectFuben.mapId, (err, rsp) =>
- {
- runner.log_response("enterDungeonRequest done", err, rsp);
- if (rsp != null)
- {
- LastEnterFuben = new EnterDungeonRequest();
- LastEnterFuben.c2s_dungeonId = LastSelectFuben.mapId;
- }
- else
- {
- LastEnterFuben = null;
- }
- });
- }
- else
- {
- LastEnterFuben = null;
- }
- }
- }
- private void on_game_over()
- {
- LastSelectFuben = null;
- LastEnterFuben = null;
- select_random_fuben();
- client.GameSocket.fightLevelHandler.leaveDungeonRequest((err, rsp) =>
- {
- runner.log_response("leaveDungeonRequest done", err, rsp);
- });
- }
- private void on_do_1s(HZZoneLayer layer)
- {
- layer.Actor.SendUnitGuard(true);
- if (runner.CurrentMoveAgent == null || runner.CurrentMoveAgent.IsEnd)
- {
- runner.do_bs_actor_random_move_region(true, 0.01f);
- }
- //if(bot.CurrentSceneType == XmdsCommon.EditorData.XmdsConstConfig.SceneType.Dungeon)
- //{
- // on_game_over();
- //}
- }
- [Desc("副本配置")]
- [Expandable]
- public class Config
- {
- [Desc("副本检测间隔")]
- public static int CheckIntervalMS = 5000;
- [Desc("副本难度")]
- public static BotClient.DungeonType DType = BotClient.DungeonType.单人副本;
- [Desc("副本等级")]
- public static BotClient.DungeonLevel DLevel = BotClient.DungeonLevel.普通;
- public override string ToString()
- {
- return "副本配置";
- }
- }
- }
- }
|