Advertisement
lelejau

chat_logger.cpp

Nov 23rd, 2011
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. #pragma once
  2. #include "chat_logger.h"
  3.  
  4. // THE DIRECTORY TO SAVE THE LOGS
  5. #define dir ".\\ChatLog"
  6.  
  7. // THE  MAPS TO SAVE CHAT
  8. int mapas[2] = { 3,21 };
  9.  
  10.        
  11. bool FolderExists(char* file)
  12. {
  13. DWORD returnvalue;
  14. returnvalue = GetFileAttributes(file);
  15.     if(returnvalue == ((DWORD)-1))
  16.         return false;
  17.     else
  18.         return true;
  19. }
  20.  
  21.  
  22. #pragma region Dumps the message
  23.  
  24. void DumpChat()
  25. {
  26.     if(!FolderExists(dir)) CreateDirectoryA(dir,NULL);
  27.  
  28.      SYSTEMTIME SystemTime;
  29.      GetLocalTime(&SystemTime);
  30.  
  31.      char* map_offset = (char*)player_table + 0x80;
  32.      int char_map = *(int*)map_offset;
  33.  
  34.      bool proceed = false;
  35.      for(int i=0;i<2;i++)
  36.      {
  37.          if(mapas[i] == char_map)
  38.          {
  39.              proceed = true;
  40.              break;
  41.          }
  42.      }
  43.      if(proceed)
  44.      {
  45.          char buffer[1024];
  46.          wsprintfA(buffer,"%s\\%d-%d.txt",dir,SystemTime.wDay,SystemTime.wMonth);
  47.          FILE* f = fopen(buffer,"a+");
  48.          wsprintfA(buffer,"(%d:%d:%d) -> %s (MAP: %d) \r\n",SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond,msg,char_map);
  49.          fwrite(buffer,1,strlen(buffer),f);
  50.          fclose(f);
  51.      }
  52. }
  53.  
  54. void DumpCommandChat()
  55. {
  56.     if(strncmp(msg,"/TRADE>",7) == 0) // trade
  57.     {
  58.         if(!FolderExists(dir)) CreateDirectoryA(dir,NULL);
  59.  
  60.         SYSTEMTIME SystemTime;
  61.         GetLocalTime(&SystemTime);
  62.  
  63.         char* userid = (char*)player_table + 0xA8;
  64.         char* map_offset = (char*)player_table + 0x80;
  65.         int char_map = *(int*)map_offset;
  66.        
  67.         bool proceed = false;
  68.         for(int i=0;i<2;i++)
  69.         {
  70.             if(mapas[i] == char_map)
  71.             {
  72.                 proceed = true;
  73.                 break;
  74.             }
  75.         }
  76.         if(proceed)
  77.         {
  78.             char buffer[1024];
  79.             wsprintfA(buffer,"%s\\%d-%d.txt",dir,SystemTime.wDay,SystemTime.wMonth);
  80.             FILE* f = fopen(buffer,"a+");
  81.             wsprintfA(buffer,"(%d:%d:%d) -> %s: %s (TRADE MESSAGE IN MAP %d)\r\n",SystemTime.wHour,SystemTime.wMinute,SystemTime.wSecond,userid,msg+7,char_map);
  82.             fwrite(buffer,1,strlen(buffer),f);
  83.             fclose(f);
  84.         }
  85.     }
  86. }
  87. #pragma endregion
  88.  
  89. #pragma region Hook
  90.  
  91. NAKED void Save()
  92. {
  93.     __asm { mov _edi,EDI }
  94.     __asm { mov player_table, ESI }
  95.  
  96.     memcpy(msg,_edi+0x34,100);
  97.  
  98.     if(msg[0] == '/')
  99.         DumpCommandChat();
  100.     else
  101.         DumpChat();
  102.     ret
  103. }
  104.  
  105. NAKED EXPORT void Jump()
  106. {
  107.     __asm
  108.     {
  109.         mov a, EDI
  110.         mov b, ESI
  111.         mov c, EDX
  112.     }
  113.     Save();
  114.     __asm
  115.     {
  116.         MOV EDI,a
  117.         MOV ESI,b
  118.         MOV EDX,c
  119.         ADD EDI,0x34
  120.         MOV DWORD PTR DS:[ESI+0x6C78],EDX
  121.         RETN
  122.     }
  123. }
  124. #pragma endregion
  125.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement