예제 #1
0
        /// <summary>
        /// 指定された文字列がチャットに表示されるまで待機
        /// </summary>
        /// <param name="iRegexString">検索文字列</param>
        /// <param name="iWithEnter">True:エンターキーを連打する</param>
        /// <returns>True:見つかった False:見つからなかった</returns>
        public bool WaitChat(ChatTool iChatTool, string iRegexString, int iStartChatIndex, bool iWithEnter)
        {
            logger.Trace("RegexString={0} StartChatIndex={1} WithEnter={1}", iRegexString, iStartChatIndex, iWithEnter);
            List <EliteAPI.ChatEntry> arrChatLine;
            int currChatIndex = iStartChatIndex;

            for (int i = 0; (i < this.MaxLoopCount); i++)
            {
                arrChatLine = iChatTool.GetChatLine(currChatIndex);
                foreach (var cl in arrChatLine)
                {
                    //チャットの判定
                    if (MiscTool.IsRegexString(cl.Text, iRegexString))
                    {
                        return(true);
                    }
                }
                if (!this.UseEnternity && iWithEnter)
                {
                    if (api.Target.GetTargetInfo().TargetIndex != 0)
                    {
                        api.ThirdParty.KeyPress(Keys.RETURN);///Enter
                    }
                }
                System.Threading.Thread.Sleep(this.ChatWait);
            }
            logger.Warn("タイムアウトしました");
            return(false);
        }
예제 #2
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 public FFACEControl(PolTool iPOL, ChatTool iChat, LoggerTool iLogger)
 {
     this.pol = iPOL;
     this.fface = iPOL.FFACE;
     this.chat = iChat;
     this.logger = iLogger;
     this.MaxLoopCount = DEFAULT_MAX_LOOP_COUNT;
     this.UseEnternity = DEFAULT_USE_ENTERNITY;
     this.BaseWait = DEFAULT_BASE_WAIT;
     this.ChatWait = DEFAULT_CHAT_WAIT;
 }
예제 #3
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 public EliteAPIControl(PolTool iPOL, ResourceTool iResource, ChatTool iChat)
 {
     this.pol          = iPOL;
     this.api          = iPOL.EliteAPI;
     this.chat         = iChat;
     this.resource     = iResource;
     this.MaxLoopCount = DEFAULT_MAX_LOOP_COUNT;
     this.UseEnternity = DEFAULT_USE_ENTERNITY;
     this.BaseWait     = DEFAULT_BASE_WAIT;
     this.ChatWait     = DEFAULT_CHAT_WAIT;
 }
예제 #4
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="iFFACE"></param>
 /// <param name="iChat"></param>
 /// <param name="iSettings"></param>
 /// <param name="iLogger"></param>
 public HarakiriTool(PolTool iPol, ChatTool iChat, Settings iSettings, LoggerTool iLogger)
 {
     pol = iPol;
     fface = iPol.FFACE;
     chat = iChat;
     settings = iSettings;
     logger = iLogger;
     fishDB = new FishDB(logger);
     harakiriDB = new HarakiriDB(logger);
     control = new FFACEControl(pol, chat, logger);
     control.MaxLoopCount = Constants.MAX_LOOP_COUNT;
     control.UseEnternity = settings.UseEnternity;
     control.BaseWait = settings.Global.WaitBase;
     control.ChatWait = settings.Global.WaitChat;
     this.RunningStatus = RunningStatusKind.Stop;
     this.HarakiriStatus = HarakiriStatusKind.Normal;
 }
예제 #5
0
        /// <summary>
        /// 指定された文字列がチャットに表示されるまで待機
        /// </summary>
        /// <param name="iRegexString">検索文字列</param>
        /// <param name="iWithEnter">True:エンターキーを連打する</param>
        /// <returns>True:見つかった False:見つからなかった</returns>
        public bool WaitChat(ChatTool iChatTool, string iRegexString, int iStartChatIndex, bool iWithEnter)
        {
            logger.Output(LogLevelKind.INFO, "WaitChat", string.Format("RegexString={0} StartChatIndex={1} WithEnter={1}", iRegexString, iStartChatIndex, iWithEnter));
            List<FFACE.ChatTools.ChatLine> arrChatLine;
            int currChatIndex = iStartChatIndex;
            for (int i = 0; (i < this.MaxLoopCount); i++)
            {
                arrChatLine = iChatTool.GetChatLine(currChatIndex);
                foreach (FFACE.ChatTools.ChatLine cl in arrChatLine)
                {
                    //チャットの判定
                    if (MiscTool.IsRegexString(cl.Text, iRegexString))
                    {
                        return true;
                    }

                }
                if (!this.UseEnternity && iWithEnter)
                {
                    if (this.fface.Target.ID != 0)
                        this.fface.Windower.SendKeyPress(KeyCode.EnterKey);///Enter
                }
                System.Threading.Thread.Sleep(this.ChatWait);
            }
            logger.Output(LogLevelKind.WARN, "WaitChat", "タイムアウトしました");
            return false;
        }
예제 #6
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="iFFACE"></param>
 /// <param name="iChat"></param>
 /// <param name="iSettings"></param>
 /// <param name="iLogger"></param>
 public FishingTool(PolTool iPol, ChatTool iChat, Settings iSettings, LoggerTool iLogger)
 {
     pol = iPol;
     pol.ChangeStatus += new PolTool.ChangeStatusEventHandler(this.PolTool_ChangeStatus);
     fface = iPol.FFACE;
     chat = iChat;
     settings = iSettings;
     logger = iLogger;
     FishDB = new FishDB(logger);
     fishHistoryDB = new FishHistoryDB(this.PlayerName,this.EarthDateTime, logger);
     FishHistoryDBModel history = fishHistoryDB.SelectDayly(this.PlayerName, this.EarthDateTime);
     this.TimeElapsed = history.TimeElapsed;
     control = new FFACEControl(pol, chat, logger);
     control.MaxLoopCount = Constants.MAX_LOOP_COUNT;
     control.UseEnternity = settings.UseEnternity;
     control.BaseWait = settings.Global.WaitBase;
     control.ChatWait = settings.Global.WaitChat;
     this.RunningStatus = RunningStatusKind.Stop;
     this.FishingStatus = FishingStatusKind.Normal;
 }
예제 #7
0
 /// <summary>
 /// ChatTool ReceivedCommandイベント
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ChatTool_ReceivedCommand(object sender, ChatTool.ReceivedCommandEventArgs e)
 {
     List<string> cmd = e.Command;
     if (cmd.Count > 0)
     {
         switch (cmd[0])
         {
             case "start":
                 Console.WriteLine(cmd[0]);
                 if(!fishingFlg) startFishing();
                 break;
             case "stop":
                 Console.WriteLine(cmd[0]);
                 if (fishingFlg) stopFishing(true);
                 break;
         }
     }
 }
예제 #8
0
        /// <summary>
        /// アンロード処理
        /// </summary>
        private void unload()
        {
            //設定保存
            saveSettings();
            logger.Output(LogLevelKind.DEBUG, "設定保存終了");
            //メインスレッド停止
            if (thFishing != null && thFishing.IsAlive) thFishing.Abort();
            thFishing = null;
            logger.Output(LogLevelKind.DEBUG, "メインスレッド停止");
            //DB更新スレッド停止
            if (thUpdateDB != null && thUpdateDB.IsAlive) thUpdateDB.Abort();
            //監視スレッド停止
            if (thMonitor != null && thMonitor.IsAlive) thMonitor.Abort();
            thMonitor = null;
            logger.Output(LogLevelKind.DEBUG, "監視スレッド停止");
            //FFACEControl停止
            control = null;
            //HarakiriTool停止
            if (harakiri != null) harakiri.SystemAbort();
            harakiri = null;
            logger.Output(LogLevelKind.DEBUG, "HarakiriTool停止");
            //FishingTool停止
            if (fishing != null) fishing.SystemAbort();
            fishing = null;
            logger.Output(LogLevelKind.DEBUG, "FishingTool停止");
            //ChatTool停止
            if (chat != null) chat.SystemAbort();
            chat = null;
            logger.Output(LogLevelKind.DEBUG, "ChatTool停止");

            logger.Output(string.Format("===== {0} {1} 終了=====", MiscTool.GetAppAssemblyName(), MiscTool.GetAppVersion()));
        }
예제 #9
0
 /// <summary>
 /// コンストラクタ処理部
 /// </summary>
 /// <param name="iPol"></param>
 private void constructor(PolTool iPol)
 {
     //PolTool初期設定
     pol = iPol;
     pol.ChangeStatus += new PolTool.ChangeStatusEventHandler(this.PolTool_ChangeStatus);
     //FFACE初期設定
     fface = iPol.FFACE;
     //LoggerTool初期設定
     logger = new LoggerTool(MiscTool.GetAppAssemblyName(), pol.FFACE.Player.Name);
     logger.Enable = args.LoggerEnable;
     logger.OutputLogLevel = args.LoggerLogLevel;
     logger.EnableVarDump = args.LoggerVarDumpEnable;
     logger.Output(LogLevelKind.INFO, string.Format("===== {0} {1} =====", MiscTool.GetAppAssemblyName(), MiscTool.GetAppVersion()));
     logger.Output(LogLevelKind.INFO, string.Format("デバッグログ:{0} ログレベル:{1} 変数出力:{2}", args.LoggerEnable, args.LoggerLogLevel, args.LoggerVarDumpEnable));
     logger.Output(LogLevelKind.INFO, string.Format("プロセス({0})にアタッチしました", pol.ProcessID));
     //Settings初期設定
     settings = new Settings(iPol.FFACE.Player.Name);
     //ChatTool初期設定
     chat = new ChatTool(iPol.FFACE);
     chat.ReceivedCommand += new ChatTool.ReceivedCommandEventHandler(this.ChatTool_ReceivedCommand);
     logger.Output(LogLevelKind.DEBUG, "ChatTool起動");
     //FishingTool初期設定
     fishing = new FishingTool(iPol, chat, settings, logger);
     fishing.Fished += new FishingTool.FishedEventHandler(this.FishingTool_Fished);
     fishing.ChangeMessage += new FishingTool.ChangeMessageEventHandler(this.FishingTool_ChangeMessage);
     fishing.ChangeStatus += new FishingTool.ChangeStatusEventHandler(this.FishingTool_ChangeStatus);
     fishing.CaughtFishesUpdate += new FishingTool.CaughtFishesUpdateEventHandler(this.FishingTool_CaughtFishesUpdate);
     logger.Output(LogLevelKind.DEBUG, "FishingTool起動");
     //HarakiriTool初期設定
     harakiri = new HarakiriTool(iPol, chat, settings, logger);
     harakiri.HarakiriOnce += new HarakiriTool.HarakiriOnceEventHandler(this.HarakiriTool_HarakiriOnce);
     harakiri.ChangeMessage += new HarakiriTool.ChangeMessageEventHandler(this.HarakiriTool_ChangeMessage);
     harakiri.ChangeStatus += new HarakiriTool.ChangeStatusEventHandler(this.HarakiriTool_ChangeStatus);
     logger.Output(LogLevelKind.DEBUG, "HarakiriTool起動");
     //FFACEControl初期設定
     control = new FFACEControl(pol, chat, logger);
     control.MaxLoopCount = Constants.MAX_LOOP_COUNT;
     control.UseEnternity = settings.UseEnternity;
     control.BaseWait = settings.Global.WaitBase;
     control.ChatWait = settings.Global.WaitChat;
     logger.Output(LogLevelKind.DEBUG, "FFACEControl起動");
     //監視スレッド起動
     thMonitor = new Thread(threadMonitor);
     thMonitor.Start();
     logger.Output(LogLevelKind.DEBUG, "監視スレッド起動");
     //DB
     fishDB = new FishDB(logger);
     fishHistoryDB = new FishHistoryDB(fishing.PlayerName, fishing.EarthDateTime, logger);
     harakiriDB = new HarakiriDB(logger);
     //古いデータをコンバート
     converter();
     //DB更新
     updatedb = new UpdateDBTool(settings, logger);
     updatedb.ReceiveMessage += new UpdateDBTool.ReceiveMessageEventHandler(this.UpdateDBTool_ReceiveMessage);
     updatedb.NewerVersion += new UpdateDBTool.NewerVersionEventHandler(this.UpdateDBTool_NewerVersion);
 }