- void SmhT::GiveReward(LPCHARACTER pkChar, BYTE bFloor)
- {
- if (!pkChar) return;
- if (pkChar->IsSungmaRewardClaimed(bFloor))
- {
- pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu katin odulunu zaten aldin!"));
- return;
- }
- if (bFloor > pkChar->GetSungmaCheckpoint())
- {
- pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Henuz bu kata ulasmadin!"));
- return;
- }
- bool bSuccess = false;
- for (const auto& reward : m_vec_mapRewardTower)
- {
- if (reward.bFloor == bFloor)
- {
- for (int i = 0; i < MAX_REWARD; ++i)
- {
- if (reward.Item[i].dwVnum > 0)
- {
- char szMailTitle[128], szMailMessage[128];
- snprintf(szMailTitle, sizeof(szMailTitle), "Cehennem Kulesi");
- snprintf(szMailMessage, sizeof(szMailMessage), "Tebrikler! %d. Kat odulun ektedir.", bFloor);
- char szQuery[1024];
- snprintf(szQuery, sizeof(szQuery),
- "INSERT INTO player.mailbox "
- "(name, who, title, message, gm, confirm, send_time, delete_time, gold, won, vnum, count) "
- "VALUES ('%s', 'Sistem', '%s', '%s', 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + 2592000, 0, 0, %u, %d)",
- pkChar->GetName(), szMailTitle, szMailMessage, reward.Item[i].dwVnum, reward.Item[i].bCount);
- DBManager::instance().DirectQuery(szQuery);
- }
- }
- bSuccess = true;
- break;
- }
- }
- if (bSuccess)
- {
- pkChar->SetSungmaRewardClaimed(bFloor);
- char szQuery[1024];
- snprintf(szQuery, sizeof(szQuery), "UPDATE player.player SET sungma_claimed_rewards = '%s' WHERE id = %u",
- pkChar->GetSungmaClaimedString().c_str(), pkChar->GetPlayerID());
- DBManager::instance().DirectQuery(szQuery);
- pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Tebrikler! Odullerin Posta Kutusuna (Mailbox) gonderildi."));
- }
- }