예제 #1
0
        public void SendScreamMessage(Client sender, string message)
        {
            CharacterEntity character = sender.GetAccountEntity().CharacterEntity;

            SendMessageToNearbyPlayers(character, message, ChatMessageType.Loud);

            SaidEventHandler handler   = OnPlayerSaid;
            SaidEventArgs    eventArgs = new SaidEventArgs(character, message, ChatMessageType.Loud);

            handler?.Invoke(this, eventArgs);
        }
예제 #2
0
        public void Try(Client sender, string message)
        {
            CharacterEntity character = sender.GetAccountEntity().CharacterEntity;

            SendMessageToNearbyPlayers(character, Utils.RandomRange(100) <= 49
                ? "zawiódł próbując " + message
                : "odniósł sukces próbując " + message,
                                       ChatMessageType.ServerMe);

            SaidEventHandler handler   = OnPlayerSaid;
            SaidEventArgs    eventArgs = new SaidEventArgs(character, message, ChatMessageType.ServerMe);

            handler?.Invoke(this, eventArgs);
        }
예제 #3
0
        private void OnChatMessageHandler(CharacterEntity sender, string message)
        {
            if (sender.CanTalk)
            {
                return;
            }

            if (sender.CurrentCellphone != null)
            {
                SendMessageToNearbyPlayers(sender, message, sender.CurrentCellphone.CurrentCall != null
                    ? ChatMessageType.PhoneOthers
                    : ChatMessageType.Normal);
            }

            SendMessageToNearbyPlayers(sender, message, ChatMessageType.Normal);

            SaidEventArgs eventArgs = new SaidEventArgs(sender, message, ChatMessageType.Normal);

            OnPlayerSaid?.Invoke(this, eventArgs);
        }
        private void CornerPlayerSaidHandler(object sender, SaidEventArgs e)
        {
            //Brak TransactionLevel bot przychodzi i pyta o narkotyk
            //TransactionLevel == 1 PedEntity czeka na cenę
            //TransactionLevel == 2 Podana cena była za wysoka i bot wynegocjował zgodnie z tym co może dać, czeka aż gracz powie tak lub poda cenę

            //Jeśli gracz powie że nie ma
            if ((!BotHandle.HasData("TransactionLevel") || BotHandle.GetData("TransactionLevel") == 2) &&
                e.Character == Seller &&
                (e.ChatMessageType == ChatMessageType.Normal || e.ChatMessageType == ChatMessageType.Quiet || e.ChatMessageType == ChatMessageType.Loud) &&
                Messages.NoMessagesList.Any(e.Message.Contains))
            {
                GoAllPoints(true);
            }
            else if (BotHandle.HasData("TransactionLevel") &&
                     BotHandle.GetData("TransactionLevel") == 1 &&
                     e.Character == Seller &&
                     (e.ChatMessageType == ChatMessageType.Normal || e.ChatMessageType == ChatMessageType.Quiet || e.ChatMessageType == ChatMessageType.Loud) &&
                     !e.Message.All(char.IsDigit))
            {
                //Jeśli gracz nie napisze zadnej liczby
                Seller.SendInfo("Aby podać cenę kupującemu NPC musisz używać liczb np. 70.");
            }
            //Jeśli gracz powie tak
            else if (!BotHandle.HasData("TransactionLevel") && e.Character == Seller && (e.ChatMessageType == ChatMessageType.Normal || e.ChatMessageType == ChatMessageType.Quiet || e.ChatMessageType == ChatMessageType.Loud) && Messages.YesMessagesList.Any(e.Message.Contains))
            {
                BotHandle.SetData("TransactionLevel", 1);
                SendMessageToNerbyPlayers("Ile za to cudo?", ChatMessageType.Normal);
            }
            //Jeśli gracz poda za wysoką cenę, ale w granicach rozsądku
            else if (BotHandle.HasData("TransactionLevel") &&
                     BotHandle.GetData("TransactionLevel") == 1 &&
                     e.Character == Seller &&
                     (e.ChatMessageType == ChatMessageType.Normal || e.ChatMessageType == ChatMessageType.Quiet || e.ChatMessageType == ChatMessageType.Loud) &&
                     MostlyGoodMoneyCounts.Any(Convert.ToDecimal(e.Message).Equals))
            {
                SendMessageToNerbyPlayers($"Co powiesz na ${MoneyCount}?", ChatMessageType.Normal);
                BotHandle.SetData("TransactionLevel", 2);
            }
            //Jeśli gracz poda właściwą lub niższą cenę
            else if (BotHandle.HasData("TransactionLevel") &&
                     BotHandle.GetData("TransactionLevel") == 1 &&
                     e.Character == Seller &&
                     (e.ChatMessageType == ChatMessageType.Normal || e.ChatMessageType == ChatMessageType.Quiet || e.ChatMessageType == ChatMessageType.Loud) &&
                     (e.Message.Contains(MoneyCount.ToString(CultureInfo.InvariantCulture)) || LowerMoneyCounts.Any(Convert.ToDecimal(e.Message).Equals)))
            {
                //Sprawdzamy czy gracz posiada dany narkotyk
                if (Seller.DbModel.Items.Any(i => i.ItemEntityType == ItemEntityType.Drug && i.FirstParameter == (int)DrugType))
                {
                    EndTransaction(LowerMoneyCounts.Any(Convert.ToDecimal(e.Message).Equals) ? LowerMoneyCounts.First(Convert.ToDecimal(e.Message).Equals) : MoneyCount);
                }
                //Jeśli gracz nie ma narkotyku
                else
                {
                    SendFailMessage();
                }
                GoAllPoints(true);
            }
            //Po negocjacji
            else if (BotHandle.HasData("TransactionLevel") &&
                     BotHandle.GetData("TransactionLevel") == 2 &&
                     e.Character == Seller &&
                     (e.ChatMessageType == ChatMessageType.Normal || e.ChatMessageType == ChatMessageType.Quiet || e.ChatMessageType == ChatMessageType.Loud) &&
                     (Messages.YesMessagesList.Any(e.Message.Contains) || e.Message.Contains(MoneyCount.ToString(CultureInfo.InvariantCulture)) || LowerMoneyCounts.Any(Convert.ToDecimal(e.Message).Equals)))
            {
                //Jeśli gracz zgodzi się na cenę bota
                //Sprawdzamy czy gracz posiada dany narkotyk
                if (Seller.DbModel.Items.Any(i => i.ItemEntityType == ItemEntityType.Drug && i.FirstParameter == (int)DrugType))
                {
                    if (!e.Message.All(char.IsDigit))
                    {
                        EndTransaction(MoneyCount);
                    }
                    else
                    {
                        EndTransaction(LowerMoneyCounts.Any(Convert.ToDecimal(e.Message).Equals) ? LowerMoneyCounts.First(Convert.ToDecimal(e.Message).Equals) : MoneyCount);
                    }
                }
                //Jeśli gracz nie ma narkotyku po negocjacji
                else
                {
                    SendFailMessage();
                }
                GoAllPoints(true);
            }
            else
            {
                SendMessageToNerbyPlayers(BadFarewell, ChatMessageType.Normal);
                GoAllPoints(true);
            }
        }