void ZoneDatabase::RefreshPetitionsFromDB() { Petition* newpet; std::string query = "SELECT petid, charname, accountname, lastgm, petitiontext, " "zone, urgency, charclass, charrace, charlevel, checkouts, " "unavailables, ischeckedout, senttime, gmtext " "FROM petitions ORDER BY petid"; auto results = QueryDatabase(query); if (!results.Success()) { LogFile->write(EQEMuLog::Error, "Error in RefreshPetitionsFromDB query '%s': %s", query.c_str(), results.ErrorMessage().c_str()); return; } for (auto row = results.begin(); row != results.end(); ++row) { newpet = new Petition(atoi(row[0])); newpet->SetCName(row[1]); newpet->SetAName(row[2]); newpet->SetLastGM(row[3]); newpet->SetPetitionText(row[4]); newpet->SetZone(atoi(row[5])); newpet->SetUrgency(atoi(row[6])); newpet->SetClass(atoi(row[7])); newpet->SetRace(atoi(row[8])); newpet->SetLevel(atoi(row[9])); newpet->SetCheckouts(atoi(row[10])); newpet->SetUnavails(atoi(row[11])); newpet->SetSentTime2(atol(row[13])); newpet->SetGMText(row[14]); if (atoi(row[12]) == 1) newpet->SetCheckedOut(true); else newpet->SetCheckedOut(false); petition_list.AddPetition(newpet); } }
void GuildApproval::GuildApproved() { char petitext[PBUFFER] = "A new guild was founded! Guildname: "; char gmembers[MBUFFER] = " "; if(!owner) return; database.GetVariable("GuildCreation", founders, 3); uint8 tmp = atoi(founders); uint32 tmpeq = guild_mgr.CreateGuild(guild, owner->CharacterID()); guild_mgr.SetGuild(owner->CharacterID(),tmpeq,2); owner->SendAppearancePacket(AT_GuildID,true,false); for(int i=0;i<tmp;i++) { if(members[i]) { owner->Message(CC_Default, "%s",members[i]->GetName()); owner->Message(CC_Default, "%i",members[i]->CharacterID()); guild_mgr.SetGuild(members[i]->CharacterID(),tmpeq,0); size_t len = MBUFFER - strlen(gmembers)+1; strncat(gmembers," ",len); strncat(gmembers,members[i]->GetName(),len); } } size_t len = PBUFFER - strlen(petitext)+1; strncat(petitext,guild,len); strncat(petitext," Leader: ",len); strncat(petitext,owner->CastToClient()->GetName(),len); strncat(petitext," Members:",len); strncat(petitext,gmembers,len); Petition* pet = new Petition(owner->CastToClient()->CharacterID()); pet->SetAName(owner->CastToClient()->AccountName()); pet->SetClass(owner->CastToClient()->GetClass()); pet->SetLevel(owner->CastToClient()->GetLevel()); pet->SetCName(owner->CastToClient()->GetName()); pet->SetRace(owner->CastToClient()->GetRace()); pet->SetLastGM(""); pet->SetCName(owner->CastToClient()->GetName()); //aza77 is this really 2 times needed ?? pet->SetPetitionText(petitext); pet->SetZone(zone->GetZoneID()); pet->SetUrgency(0); petition_list.AddPetition(pet); database.InsertPetitionToDB(pet); petition_list.UpdateGMQueue(); petition_list.UpdateZoneListQueue(); worldserver.SendEmoteMessage(0, 0, 80, 15, "%s has made a petition. #%i", owner->CastToClient()->GetName(), pet->GetID()); ServerPacket* pack = new ServerPacket; pack->opcode = ServerOP_RefreshGuild; pack->size = tmp; pack->pBuffer = new uchar[pack->size]; memcpy(pack->pBuffer, &tmpeq, 4); worldserver.SendPacket(pack); safe_delete(pack); owner->Message(CC_Default, "Your guild was created."); owner = 0; }
Petition PetitionManager::Load(const char *path, int id) { char buffer[256]; Util::SafeFormat(buffer, sizeof(buffer), "%s\\%d.txt", path, id); Platform::FixPaths(buffer); FileReader lfr; Petition newItem; if (lfr.OpenText(buffer) != Err_OK) { g_Log.AddMessageFormat("Could not open file [%s]", buffer); } else { lfr.CommentStyle = Comment_Semi; int r = 0; while (lfr.FileOpen() == true) { r = lfr.ReadLine(); lfr.SingleBreak("="); lfr.BlockToStringC(0, Case_Upper); if (r > 0) { if (strcmp(lfr.SecBuffer, "[ENTRY]") == 0) { // if (newItem.petitionId != 0) { g_Log.AddMessageFormat( "[WARNING] Petition file %s has more than one ENTRY", buffer); newItem.RunLoadDefaults(); break; } } else if (strcmp(lfr.SecBuffer, "ID") == 0) newItem.petitionId = lfr.BlockToIntC(1); else if (strcmp(lfr.SecBuffer, "SAGE") == 0) newItem.sageCDefID = lfr.BlockToIntC(1); else if (strcmp(lfr.SecBuffer, "PETITIONER") == 0) newItem.petitionerCDefID = lfr.BlockToIntC(1); else if (strcmp(lfr.SecBuffer, "TIMESTAMP") == 0) newItem.timestamp = lfr.BlockToULongC(1); else if (strcmp(lfr.SecBuffer, "CATEGORY") == 0) newItem.category = lfr.BlockToIntC(1); else if (strcmp(lfr.SecBuffer, "DESCRIPTION") == 0) { string r = lfr.BlockToStringC(1, 0); Util::ReplaceAll(r, "\\r\\n", "\r\n"); Util::ReplaceAll(r, "\\n", "\n"); Util::SafeCopy(newItem.description, r.c_str(), sizeof(newItem.description)); } else if (strcmp(lfr.SecBuffer, "RESOLUTION") == 0) { string r = lfr.BlockToStringC(1, 0); Util::ReplaceAll(r, "\\r\\n", "\r\n"); Util::ReplaceAll(r, "\\n", "\n"); Util::SafeCopy(newItem.resolution, r.c_str(), sizeof(newItem.resolution)); } else { g_Log.AddMessageFormat( "[WARNING] Petition file %s has unknown pair %s", buffer, lfr.SecBuffer); } } } } if (newItem.petitionId != 0) { newItem.RunLoadDefaults(); } return newItem; }