コード例 #1
0
        public async Task <IActionResult> ClearMobs(string needDifferentSignature)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            var      lastRequest = _userRepository.GetLastUtilityRequestByType(UtilityRequestType.ClearMobs, user.Id);
            DateTime?lastUsed    = lastRequest?.RequestTime;

            if (lastUsed == null || lastUsed.Value.AddSeconds(SystemConstants.CLEAR_MOBS_COOLDOWN) < DateTime.UtcNow)
            {
                if (user.GamerTag != null)
                {
                    var newRequest = new UtilityRequest {
                        RequestTime = DateTime.UtcNow, UserId = user.Id, UtilityRequestType = UtilityRequestType.ClearMobs
                    };
                    _userRepository.SaveUtilityRequestAsync(newRequest);
                    lastUsed = DateTime.UtcNow;

                    foreach (var mob in _applicationSettings.MobsToClear)
                    {
                        var command = $"execute {user.GamerTag} ~ ~ ~ kill @e[r=65, type={mob}, name=!KEEPME]";
                        _wrapper.SendInput(command, null);

                        // These guys area special because they need to be killed several times, and it takes some time before the smaller ones spawn.
                        if (mob == "slime" || mob == "magma_cube")
                        {
                            Thread.Sleep(1000);
                        }
                    }

                    ViewBag.Status = "Request processed.";
                }
                else
                {
                    if (string.IsNullOrEmpty(user.GamerTag))
                    {
                        ViewBag.Status = SystemConstants.NO_GAMERTAG_ERROR;
                    }
                }
            }

            return(View(lastUsed));
        }
コード例 #2
0
 public async void SaveUtilityRequestAsync(UtilityRequest newRequest)
 {
     _context.UtilityRequest.Add(newRequest);
     await _context.SaveChangesAsync();
 }