mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 10:31:29 +00:00
EnableTask converted to QueryDatabase
This commit is contained in:
parent
ad921d01d8
commit
2c275f603a
@ -679,32 +679,33 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientTaskState::EnableTask(int CharID, int TaskCount, int *TaskList) {
|
void ClientTaskState::EnableTask(int characterID, int taskCount, int *tasks) {
|
||||||
|
|
||||||
// Check if the Task is already enabled for this client
|
// Check if the Task is already enabled for this client
|
||||||
//
|
//
|
||||||
std::vector<int> TasksEnabled;
|
std::vector<int> tasksEnabled;
|
||||||
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 AddTask = true;
|
bool addTask = true;
|
||||||
|
|
||||||
while(Iterator != EnabledTasks.end()) {
|
while(iterator != EnabledTasks.end()) {
|
||||||
// If this task is already enabled, stop looking
|
// If this task is already enabled, stop looking
|
||||||
if((*Iterator) == TaskList[i]) {
|
if((*iterator) == tasks[i]) {
|
||||||
AddTask = false;
|
addTask = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Our list of enabled tasks is sorted, so we can quit if we find a taskid higher than
|
// Our list of enabled tasks is sorted, so we can quit if we find a taskid higher than
|
||||||
// the one we are looking for.
|
// the one we are looking for.
|
||||||
if((*Iterator) > TaskList[i]) break;
|
if((*iterator) > tasks[i])
|
||||||
++Iterator;
|
break;
|
||||||
|
++iterator;
|
||||||
}
|
}
|
||||||
if(AddTask) {
|
|
||||||
EnabledTasks.insert(Iterator, TaskList[i]);
|
if(addTask) {
|
||||||
|
EnabledTasks.insert(iterator, tasks[i]);
|
||||||
// Make a note of the task we enabled, for later SQL generation
|
// Make a note of the task we enabled, for later SQL generation
|
||||||
TasksEnabled.push_back(TaskList[i]);
|
tasksEnabled.push_back(tasks[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,35 +713,19 @@ void ClientTaskState::EnableTask(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(TasksEnabled.size() == 0 ) return;
|
if(tasksEnabled.size() == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
std::string TaskQuery="REPLACE INTO character_enabledtasks (charid, taskid) VALUES ";
|
std::stringstream queryStream("REPLACE INTO character_enabledtasks (charid, taskid) VALUES ");
|
||||||
|
for(unsigned int i=0; i<tasksEnabled.size(); i++)
|
||||||
|
queryStream << ( i ? ", " : "" ) << StringFormat("(%i, %i)", characterID, tasksEnabled[i]);
|
||||||
|
|
||||||
const char *ERR_MYSQLERROR = "[TASKS]Error in ClientTaskState::EnableTask %s %s";
|
std::string query = queryStream.str();
|
||||||
|
_log(TASKS__UPDATE, "Executing query %s", query.c_str());
|
||||||
|
auto results = database.QueryDatabase(query);
|
||||||
|
if(!results.Success())
|
||||||
|
LogFile->write(EQEMuLog::Error, "[TASKS]Error in ClientTaskState::EnableTask %s %s", query.c_str(), results.ErrorMessage().c_str());
|
||||||
|
|
||||||
char errbuf[MYSQL_ERRMSG_SIZE];
|
|
||||||
char* query = 0;
|
|
||||||
|
|
||||||
char *buf = 0;
|
|
||||||
|
|
||||||
for(unsigned int i=0; i<TasksEnabled.size(); i++) {
|
|
||||||
if(i==0)
|
|
||||||
MakeAnyLenString(&buf, "(%i, %i)", CharID, TasksEnabled[i]);
|
|
||||||
else
|
|
||||||
MakeAnyLenString(&buf, ",(%i, %i)", CharID, TasksEnabled[i]);
|
|
||||||
|
|
||||||
TaskQuery += buf;
|
|
||||||
safe_delete_array(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
_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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) {
|
void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user