示例#1
0
文件: Server.cs 项目: Apletre/WoWBot
        // do1 - shield do2 - dispell do3 - abolish do4 - flash heal do5 - shadowform
        public void Do(ThreadSubscribersForThreat sbscr, bool under_attack, bool to_dispell, bool to_abolish_disease, bool assist)
        {
            toAssaultBotMsg msg = new toAssaultBotMsg();

            if (GCD == 0)
            {
                for (int i = 0; i < Party.Players.Length; i++)
                {
                    if (party_data.TryGetValue(Party.Players[i], out member))
                    {
                        if (to_dispell && toPurify(MagicToDispellArray, member.buff_arr))
                        {
                            msg.to_do_code = Request.do3;
                            msg.player_id = i;
                            SetGCD();

                            sw.WriteLine("Dispell "+Convert.ToString(i));

                            break;
                        }

                        if (to_abolish_disease && toPurify(DiseaseToDispellArray, member.buff_arr) && member.AbolishDisease == 0)
                        {
                            msg.to_do_code = Request.do2;
                            msg.player_id = i;
                            member.SetAbolishDisease();
                            SetGCD();

                            sw.WriteLine("AbolishDisease " + Convert.ToString(i));

                            break;
                        }

                        if (under_attack && assist)
                        {
                            if (i == 0 && member.hp > member.max_hp * 0.66)
                                to_heal = false;

                            if (i == 0 && member.hp < member.max_hp * 0.33)
                            {
                                to_heal = true;
                                tmp_to_heal = true;
                            }

                            if (to_heal == false && tmp_to_heal == true)
                            {
                                msg.to_do_code = Request.do5;
                                tmp_to_heal = false;
                                SetGCD();
                                break;
                            }

                            if (member.hp < member.max_hp * 0.40 && ShieldCD == 0 && member.Shield == 0 && member.hp > 0)
                            {
                                msg.to_do_code = Request.do1;
                                msg.player_id = i;
                                member.SetShield();
                                SetGCD();
                                ShieldCD = 4000 + delay;
                                break;
                            }

                            if (to_heal)
                            {
                                msg.to_do_code = Request.do4;
                                msg.player_id = 0;
                                SetGCD();
                                break;
                            }
                        }
                    }
                }
            }

            foreach (string item in Party.Players)
            {
                WowForPartyMemberHealerCD player_data;
                if(party_data.TryGetValue(item,out player_data))
                {
                    if (player_data.Shield < 0)
                        player_data.Shield = 0;
                    else
                        player_data.Shield -= delay;

                    if (player_data.AbolishDisease < 0)
                        player_data.AbolishDisease = 0;
                    else
                        player_data.AbolishDisease -= delay;
                }
            }

            CDdec();
            msg.under_attack = under_attack;
            sbscr.Send(msg);
        }
示例#2
0
文件: Server.cs 项目: Apletre/WoWBot
        // do1 - dispell curse
        public void Do(ThreadSubscribersForThreat sbscr, bool under_attack, bool to_dispell_curse)
        {
            WowForPartyMemberHealerCD member;
            toAssaultBotMsg msg = new toAssaultBotMsg();

            if (GCD == 0)
            {
                for (int i = 0; i < Party.Players.Length; i++)
                {
                    if (party_data.TryGetValue(Party.Players[i], out member))
                    {
                        if (to_dispell_curse && toPurify(CurseToDispellArray, member.buff_arr))
                        {
                            msg.to_do_code = Request.do1;
                            msg.player_id = i;
                            SetGCD();

                            sw.WriteLine("Curse " + Convert.ToString(i));

                            break;
                        }
                    }
                }

            }
            CDdec();
            msg.under_attack = under_attack;
            sbscr.Send(msg);
        }
示例#3
0
文件: Server.cs 项目: Apletre/WoWBot
 public void Send(toAssaultBotMsg msg)
 {
     bool conn=false;
     Converter.CodeAndSend<toAssaultBotMsg>(handle, msg,ref conn, client_packet_size);
 }
示例#4
0
文件: Server.cs 项目: Apletre/WoWBot
        void Publish()
        {
            toAssaultBotMsg default_msg = new toAssaultBotMsg();

            while (working.value)
            {
                default_msg.under_attack = false;

                foreach (WoWLivingObj item in party_data.Values)
                {
                    if (item.under_attack)
                    {
                        default_msg.under_attack = true;
                        break;
                    }
                }

                for (int i = 0; i < subs_arr.Length; i++)
                {
                    if (subs_arr[i] != null && subs_arr[i].IsAlive())
                    {
                        if (subs_arr[i].name == "Lichinkin")
                            priest.Do(subs_arr[i], default_msg.under_attack, DispellMagic.value, AbolishDisease.value, PriestHealAssist.value);
                        else
                            if (subs_arr[i].name == "Format")
                                mage.Do(subs_arr[i], default_msg.under_attack, DispellCurse.value);
                            else
                                subs_arr[i].Send(default_msg);
                    }

                }

                Thread.Sleep(delay);
            }
        }
示例#5
0
        void Recieve()
        {
            bool conn=false;
            int bad_packets=0;
            toAssaultBotMsg msg = new toAssaultBotMsg();

            while (working)
            {
                try
                {
                    msg = Converter.RecieveAndDecode<toAssaultBotMsg>(Socket_reciever,ref conn,ref bad_packets,packet_size);
                    threat = msg.under_attack;

                    if (msg.to_do_code != Request.DoNothing)
                    {
                        to_do.player_id = msg.player_id;
                        to_do.to_do_code = msg.to_do_code;
                    }
                }
                catch { }
            }
        }