예제 #1
0
    internal void ResetArea(BotAgent resetter)
    {
        if (Time.time - timeAtLastReset >= resetCooldown)
        {
            Debug.Log("RESETTING TRAINING AREA");
            ResetSpawnPositions();
            int arena = (int)academy.resetParameters["arena"];

            foreach (Transform ar in arenas)
            {
                ar.gameObject.SetActive(false);
            }

            arenas[arena].gameObject.SetActive(true);

            foreach (BotAgent bot in team1)
            {
                if (bot != resetter)
                {
                    bot.Done();
                }
            }
            foreach (BotAgent bot in team2)
            {
                if (bot != resetter)
                {
                    bot.Done();
                }
            }
            timeAtLastReset = Time.time;
        }
    }
예제 #2
0
    public override bool Fire()
    {
        if (!base.Fire())
        {
            return(false);
        }

        RaycastHit hit;

        LayerMask layerMask = LayerMask.GetMask("Default");

        if (LayerMask.LayerToName(botWeaponHolder.gameObject.layer) == "team1")
        {
            layerMask = LayerMask.GetMask("team2");//will only hit team2 layer
            //Debug.Log(botWeaponHolder.name + " is targeting team2");
        }
        else
        {
            layerMask = LayerMask.GetMask("team1");//will only hit team1 layer
            //Debug.Log(botWeaponHolder.name + " is targeting team1");
        }

        Debug.DrawRay(muzzle.position, muzzle.forward * 20, Color.red, .5f);

        if (Physics.Raycast(muzzle.position, muzzle.forward, out hit, 500, layerMask))
        {
            //Debug.Log("bullet hit SOMETHING");
            float damage = 0;

            if (hit.distance < damageCurveLength && !hit.transform.CompareTag("Player"))
            {
                damage = damageFallOff.Evaluate(hit.distance / damageCurveLength);
            }
            else
            {
                damage = damageFallOff.Evaluate(1);//The bullet hit something past max distance, lets just default to the lowest damagew now (don't want it to do NO dmg)
            }

            Player player = hit.transform.gameObject.GetComponent <Player>();
            if (player != null)
            {
                Debug.Log("damaging");
                player.Damage(damage);
            }

            BotAgent bot = hit.transform.gameObject.GetComponent <BotAgent>();
            if (bot != null)
            {
                Debug.Log(botWeaponHolder.gameObject.name + " hit " + bot.gameObject.name + " for " + damage + " damage!");
                bot.Damage(damage);
                botWeaponHolder.AddReward(.2f);
            }
        }

        return(true);
    }
예제 #3
0
        private static void Main()
        {
            var ircUser = new IrcUser(Conf.Nick, Conf.User);
            var client  = new IrcClient(Conf.Server, ircUser);
            var ChatBot = new BotAgent();

            ChatBot.Initialise();

            client.ConnectionComplete += (s, e) => {
                foreach (string chan in Conf.Channels)
                {
                    client.JoinChannel(chan);
                }
            };

            client.ChannelMessageRecieved += (s, e) => {
                var source  = e.PrivateMessage.Source;
                var channel = client.Channels[source];
                var message = e.PrivateMessage.Message;

                var urls = URLTitle.GetURLs(message);
                if (urls.Count != 0)
                {
                    var responseTitle = URLTitle.GetTitle(urls[0]);
                    channel.SendMessage(responseTitle);
                }
                else
                {
                    var query    = ChatBot.Query(message);
                    var response = ChatBot.Reply(query);
                    Log(message, response.Output, Conf.Nick, source);
                    channel.SendMessage(response.Output);
                }
            };

            client.NetworkError += (s, e) =>
                                   Console.WriteLine("Error: {0}", e.SocketError);

            client.ConnectAsync();
            while (true)
            {
                ;
            }
        }