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); }
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); }
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); } }