mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-29 04:12:24 +00:00
[Bug Fix] Add protection to ensure adventure points award are only attempted on players (#4371)
This commit is contained in:
parent
4c614661e7
commit
8b166bf5b9
@ -282,88 +282,77 @@ void Adventure::IncrementAssassinationCount()
|
|||||||
void Adventure::Finished(AdventureWinStatus ws)
|
void Adventure::Finished(AdventureWinStatus ws)
|
||||||
{
|
{
|
||||||
auto iter = players.begin();
|
auto iter = players.begin();
|
||||||
while(iter != players.end())
|
while (iter != players.end()) {
|
||||||
{
|
|
||||||
ClientListEntry *current = client_list.FindCharacter((*iter).c_str());
|
ClientListEntry *current = client_list.FindCharacter((*iter).c_str());
|
||||||
if(current)
|
auto character_id = database.GetCharacterID(*iter);
|
||||||
{
|
|
||||||
if(current->Online() == CLE_Status::InZone)
|
if (character_id == 0) {
|
||||||
{
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (current) {
|
||||||
|
if (current->Online() == CLE_Status::InZone) {
|
||||||
//We can send our packets only.
|
//We can send our packets only.
|
||||||
auto pack =
|
auto pack = new ServerPacket(ServerOP_AdventureFinish, sizeof(ServerAdventureFinish_Struct));
|
||||||
new ServerPacket(ServerOP_AdventureFinish, sizeof(ServerAdventureFinish_Struct));
|
|
||||||
ServerAdventureFinish_Struct *af = (ServerAdventureFinish_Struct*)pack->pBuffer;
|
ServerAdventureFinish_Struct *af = (ServerAdventureFinish_Struct*)pack->pBuffer;
|
||||||
strcpy(af->player, (*iter).c_str());
|
strcpy(af->player, (*iter).c_str());
|
||||||
af->theme = GetTemplate()->theme;
|
af->theme = GetTemplate()->theme;
|
||||||
if(ws == AWS_Win)
|
if (ws == AWS_Win) {
|
||||||
{
|
|
||||||
af->win = true;
|
af->win = true;
|
||||||
af->points = GetTemplate()->win_points;
|
af->points = GetTemplate()->win_points;
|
||||||
}
|
}
|
||||||
else if(ws == AWS_SecondPlace)
|
else if (ws == AWS_SecondPlace) {
|
||||||
{
|
|
||||||
af->win = true;
|
af->win = true;
|
||||||
af->points = GetTemplate()->lose_points;
|
af->points = GetTemplate()->lose_points;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
af->win = false;
|
af->win = false;
|
||||||
af->points = 0;
|
af->points = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
zoneserver_list.SendPacket(current->zone(), current->instance(), pack);
|
zoneserver_list.SendPacket(current->zone(), current->instance(), pack);
|
||||||
database.UpdateAdventureStatsEntry(database.GetCharacterID((*iter)), GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
|
database.UpdateAdventureStatsEntry(character_id, GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
|
||||||
delete pack;
|
delete pack;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
AdventureFinishEvent afe;
|
AdventureFinishEvent afe;
|
||||||
afe.name = (*iter);
|
afe.name = (*iter);
|
||||||
if(ws == AWS_Win)
|
if (ws == AWS_Win) {
|
||||||
{
|
|
||||||
afe.theme = GetTemplate()->theme;
|
afe.theme = GetTemplate()->theme;
|
||||||
afe.points = GetTemplate()->win_points;
|
afe.points = GetTemplate()->win_points;
|
||||||
afe.win = true;
|
afe.win = true;
|
||||||
}
|
}
|
||||||
else if(ws == AWS_SecondPlace)
|
else if (ws == AWS_SecondPlace) {
|
||||||
{
|
|
||||||
afe.theme = GetTemplate()->theme;
|
afe.theme = GetTemplate()->theme;
|
||||||
afe.points = GetTemplate()->lose_points;
|
afe.points = GetTemplate()->lose_points;
|
||||||
afe.win = true;
|
afe.win = true;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
afe.win = false;
|
afe.win = false;
|
||||||
afe.points = 0;
|
afe.points = 0;
|
||||||
}
|
}
|
||||||
adventure_manager.AddFinishedEvent(afe);
|
adventure_manager.AddFinishedEvent(afe);
|
||||||
database.UpdateAdventureStatsEntry(database.GetCharacterID((*iter)), GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
|
database.UpdateAdventureStatsEntry(character_id, GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
AdventureFinishEvent afe;
|
AdventureFinishEvent afe;
|
||||||
afe.name = (*iter);
|
afe.name = (*iter);
|
||||||
if(ws == AWS_Win)
|
if (ws == AWS_Win) {
|
||||||
{
|
|
||||||
afe.theme = GetTemplate()->theme;
|
afe.theme = GetTemplate()->theme;
|
||||||
afe.points = GetTemplate()->win_points;
|
afe.points = GetTemplate()->win_points;
|
||||||
afe.win = true;
|
afe.win = true;
|
||||||
}
|
}
|
||||||
else if(ws == AWS_SecondPlace)
|
else if (ws == AWS_SecondPlace) {
|
||||||
{
|
|
||||||
afe.theme = GetTemplate()->theme;
|
afe.theme = GetTemplate()->theme;
|
||||||
afe.points = GetTemplate()->lose_points;
|
afe.points = GetTemplate()->lose_points;
|
||||||
afe.win = true;
|
afe.win = true;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
afe.win = false;
|
afe.win = false;
|
||||||
afe.points = 0;
|
afe.points = 0;
|
||||||
}
|
}
|
||||||
adventure_manager.AddFinishedEvent(afe);
|
adventure_manager.AddFinishedEvent(afe);
|
||||||
|
database.UpdateAdventureStatsEntry(character_id, GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
|
||||||
database.UpdateAdventureStatsEntry(database.GetCharacterID((*iter)), GetTemplate()->theme, (ws != AWS_Lose) ? true : false);
|
|
||||||
}
|
}
|
||||||
++iter;
|
++iter;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user