Bunch more functions

This commit is contained in:
Michael Cook (mackal) 2018-07-08 16:55:08 -04:00
parent b59a41829b
commit 9b229779db

View File

@ -2480,10 +2480,10 @@ void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) {
if(CompletedTasks[AdjustedTaskIndex].ActivityDone[i]) { if(CompletedTasks[AdjustedTaskIndex].ActivityDone[i]) {
CompletedActivityCount++; CompletedActivityCount++;
PacketLength = PacketLength + sizeof(TaskHistoryReplyData1_Struct) + PacketLength = PacketLength + sizeof(TaskHistoryReplyData1_Struct) +
Task->Activity[i].Text1.size() + 1 + Task->Activity[i].target_name.size() + 1 +
Task->Activity[i].Text2.size() + 1 + Task->Activity[i].item_list.size() + 1 +
sizeof(TaskHistoryReplyData2_Struct) + sizeof(TaskHistoryReplyData2_Struct) +
Task->Activity[i].Text3.size() + 1; Task->Activity[i].desc_override.size() + 1;
} }
} }
@ -2503,8 +2503,8 @@ void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) {
thd1 = (TaskHistoryReplyData1_Struct*)Ptr; thd1 = (TaskHistoryReplyData1_Struct*)Ptr;
thd1->ActivityType = Task->Activity[i].Type; thd1->ActivityType = Task->Activity[i].Type;
Ptr = (char *)thd1 + sizeof(TaskHistoryReplyData1_Struct); Ptr = (char *)thd1 + sizeof(TaskHistoryReplyData1_Struct);
VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].Text1.c_str()); VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].target_name.c_str());
VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].Text2.c_str()); VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].item_list.c_str());
thd2 = (TaskHistoryReplyData2_Struct*)Ptr; thd2 = (TaskHistoryReplyData2_Struct*)Ptr;
thd2->GoalCount = Task->Activity[i].GoalCount; thd2->GoalCount = Task->Activity[i].GoalCount;
thd2->unknown04 = 0xffffffff; thd2->unknown04 = 0xffffffff;
@ -2512,7 +2512,7 @@ void ClientTaskState::SendTaskHistory(Client *c, int TaskIndex) {
thd2->ZoneID = Task->Activity[i].ZoneID; thd2->ZoneID = Task->Activity[i].ZoneID;
thd2->unknown16 = 0x00000000; thd2->unknown16 = 0x00000000;
Ptr = (char *)thd2 + sizeof(TaskHistoryReplyData2_Struct); Ptr = (char *)thd2 + sizeof(TaskHistoryReplyData2_Struct);
VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].Text3.c_str()); VARSTRUCT_ENCODE_STRING(Ptr, Task->Activity[i].desc_override.c_str());
} }
} }
@ -2799,34 +2799,35 @@ void TaskManager::SendActiveTasksToClient(Client *c, bool TaskComplete)
if (!state) if (!state)
return; return;
for (int TaskIndex=0; TaskIndex<MAXACTIVEQUESTS; TaskIndex++) { for (int TaskIndex = 0; TaskIndex < MAXACTIVEQUESTS + 1; TaskIndex++) {
int TaskID = c->GetActiveTaskID(TaskIndex); int TaskID = state->ActiveTasks[TaskIndex].TaskID;
if((TaskID==0) || (Tasks[TaskID] ==0)) continue; if ((TaskID == 0) || (Tasks[TaskID] == 0))
int StartTime = c->GetTaskStartTime(Tasks[TaskID]->type, TaskIndex); continue;
int StartTime = state->ActiveTasks[TaskIndex].AcceptedTime;
SendActiveTaskDescription(c, TaskID, state->ActiveQuests[TaskIndex], StartTime, Tasks[TaskID]->Duration, false); SendActiveTaskDescription(c, TaskID, state->ActiveTasks[TaskIndex], StartTime, Tasks[TaskID]->Duration,
Log(Logs::General, Logs::Tasks, "[UPDATE] SendActiveTasksToClient: Task %i, Activities: %i", TaskID, GetActivityCount(TaskID)); false);
Log(Logs::General, Logs::Tasks, "[UPDATE] SendActiveTasksToClient: Task %i, Activities: %i", TaskID,
GetActivityCount(TaskID));
int Sequence = 0; int Sequence = 0;
for(int Activity=0; Activity<GetActivityCount(TaskID); Activity++) { for (int Activity = 0; Activity < GetActivityCount(TaskID); Activity++) {
if(c->GetTaskActivityState(Tasks[TaskID]->type, TaskIndex, Activity) != ActivityHidden) { if (c->GetTaskActivityState(Tasks[TaskID]->type, TaskIndex, Activity) != ActivityHidden) {
Log(Logs::General, Logs::Tasks, "[UPDATE] Long: %i, %i, %i Complete=%i", TaskID, Activity, TaskIndex, TaskComplete); Log(Logs::General, Logs::Tasks, "[UPDATE] Long: %i, %i, %i Complete=%i", TaskID,
if(Activity==GetActivityCount(TaskID)-1) Activity, TaskIndex, TaskComplete);
if (Activity == GetActivityCount(TaskID) - 1)
SendTaskActivityLong(c, TaskID, Activity, TaskIndex, SendTaskActivityLong(c, TaskID, Activity, TaskIndex,
Tasks[TaskID]->Activity[Activity].Optional, Tasks[TaskID]->Activity[Activity].Optional, TaskComplete);
TaskComplete);
else else
SendTaskActivityLong(c, TaskID, Activity, TaskIndex, SendTaskActivityLong(c, TaskID, Activity, TaskIndex,
Tasks[TaskID]->Activity[Activity].Optional, 0); Tasks[TaskID]->Activity[Activity].Optional, 0);
} } else {
else { Log(Logs::General, Logs::Tasks, "[UPDATE] Short: %i, %i, %i", TaskID, Activity,
Log(Logs::General, Logs::Tasks, "[UPDATE] Short: %i, %i, %i", TaskID, Activity, TaskIndex); TaskIndex);
SendTaskActivityShort(c, TaskID, Activity, TaskIndex); SendTaskActivityShort(c, TaskID, Activity, TaskIndex);
} }
Sequence++; Sequence++;
} }
} }
} }
@ -3087,22 +3088,39 @@ void ClientTaskState::CancelTask(Client *c, int SequenceNumber, TaskType type, b
void ClientTaskState::RemoveTask(Client *c, int sequenceNumber, TaskType type) void ClientTaskState::RemoveTask(Client *c, int sequenceNumber, TaskType type)
{ {
int characterID = c->CharacterID(); int characterID = c->CharacterID();
Log(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState Cancel Task %i ", sequenceNumber); Log(Logs::General, Logs::Tasks, "[UPDATE] ClientTaskState Cancel Task %i ", sequenceNumber);
std::string query = StringFormat("DELETE FROM character_activities WHERE charid=%i AND taskid = %i", int task_id = -1;
characterID, ActiveQuests[sequenceNumber].TaskID); switch (type) {
auto results = database.QueryDatabase(query); case TaskType::Task:
if(!results.Success()) { if (sequenceNumber == 0)
Log(Logs::General, Logs::Error, "[TASKS] Error in CientTaskState::CancelTask %s", results.ErrorMessage().c_str()); task_id = ActiveTask.TaskID;
break;
case TaskType::Quest:
if (sequenceNumber < MAXACTIVEQUESTS)
task_id = ActiveQuests[sequenceNumber].TaskID;
break;
case TaskType::Shared: // TODO:
default:
break;
}
std::string query = StringFormat("DELETE FROM character_activities WHERE charid=%i AND taskid = %i",
characterID, task_id);
auto results = database.QueryDatabase(query);
if (!results.Success()) {
Log(Logs::General, Logs::Error, "[TASKS] Error in CientTaskState::CancelTask %s",
results.ErrorMessage().c_str());
return; return;
} }
Log(Logs::General, Logs::Tasks, "[UPDATE] CancelTask: %s", query.c_str()); Log(Logs::General, Logs::Tasks, "[UPDATE] CancelTask: %s", query.c_str());
query = StringFormat("DELETE FROM character_tasks WHERE charid=%i AND taskid = %i AND type=%i", query = StringFormat("DELETE FROM character_tasks WHERE charid=%i AND taskid = %i AND type=%i", characterID,
characterID, ActiveQuests[sequenceNumber].TaskID, static_cast<int>(type)); task_id, static_cast<int>(type));
results = database.QueryDatabase(query); results = database.QueryDatabase(query);
if(!results.Success()) if (!results.Success())
Log(Logs::General, Logs::Error, "[TASKS] Error in CientTaskState::CancelTask %s", results.ErrorMessage().c_str()); Log(Logs::General, Logs::Error, "[TASKS] Error in CientTaskState::CancelTask %s",
results.ErrorMessage().c_str());
Log(Logs::General, Logs::Tasks, "[UPDATE] CancelTask: %s", query.c_str()); Log(Logs::General, Logs::Tasks, "[UPDATE] CancelTask: %s", query.c_str());
@ -3121,7 +3139,6 @@ void ClientTaskState::RemoveTask(Client *c, int sequenceNumber, TaskType type)
} }
} }
void ClientTaskState::AcceptNewTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement) void ClientTaskState::AcceptNewTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement)
{ {
if (!taskmanager || TaskID < 0 || TaskID >= MAXTASKS) { if (!taskmanager || TaskID < 0 || TaskID >= MAXTASKS) {