public static void ChangeTracked(int taskid, bool tracked) { lock (killUpdate) { if (!trackedTasks.ContainsKey(taskid)) { LootDatabaseManager.ExecuteNonQuery(String.Format("INSERT INTO TrackedTasks (taskid, tracked, kills) VALUES ({0},{1},{2});", taskid, tracked ? 1 : 0, 0)); trackedTasks.Add(taskid, tracked); taskKills.Add(taskid, 0); } else { LootDatabaseManager.ExecuteNonQuery(String.Format("UPDATE TrackedTasks SET tracked={0} WHERE taskid={1}", tracked ? 1 : 0, taskid)); trackedTasks[taskid] = tracked; } if (tracked) { if (TrackTask != null) { TrackTask(StorageManager.getTask(taskid)); } } else { if (UntrackTask != null) { UntrackTask(StorageManager.getTask(taskid)); } } } }
public static void ChangeKillCount(int taskid, int value) { lock (killUpdate) { if (!taskKills.ContainsKey(taskid)) { LootDatabaseManager.ExecuteNonQuery(String.Format("INSERT INTO TrackedTasks (taskid, tracked, kills) VALUES ({0},{1},{2});", taskid, 0, value)); trackedTasks.Add(taskid, false); taskKills.Add(taskid, value); } else { LootDatabaseManager.ExecuteNonQuery(String.Format("UPDATE TrackedTasks SET kills={0} WHERE taskid={1}", value, taskid)); taskKills[taskid] = value; if (TaskUpdated != null) { TaskUpdated(StorageManager.getTask(taskid), value); } } } }
private static void UpdateTaskKills(Creature creature) { lock (killUpdate) { foreach (var kvp in trackedTasks) { if (kvp.Value) { Task task = StorageManager.getTask(kvp.Key); if (task.creatures.Contains(creature.id)) { int newKills = taskKills[kvp.Key] + 1; LootDatabaseManager.ExecuteNonQuery(String.Format("UPDATE TrackedTasks SET kills={0} WHERE taskid={1}", newKills, kvp.Key)); taskKills[kvp.Key] = newKills; if (TaskUpdated != null) { TaskUpdated(task, newKills); } } } } } }