DisableTask converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-10-08 13:17:03 -07:00
parent 2c275f603a
commit 5f11e91da2

View File

@ -728,28 +728,31 @@ void ClientTaskState::EnableTask(int characterID, int taskCount, int *tasks) {
} }
void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) { void ClientTaskState::DisableTask(int charID, int taskCount, int *taskList) {
// Check if the Task is enabled for this client // Check if the Task is enabled for this client
// //
std::vector<int> TasksDisabled; std::vector<int> tasksDisabled;
std::vector<int>::iterator Iterator;
for(int i=0; i<TaskCount; i++) { for(int i=0; i<taskCount; i++) {
Iterator = EnabledTasks.begin(); auto iterator = EnabledTasks.begin();
bool RemoveTask = false; bool removeTask = false;
while(Iterator != EnabledTasks.end()) { while(iterator != EnabledTasks.end()) {
if((*Iterator) == TaskList[i]) { if((*iterator) == taskList[i]) {
RemoveTask = true; removeTask = true;
break; break;
} }
if((*Iterator) > TaskList[i]) break;
++Iterator; if((*iterator) > taskList[i])
break;
++iterator;
} }
if(RemoveTask) {
EnabledTasks.erase(Iterator); if(removeTask) {
TasksDisabled.push_back(TaskList[i]); EnabledTasks.erase(iterator);
tasksDisabled.push_back(taskList[i]);
} }
} }
@ -757,40 +760,20 @@ void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) {
for(unsigned int i=0; i<EnabledTasks.size(); i++) for(unsigned int i=0; i<EnabledTasks.size(); i++)
_log(TASKS__UPDATE, "%i ", EnabledTasks[i]); _log(TASKS__UPDATE, "%i ", EnabledTasks[i]);
if(TasksDisabled.size() == 0) return; if(tasksDisabled.size() == 0)
return;
std::string TaskQuery="DELETE FROM character_enabledtasks WHERE "; std::stringstream queryStream(StringFormat("DELETE FROM character_enabledtasks WHERE charid = %i AND (", charID));
const char *ERR_MYSQLERROR = "[TASKS]Error in ClientTaskState::DisableTask %s %s"; for(unsigned int i=0; i<tasksDisabled.size(); i++)
queryStream << i ? StringFormat("taskid = %i ", tasksDisabled[i]): StringFormat("OR taskid = %i ", tasksDisabled[i]);
char errbuf[MYSQL_ERRMSG_SIZE]; queryStream << ")";
char* query = 0; std::string query = queryStream.str();
_log(TASKS__UPDATE, "Executing query %s", query.c_str());
char *buf = 0; auto results = database.QueryDatabase(query);
if(!results.Success())
MakeAnyLenString(&buf, "charid=%i AND (", CharID); LogFile->write(EQEMuLog::Error, "[TASKS]Error in ClientTaskState::DisableTask %s %s", query.c_str(), results.ErrorMessage().c_str());
TaskQuery += buf;
safe_delete_array(buf);
for(unsigned int i=0; i<TasksDisabled.size(); i++) {
if(i==0)
MakeAnyLenString(&buf, "taskid=%i", TasksDisabled[i]);
else
MakeAnyLenString(&buf, " OR taskid=%i", TasksDisabled[i]);
TaskQuery += buf;
safe_delete_array(buf);
}
TaskQuery = TaskQuery + ")";
_log(TASKS__UPDATE, "Executing query %s", TaskQuery.c_str());
if(!database.RunQuery(query,MakeAnyLenString(&query, TaskQuery.c_str()), errbuf)) {
LogFile->write(EQEMuLog::Error, ERR_MYSQLERROR, query, errbuf);
}
safe_delete_array(query);
} }
bool ClientTaskState::IsTaskEnabled(int TaskID) { bool ClientTaskState::IsTaskEnabled(int TaskID) {