Advertisement
Guest User

Untitled

a guest
Nov 6th, 2019
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void CMode::ScreenShot()
  2. {
  3.     if ( m_screenShotNow )
  4.     {
  5.         const char *week[] =
  6.             {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  7.         char msg[128];
  8.        
  9.         GetLocalTime(&st);
  10.         sprintf(msg, "%d/%02d/%02d/%s  %02d: %02d: %02d",
  11.             st.wYear, st.wMonth, st.wDay, week[st.wDayOfWeek], st.wHour, st.wMinute, st.wSecond);
  12.        
  13.         CRenderer::TextOutScreen(5, g_renderer->m_height - 16, msg, 0x000000);
  14.         CRenderer::TextOutScreen(3, g_renderer->m_height - 16, msg, 0x000000);
  15.         CRenderer::TextOutScreen(4, g_renderer->m_height - 15, msg, 0x000000);
  16.         CRenderer::TextOutScreen(4, g_renderer->m_height - 17, msg, 0x000000);
  17.         CRenderer::TextOutScreen(4, g_renderer->m_height - 16, msg, 0xFFFFFF);
  18.        
  19.         m_screenShotNow = false;
  20.        
  21.         char tmp[2048]
  22.         sprintf(tmp, "%s\\ScreenShot", g_baseDir3);
  23.         if (!access(tmp, 0) || !_mkdir(tmp))
  24.         {
  25.             auto serverName = X; // the global with the name of the char server is just..  X
  26.             for (auto it = serverName.begin(); it != serverName.end(); ++it)
  27.             {
  28.                 if (*it == '\\'
  29.                     || *it == '/'
  30.                     || *it == ':'
  31.                     || *it == '*'
  32.                     || *it == '?'
  33.                     || *it == '"'
  34.                     || *it == '<'
  35.                     || *it == '>'
  36.                     || *it == '|')
  37.                     *it = '_';
  38.             }
  39.            
  40.             bool isCtrl = !(GetAsyncKeyState(VK_CONTROL) >> 8);
  41.             auto serverNamePtr = serverName.c_str();
  42.            
  43.             CBitmapRes resLogo = g_resMgr->Get("scr_logo.bmp");
  44.            
  45.             //captureCnt is a global that states how many screens have been saved so far (but it's never initialized until a screenshot is taken)
  46.             int ssIndex = captureCnt++;
  47.            
  48.             if (isCtrl)
  49.             {
  50.                 sprintf(tmp, "%s\\ScreenShot\\screen%s%03d.jpg", g_baseDir3, serverNamePtr, ssIndex);
  51.                 while (!access(tmp, 0))
  52.                 {
  53.                     ssIndex = captureCnt++;
  54.                     sprintf(tmp, "%s\\ScreenShot\\screen%s%03d.jpg", g_baseDir3, serverNamePtr, ssIndex);
  55.                 }
  56.                 g_renderer->SaveJPG(tmp, resLogo);
  57.             }
  58.             else
  59.             {
  60.                 sprintf(tmp, "%s\\ScreenShot\\screen%s%03d.bmp", g_baseDir3, serverNamePtr, ssIndex);
  61.                 while (!access(tmp, 0))
  62.                 {
  63.                     ssIndex = captureCnt++;
  64.                     sprintf(tmp, "%s\\ScreenShot\\screen%s%03d.bmp", g_baseDir3, serverNamePtr, ssIndex);
  65.                 }
  66.                 g_renderer->SaveBmp(tmp, resLogo);
  67.             }
  68.            
  69.             auto screenShotMsg = new std::string(tmp, strlen(tmp)); // i dont know why they use new and delete here
  70.            
  71.             screenShotMsg.append(" is Saved.");
  72.             g_renderer->SendMsg(UIM_PUSHINTOCHATHISTORY, screenShotMsg.c_str(), 0x00FF00);
  73.            
  74.             delete screenShotMsg;
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement