TransWikia.com

C# Почему Time.Span выводит 1,33333333Е-06 в string? Или как вывести TotalMinutes?

Stack Overflow на русском Asked by karakym on November 25, 2021

есть определенное событие после которого я записываю дату DateTime.Now в переменную StartTime и запускаю таймер. Теперь когда таймер тикает, нужно по событию выводить остаток времени таймера. Делаю я это так: "...ждать еще: "+(DateTime.Now - StartTime).TotalMinutes+" минут");в следствии чего хоть в консоль хоть на вывод в string мне выдает такой результат: ждать еще: 4.18333333333333E-06 минут
Вопрос: как вывести правильно???? Я пробовал convert.toint32 а так же просто подставлять (int), все это выводит 0, почему, что я делаю не так?

using System.Collections.Generic;
using System;
using System.Reflection;
using System.Data;
using UnityEngine;
using Oxide.Core;
using RustExtended;
using Oxide.Core.Plugins;
using RustProto;
//using System.Linq;

namespace Oxide.Plugins
{
    [Info("CallAirDrop", "XBOCT", "2.0.1")]
    [Description("Вызов дропа игроками за валюту")]
    class CallAirDrop : RustLegacyPlugin
    {
        Vector3 cachedPos;
        string chatName = "MegaPUB";//Врефикс в чате
        float timeForCD = 3600f;//Время перезарядки вызова самолета в секундах
        bool airCooldown = false;//По умолчанию перезарядки нет

        static string calledAirdrop = "Самолёт уже летит";
        static string airdropPlayer = "Дроп упадет возле [color red]{1}";
        static string wrongarguments = "Что то не правильно написал, или такого игрока нет";

        void LoadDefaultConfig() { }

        private void CheckCfg<T>(string Key, ref T var)
        {
            if (Config[Key] is T)
                var = (T)Config[Key];
            else
                Config[Key] = var;
        }

        void Init()
        {
            CheckCfg<string>("Сообщение: Вызво дропа случайно на карте", ref calledAirdrop);
            CheckCfg<string>("Сообщение: Вызов дропа себе", ref airdropPlayer);
            CheckCfg<string>("Сообщение: Wrong Arguments", ref wrongarguments);
            SaveConfig();
        }

        [ChatCommand("air")] //Команда вызова
        void cmdChatBan(NetUser netuser, string command, string[] args)
        {
            ulong money = RustExtended.Economy.GetBalance(netuser.userID);

            // Меню информации
            if(args.Length == 0) {
                rust.SendChatMessage(netuser, chatName, "[COLOR#00BFFF]Вызов [COLOR#d9ae04]Самолета с лутом[COLOR#00BFFF]:");
                rust.SendChatMessage(netuser, chatName, "➩[COLOR#00BFFF]/air map Случайное место - [COLOR#FFFFFF]Цена: 50 000 Р");
                rust.SendChatMessage(netuser, chatName, "➩[COLOR#00BFFF]/air me Вызвать себе - [COLOR#FFFFFF]Цена: 100 000 Р");
                rust.SendChatMessage(netuser, chatName, "➩[COLOR#00BFFF]/air [COLOR#FFFFFF][ник] [COLOR#00BFFF]Вызвать игроку - [COLOR#FFFFFF]Цена: 175 000 Р");
                return;
            }
            //Проверяем вызов на перезарядку
            if (airCooldown)
            {
                DateTime StartTime = DateTime.Now;
                timer.Once(timeForCD, () =>
                {
                    airCooldown = false;
                    Puts("Можно снова вызвать дроп.");
                });
                TimeSpan TimerTotal = TimeSpan.FromSeconds(timeForCD);
                TimeSpan TimerPassed = DateTime.Now.Subtract(StartTime);
                TimeSpan result = TimerTotal - TimerPassed;
                rust.SendChatMessage(netuser, "[COLOR#00BFFF]Снабжение не готово, ожидайте еще: [COLOR#d9ae04]"+(int)result.TotalMinutes+" минут");
                Puts(netuser + "Попытался вызвать дроп. Но вызов на перезарядке, ждать еще: "+result.TotalMinutes+" минут");
                return;
            }
            else
            {
                // Случайную точку
                if (args.Length == 1 && args[0].ToString() == "map")
                {
                    if (money < 50000)
                    {
                        ulong ost = 50000 - money;
                        rust.SendChatMessage(netuser, "[COLOR#00BFFF]Вам не хватает: [COLOR#d9ae04]" + ost + "[COLOR#00BFFF]. У вас: [COLOR#17c90e]" + money);
                        Puts(netuser + "Попытался вызвать случайный дроп. Не хватает: " + ost + ". Денег всего: " + money);
                        return;
                    } else {
                        RustExtended.Economy.BalanceSub(netuser.userID, 50000);
                        SendReply(netuser, calledAirdrop); SupplyDropZone.CallAirDrop();
                        airCooldown = true;
                        Puts(netuser + "Вызвал дроп в случайную точку. Денег осталось: " +money);
                        return;
                    }
                }

                // Вызвать себе
                if (args.Length == 1 && args[0].ToString() == "me")
                {
                    if (money < 100000)
                    {
                        ulong ost = 100000 - money;
                        rust.SendChatMessage(netuser, "[COLOR#00BFFF]Вам не хватает: [COLOR#d9ae04]" + ost + "[COLOR#00BFFF]. У вас: [COLOR#17c90e]" + money);
                        Puts(netuser + "Попытался вызвать дроп себе. Не хватает: " + ost + ". Денег всего: " + money);
                        return;
                    } else {
                        RustExtended.Economy.BalanceSub(netuser.userID, 100000);
                        cachedPos = netuser.playerClient.lastKnownPosition;
                        if(cachedPos != default(Vector3))
                        {
                            //SupplyDropZone.CallAirDropAt(cachedPos);
                            SendReply(netuser, string.Format(airdropPlayer, cachedPos.ToString(), netuser.playerClient.userName.ToString()));
                            airCooldown = true;
                            Puts(netuser + "Вызвал себе дроп. Денег осталось: " +money);
                            return;
                        }
                    }
                }

                // Вызвать игроку
                if (money < 175000)
                {
                    ulong ost = 175000 - money;
                    rust.SendChatMessage(netuser, "[COLOR#00BFFF]Вам не хватает: [COLOR#d9ae04]" + ost + "[COLOR#00BFFF]. У вас: [COLOR#17c90e]" + money);
                    Puts(netuser + "Попытался вызвать дроп себе. Не хватает: " + ost + ". Денег всего: " + money);
                    return;
                } else {
                    RustExtended.Economy.BalanceSub(netuser.userID, 175000);
                    NetUser targetuser = rust.FindPlayer(args[0]);
                    if (targetuser != null)
                    {
                        cachedPos = targetuser.playerClient.lastKnownPosition;
                        if(cachedPos != default(Vector3))
                        {
                            SupplyDropZone.CallAirDropAt(cachedPos);
                            SendReply(netuser, string.Format(airdropPlayer, cachedPos.ToString(), targetuser.playerClient.userName.ToString()));
                            airCooldown = true;
                            Puts(netuser + "Вызвал дроп для " + targetuser + ". Денег осталось: " +money);
                            return;
                        }
                    } else {
                        SendReply(netuser, wrongarguments);
                        return;
                    }
                }
            }
        }
    }
}

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP