根据时间更新值

时间:2013-09-09 04:09:13

标签: c# jquery asp.net

我创造了一个简单的累积奖金游戏。我完成了游戏,但我目前的问题是每天补充硬币。我每天给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个硬币时,我会存储第一个玩家日期。还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

如果这是您的想法,我不会根据客户端运行的计时器给出硬币。这将允许最基本的作弊。任何人都可以修改浏览器中运行的代码,使用像fiddler这样的工具给自己奖励。

相反,我会将lastActiveTimestamp存储在服务器上的用户配置文件中,并使用cron作业迭代在给定时间根据需要授予硬币的用户列表,或者,我更愿意,实际上甚至不在上午9点给予奖励 - 只需通过读取lastActiveTimestamp并从Datetime.Now()计算时间跨度来计算他们的账户下次有效时的奖励。

希望这是有道理的。