我创造了一个简单的累积奖金游戏。我完成了游戏,但我目前的问题是每天补充硬币。我每天给10个硬币,更新时间应该是早上9点。问题是我不知道何时存储firstPlayedDate它。这是我到目前为止所尝试的。
public DateTime firstPlayedDate
{
get
{
CoinTracker firstPlayedEntry = _db.CoinTrackers.Where(u => u.FbId == fbId).OrderByDescending(u => u.CoinTimer).FirstOrDefault();
return firstPlayedEntry == null ? new DateTime() : firstPlayedEntry.CoinTimer;
}
}
public int AvailableDailyCoins
{
get
{
return (DateTime.UtcNow.Date - firstPlayedDate.Date).Days > 0 ? 10 : 0;
}
}
我想到的一种方式是,每当玩家有10个硬币时,我会存储第一个玩家日期。还有其他想法吗?
答案 0 :(得分:2)
如果这是您的想法,我不会根据客户端运行的计时器给出硬币。这将允许最基本的作弊。任何人都可以修改浏览器中运行的代码,使用像fiddler这样的工具给自己奖励。
相反,我会将lastActiveTimestamp存储在服务器上的用户配置文件中,并使用cron作业迭代在给定时间根据需要授予硬币的用户列表,或者,我更愿意,实际上甚至不在上午9点给予奖励 - 只需通过读取lastActiveTimestamp并从Datetime.Now()计算时间跨度来计算他们的账户下次有效时的奖励。
希望这是有道理的。