示例#1
0
 public void CheckForKillMarker(KillMessage message)
 {
     if (message.attacker == player && message.victim != player)
     {
         killEffect.Invoke();
     }
 }
        private void ShowNewMessage(KillMessage message)
        {
            string killerName = playerNameHelper.GetName(message.KillerId, message.KillerType);
            string victimName = playerNameHelper.GetName(message.VictimId, message.VictimType);

            foreach (var killInfoObject in messageObjects)
            {
                Transform transform = killInfoObject.transform;
                transform.localPosition = transform.localPosition + new Vector3(0, -50f);
                killInfoObject.DecreaseTransparency(NewMessageFading);
            }

            if (message.KillerId == currentPlayerId)
            {
                playerKillsCount++;
            }
            aliveCount--;


            KillModel newMessage = Object.Instantiate(messagePrefabPrototype, messagesContainer);

            newMessage.SetKillerName(killerName);
            Texture2D texture2D = Texture2D.whiteTexture;

            // Sprite sprite = Sprite.Create(texture2D, new Rect(0,0,100,100), Vector2.zero);
            newMessage.SetVictimName(victimName);

            // newMessage.SetKillerSprite(sprite);
            // newMessage.SetVictimSprite(sprite);
            //todo установить нормальные спрайты
            // newMessage.SetKillerSprite(PreviewsManager.GetSprite(message.KillerType));
            // newMessage.SetVictimSprite(PreviewsManager.GetSprite(message.VictimType));

            messageObjects.Enqueue(newMessage);
        }
        public void SendKill(int matchId, KillData killData)
        {
            var playerId = killData.TargetPlayerTmpId;
            var message  = new KillMessage(killData.KillerId, killData.KillerType, killData.VictimId, killData.VictimType);

            SendUdp(matchId, playerId, message, true);
        }
示例#4
0
    //Processes a player death, this method is called from the Health script
    public void PlayerKill(Player killed, NetworkInstanceId by)
    {
        Player victim = killed;
        Player killer = playerList.Find(p => p.objectId == by);

        victim.deaths++;
        if (killer != null && killer.team != victim.team)
        {
            killer.kills++;
            int scoreGain = victim.GetBounty() + 1;
            teamScores[killer.team] += scoreGain;
            killer.score            += (short)scoreGain;
            KillMessage msg = new KillMessage();
            msg.bountyGained = victim.GetBounty();
            NetworkServer.SendToClient(killer.connectionId, ExtMsgType.Kill, msg);
            victim.killstreak = 0;
            killer.AddKill();
            Debug.Log("Player " + killer.name + " killed player " + victim.name + "!");
        }
        else
        {
            Debug.Log("Player " + victim.name + " suicided!");
        }

        Player.ActivateEventPlayerKilled(victim, killer);
        SendGameState();
        CheckEndGame();
    }
 public static void Transmit(KillMessage message)
 {
     if (OnKill != null)
     {
         OnKill.Invoke(message);
     }
 }
示例#6
0
文件: KillRegex.cs 项目: Hu3bl/vgbot
        public AbstractMessage Parse(string input)
        {
            Regex regex = new Regex(pattern);

            if (regex.IsMatch(input))
            {
                KillMessage abstractMessage = new KillMessage();
                var         match           = regex.Match(input);
                abstractMessage.UserName    = match.Groups["userName"].Value;
                abstractMessage.UserID      = match.Groups["userId"].Value;
                abstractMessage.UserSteamID = match.Groups["userSteamId"].Value;
                abstractMessage.UserTeam    = match.Groups["userTeam"].Value;
                Int32.TryParse(match.Groups["userPosX"].Value, out int userPosX);
                abstractMessage.UserPosX = userPosX;
                Int32.TryParse(match.Groups["userPosY"].Value, out int userPosY);
                abstractMessage.UserPosY = userPosY;
                Int32.TryParse(match.Groups["userPosZ"].Value, out int userPosZ);
                abstractMessage.UserPosZ          = userPosZ;
                abstractMessage.KilledUserName    = match.Groups["killedUserName"].Value;
                abstractMessage.KilledUserID      = match.Groups["killedUserId"].Value;
                abstractMessage.KilledUserSteamID = match.Groups["killedSteamId"].Value;
                abstractMessage.KilledUserTeam    = match.Groups["killedUserTeam"].Value;
                Int32.TryParse(match.Groups["killedPosX"].Value, out int killedPosX);
                abstractMessage.KilledUserPosX = killedPosX;
                Int32.TryParse(match.Groups["killedPosY"].Value, out int killedPosY);
                abstractMessage.KilledUserPosY = killedPosY;
                Int32.TryParse(match.Groups["killedPosZ"].Value, out int killedPosZ);
                abstractMessage.KilledUserPosZ = killedPosZ;
                abstractMessage.Weapon         = match.Groups["weapon"].Value;

                Regex headshotRegex = new Regex(headshotPattern);
                if (headshotRegex.IsMatch(match.Groups["headshotOrPenetrated"].Value))
                {
                    abstractMessage.IsHeadshot = true;
                }
                else
                {
                    abstractMessage.IsHeadshot = false;
                }

                Regex penetratedRegex = new Regex(penetratedPattern);
                if (penetratedRegex.IsMatch(match.Groups["headshotOrPenetrated"].Value))
                {
                    abstractMessage.IsPenetrated = true;
                }
                else
                {
                    abstractMessage.IsPenetrated = false;
                }

                return(abstractMessage);
            }
            return(null);
        }
示例#7
0
    public void UpdateObjective(KillMessage km)
    {
        print("Checking quantity objective");
        if (state == ObjectiveState.Active && (km.victim == enemyType || km.victim.GetComponent <Entity>().properName == enemyType.properName))
        {
            print("Enemy eliminated");
            amountEliminated += 1;
        }

        if (amountEliminated >= quantity)
        {
            Complete();
        }
    }
示例#8
0
    /*
     * public void CheckInteractObjectives(InteractMessage im)
     * {
     *  foreach (InteractObjective o in objectives)
     *  {
     *      if (im.interactable == o.objectiveInteractable)
     *      {
     *
     *      }
     *  }
     * }
     */


    public string KillFeedMessage(KillMessage km)
    {
        string deathMessage = km.victim.name + " was ";

        switch (km.causeOfDeath)
        {
        case DamageType.Shot:
            deathMessage += "riddled with bullets";
            break;

        case DamageType.CriticalShot:
            deathMessage += "fatally shot";
            break;

        case DamageType.BlownUp:
            deathMessage += "blown up";
            break;

        case DamageType.Gibbed:
            deathMessage += "splattered to giblets";
            break;

        case DamageType.Burned:
            deathMessage += "burned to a crisp";
            break;

        case DamageType.Bludgeoned:
            deathMessage += "bludgeoned to a pulp";
            break;

        case DamageType.FallDamage:
            deathMessage += "reduced to a flat red stain";
            break;

        default:
            deathMessage += "killed";
            break;
        }

        if (km.attacker != null)
        {
            deathMessage += " by " + km.attacker.name;
        }
        deathMessage += "!";

        return(deathMessage);
    }
示例#9
0
    public void CheckKillObjectives(KillMessage km)
    {
        if (km.attacker.GetComponent <PlayerHandler>() != null)
        {
            print("Checking kill objectives");
            foreach (PlayerObjective o in objectives)
            {
                KillQuantityObjective kqo = o as KillQuantityObjective;
                if (kqo)
                {
                    kqo.UpdateObjective(km);
                }

                KillGroupObjective kgo = o as KillGroupObjective;
                if (kgo)
                {
                    kgo.UpdateObjective(km);
                }
            }
        }
    }
示例#10
0
    public void UpdateObjective(KillMessage km)
    {
        if (state != ObjectiveState.Active)
        {
            return;
        }

        for (int i = 0; i < enemies.Count; i++)
        {
            if (enemies[i] == km.victim)
            {
                enemies.Remove(enemies[i]);
                break;
            }
        }

        if (enemies.Count <= 0)
        {
            Complete();
        }
    }
 public void AddKillModel(KillMessage message)
 {
     messages.Enqueue(message);
     log.Debug($"Сообщение об убийстве {message.KillerId} {message.KillerType} {message.VictimId}" +
               $" {message.VictimType}");
 }
示例#12
0
 public static void AddNewKillInfo(KillMessage message)
 {
     Messages.Add(message);
     wasChanged = true;
 }
示例#13
0
 public Task SendKillMessage(KillMessage message)
 {
     return(this.SendMessage(message));
 }