1. void SmhT::GiveReward(LPCHARACTER pkChar, BYTE bFloor)
  2. {
  3. if (!pkChar) return;
  4. if (pkChar->IsSungmaRewardClaimed(bFloor))
  5. {
  6. pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu katin odulunu zaten aldin!"));
  7. return;
  8. }
  9. if (bFloor > pkChar->GetSungmaCheckpoint())
  10. {
  11. pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Henuz bu kata ulasmadin!"));
  12. return;
  13. }
  14. bool bSuccess = false;
  15. for (const auto& reward : m_vec_mapRewardTower)
  16. {
  17. if (reward.bFloor == bFloor)
  18. {
  19. for (int i = 0; i < MAX_REWARD; ++i)
  20. {
  21. if (reward.Item[i].dwVnum > 0)
  22. {
  23. char szMailTitle[128], szMailMessage[128];
  24. snprintf(szMailTitle, sizeof(szMailTitle), "Cehennem Kulesi");
  25. snprintf(szMailMessage, sizeof(szMailMessage), "Tebrikler! %d. Kat odulun ektedir.", bFloor);
  26. char szQuery[1024];
  27. snprintf(szQuery, sizeof(szQuery),
  28. "INSERT INTO player.mailbox "
  29. "(name, who, title, message, gm, confirm, send_time, delete_time, gold, won, vnum, count) "
  30. "VALUES ('%s', 'Sistem', '%s', '%s', 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP() + 2592000, 0, 0, %u, %d)",
  31. pkChar->GetName(), szMailTitle, szMailMessage, reward.Item[i].dwVnum, reward.Item[i].bCount);
  32. DBManager::instance().DirectQuery(szQuery);
  33. }
  34. }
  35. bSuccess = true;
  36. break;
  37. }
  38. }
  39. if (bSuccess)
  40. {
  41. pkChar->SetSungmaRewardClaimed(bFloor);
  42. char szQuery[1024];
  43. snprintf(szQuery, sizeof(szQuery), "UPDATE player.player SET sungma_claimed_rewards = '%s' WHERE id = %u",
  44. pkChar->GetSungmaClaimedString().c_str(), pkChar->GetPlayerID());
  45. DBManager::instance().DirectQuery(szQuery);
  46. pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Tebrikler! Odullerin Posta Kutusuna (Mailbox) gonderildi."));
  47. }
  48. }