【发布时间】:2015-11-03 00:19:10
【问题描述】:
我在游戏中有这个命令,所以在这里
internal class GambleCommand : Command
{
public GambleCommand() : base("roll", 3)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
try
{
if (args.Length == 1)
{
int num = int.Parse(args[0]);
Random rnd = new Random();
string pl = player.Name;
string rand = rnd.Next(0, num).ToString();
if (num < 0)
{
rand = rnd.Next(num, 0).ToString();
}
foreach (Client i in player.Manager.Clients.Values)
{
i.SendPacket(new TextPacket
{
BubbleTime = 0,
Stars = -1,
Name = pl,
Text = "rolled a " + rand + " out of " + num + "."
});
}
}
}
catch
{
Random rnd = new Random();
string pl = player.Name;
string rand = rnd.Next(0, 100).ToString();
foreach (Client i in player.Manager.Clients.Values)
{
i.SendPacket(new TextPacket
{
BubbleTime = 0,
Stars = -1,
Name = pl,
Text = "rolled a " + rand
});
}
}
return true;
}
}
这里的一切都很好,除了说的部分
if (num < 0)
{
rand = rnd.Next(num, 0).ToString();
}
如果您选择的数字是负数,基本上这应该做的是将位置从 (0, num) num (最大数字)更改为 (num, 0)。截至目前,当我输入否定时,它会变为默认 0-100,即 catch 语句。
【问题讨论】:
-
args[0] 确定是一个数字吗?
-
字符串 rand = rnd.Next(0, num).ToString();如果 num 为负数怎么办?你必须先检查一下。
标签: c# string if-statement