Для исправления ошибки "Input string was not in a correct format" при попытке преобразования строки в число, вам нужно убедиться, что значение, которое вы пытаетесь преобразовать в число, действительно является числом. В вашем случае, проблема, скорее всего, связана с получением значения времени в неверном формате.Исправь
Failed to run a 60.00 timer in 'AlwaysDay v1.0.0' (FormatException: Input string was not in a correct format.)
at System.Number.ParseSingle (System.String value, System.Globalization.NumberStyles options, System.Globalization.NumberFormatInfo numfmt) [0x00083] in <fb001e01371b4adca20013e0ac763896>:0
at System.Single.Parse (System.String s, System.Globalization.NumberStyles style, System.Globalization.NumberFormatInfo info) [0x00000] in <fb001e01371b4adca20013e0ac763896>:0
at System.Single.Parse (System.String s, System.IFormatProvider provider) [0x0000c] in <fb001e01371b4adca20013e0ac763896>:0
at System.Convert.ToSingle (System.String value) [0x0000f] in <fb001e01371b4adca20013e0ac763896>:0
at Oxide.Plugins.AlwaysDay.<OnServerInitialized>m__0 () [0x00015] in <fd2d3199c849438ca2b504561de82651>:0
at Oxide.Core.Libraries.Timer+TimerInstance.FireCallback () [0x0001b] in <8c0d4f6787e84665bc443d615e4c143b>:0
Попробуйте обновить ваш код следующим образом, чтобы убедиться, что значение времени корректно преобразуется в число:
C#:
using System;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("AlwaysDay", "YourName", "1.0.0")]
class AlwaysDay : RustPlugin
{
private Timer timeChangeTimer;
private void OnServerInitialized()
{
ConsoleSystem.Run(ConsoleSystem.Option.Server, "env.time", 12); // Устанавливаем время суток на полдень
timeChangeTimer = timer.Every(60f, () =>
{
float currentTime;
if (float.TryParse(ConsoleSystem.Run(ConsoleSystem.Option.Server, "env.time"), out currentTime))
{
if (currentTime >= 19f) // Если время достигло 19:00
{
ConsoleSystem.Run(ConsoleSystem.Option.Server, "env.time", 10); // Меняем время на 10:00
Puts("Время суток сменилось на 10:00"); // Выводим сообщение о смене времени
}
}
else
{
Puts("Ошибка при преобразовании времени в число.");
}
});
}
private void Unload()
{
timeChangeTimer.Destroy(); // Уничтожаем таймер при выгрузке плагина
}
}
}
Этот обновленный код использует
float.TryParse
для безопасного преобразования строки времени в число. Пожалуйста, попробуйте использовать этот код и проверьте, решает ли он проблему с ошибкой формата строки.Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться. Готов помочь!