mirror of
https://github.com/EQEmu/Server.git
synced 2026-02-16 12:52:25 +00:00
Rework accepted_time for shared_tasks
This commit is contained in:
parent
32e04cd264
commit
b972ec581f
@ -159,6 +159,7 @@ void SharedTaskManager::HandleTaskRequest(ServerPacket *pack)
|
||||
buf.WriteInt32(id); // shared task's ID
|
||||
buf.WriteInt32(task_id); // ID of the task's data
|
||||
buf.WriteInt32(npc_id); // NPC we're requesting from
|
||||
buf.WriteInt32(task.GetAcceptedTime()); // time we accepted it
|
||||
buf.WriteString(leader_name); // leader's name
|
||||
task.SerializeMembers(buf, false); // everyone but leader
|
||||
|
||||
@ -548,3 +549,7 @@ void SharedTask::InitActivities()
|
||||
}
|
||||
}
|
||||
|
||||
bool SharedTask::UnlockActivities()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -20,8 +20,8 @@ struct SharedTaskMember {
|
||||
|
||||
class SharedTask {
|
||||
public:
|
||||
SharedTask() : id(0), task_id(0), accepted_time(0), locked(false) {}
|
||||
SharedTask(int id, int task_id) : id(id), task_id(task_id), accepted_time(0), locked(false) {}
|
||||
SharedTask() : id(0), task_id(0), locked(false) {}
|
||||
SharedTask(int id, int task_id) : id(id), task_id(task_id), locked(false) {}
|
||||
~SharedTask() {}
|
||||
|
||||
void AddMember(std::string name, ClientListEntry *cle = nullptr, bool leader = false)
|
||||
@ -43,17 +43,19 @@ public:
|
||||
void SerializeMembers(SerializeBuffer &buf, bool include_leader = true) const;
|
||||
void SetCLESharedTasks();
|
||||
void InitActivities();
|
||||
bool UnlockActivities();
|
||||
|
||||
void Save() const; // save to database
|
||||
|
||||
private:
|
||||
inline void SetID(int in) { id = in; }
|
||||
inline void SetTaskID(int in) { task_id = in; }
|
||||
inline void SetAcceptedTime(int in) { accepted_time = in; }
|
||||
inline void SetAcceptedTime(int in) { task_state.AcceptedTime = in; }
|
||||
inline void SetLocked(bool in) { locked = in; }
|
||||
|
||||
inline int GetAcceptedTime() const { return task_state.AcceptedTime; }
|
||||
int id; // id we have in our map
|
||||
int task_id; // ID of the task we're on
|
||||
int accepted_time; // timestamp of when accepted, initially set by zone
|
||||
bool locked;
|
||||
std::string leader_name;
|
||||
std::vector<SharedTaskMember> members;
|
||||
|
||||
@ -1026,7 +1026,7 @@ public:
|
||||
inline bool IsTaskEnabled(int TaskID) { return (taskstate ? taskstate->IsTaskEnabled(TaskID) : false); }
|
||||
inline void ProcessTaskProximities(float X, float Y, float Z) { if(taskstate) taskstate->ProcessTaskProximities(this, X, Y, Z); }
|
||||
inline void AssignTask(int TaskID, int NPCID, bool enforce_level_requirement = false) { if (taskstate) taskstate->AcceptNewTask(this, TaskID, NPCID, enforce_level_requirement); }
|
||||
inline void AssignSharedTask(int TaskID, int NPCID, int id, std::vector<std::string> &members) { if (taskstate) taskstate->AcceptNewSharedTask(this, TaskID, NPCID, id, members); }
|
||||
inline void AssignSharedTask(int TaskID, int NPCID, int id, int accepted_time, std::vector<std::string> &members) { if (taskstate) taskstate->AcceptNewSharedTask(this, TaskID, NPCID, id, accepted_time, members); }
|
||||
inline int ActiveSpeakTask(int NPCID) { if(taskstate) return taskstate->ActiveSpeakTask(NPCID); else return 0; }
|
||||
inline int ActiveSpeakActivity(int NPCID, int TaskID) { if(taskstate) return taskstate->ActiveSpeakActivity(NPCID, TaskID); else return 0; }
|
||||
inline void FailTask(int TaskID) { if(taskstate) taskstate->FailTask(this, TaskID); }
|
||||
|
||||
@ -3475,7 +3475,8 @@ void ClientTaskState::PendSharedTask(Client *c, int TaskID, int NPCID, bool enfo
|
||||
return;
|
||||
}
|
||||
|
||||
void ClientTaskState::AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, std::vector<std::string> &members)
|
||||
void ClientTaskState::AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, int accepted_time,
|
||||
std::vector<std::string> &members)
|
||||
{
|
||||
// all of this data should have been verified already
|
||||
// first we need to create the new SharedTaskState
|
||||
@ -3489,7 +3490,7 @@ void ClientTaskState::AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int
|
||||
auto task_activity = task_state->GetActivity();
|
||||
|
||||
task_activity->TaskID = TaskID;
|
||||
task_activity->AcceptedTime = time(nullptr);
|
||||
task_activity->AcceptedTime = accepted_time;
|
||||
task_activity->Updated = true;
|
||||
task_activity->CurrentStep = -1;
|
||||
|
||||
|
||||
@ -146,7 +146,7 @@ public:
|
||||
int GetTaskActivityDoneCountFromTaskID(int TaskID, int ActivityID);
|
||||
int GetTaskStartTime(TaskType type, int index);
|
||||
void AcceptNewTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement = false);
|
||||
void AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, std::vector<std::string> &members);
|
||||
void AcceptNewSharedTask(Client *c, int TaskID, int NPCID, int id, int accepted_time, std::vector<std::string> &members);
|
||||
void PendSharedTask(Client *c, int TaskID, int NPCID, bool enforce_level_requirement = false);
|
||||
void FailTask(Client *c, int TaskID);
|
||||
int TaskTimeLeft(int TaskID);
|
||||
|
||||
@ -1947,6 +1947,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
int id = pack->ReadUInt32();
|
||||
int task_id = pack->ReadUInt32();
|
||||
int taskmaster_id = pack->ReadUInt32();
|
||||
int accepted_time = pack->ReadUInt32();
|
||||
char name[64] = { 0 };
|
||||
pack->ReadString(name);
|
||||
auto client = entity_list.GetClientByName(name);
|
||||
@ -1957,7 +1958,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
pack->ReadString(name);
|
||||
members.push_back(name);
|
||||
}
|
||||
client->AssignSharedTask(task_id, taskmaster_id, id, members);
|
||||
client->AssignSharedTask(task_id, taskmaster_id, id, accepted_time, members);
|
||||
} else {
|
||||
// TODO: something failed, tell world to clean up
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user