Advertisement
evgen1137

shit

Feb 20th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.48 KB | None | 0 0
  1. // test_plugin - Плагин для тестов
  2.  
  3. #if defined LINUX
  4.     #include <cstring>
  5. #else
  6.     #include <string>
  7. #endif
  8.  
  9. #include "SDK/amx/amx.h"
  10. #include "SDK/plugincommon.h"
  11.  
  12. #define SP_PLUGIN_VERSION   "0.0.1"
  13.  
  14. typedef void (*logprintf_t)(char* format, ...);
  15.  
  16. logprintf_t logprintf;
  17.  
  18. void **ppPluginData;
  19.  
  20. extern void *pAMXFunctions;
  21.  
  22. PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
  23. {
  24.     pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
  25.     logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
  26.     logprintf(" ");
  27.     //logprintf("Плагин test_plugin v"SP_PLUGIN_VERSION" загружен");
  28.     logprintf(" ");
  29.     return 1;
  30. }
  31.  
  32. PLUGIN_EXPORT void PLUGIN_CALL Unload()
  33. {
  34.     //logprintf("Плагин test_plugin v"SP_PLUGIN_VERSION" выгружен"); 
  35. }
  36.  
  37.  
  38. char* UpperToLower_miaso(char* str, int len)
  39. {
  40.     //int len = strlen(str);
  41.     char ch;
  42.     char* rezult = new char[len];
  43.     for (int i = 0; i <= len; i++)
  44.     {
  45.         ch = *str;
  46.         if (ch > 64 && ch < 91)
  47.             ch += 32;
  48.         else if (ch > 191 && ch < 224)
  49.             ch += 32;
  50.         else if (ch == 168)
  51.             ch = 184;
  52.         rezult[i] = ch;
  53.         str++;
  54.     }
  55.     return rezult;
  56. }
  57.  
  58. void UpperToLower_dartfol(char *str, size_t len) //DartfoL
  59. {
  60.     unsigned char *s = (unsigned char*)str;
  61.     //size_t len = strlen(str);
  62.     for(size_t i = 0; i < len; i++)
  63.     {
  64.         if(s[i] > 64 && s[i] < 91) // буквы A-Z
  65.             s[i] += 32;
  66.         else if(s[i] > 191 && s[i] < 224) // буквы А-Я
  67.             s[i] += 32;
  68.         else if(s[i] == 168) // буква Ё
  69.             s[i] = 184;
  70.     }
  71. }
  72.  
  73. static cell AMX_NATIVE_CALL TP_ToLowerString_orig(AMX *amx, cell *params)
  74. {
  75.     char *string;
  76.     int len = 0;
  77.     amx_StrParam(amx, params[1], string);
  78.     if(string != NULL)
  79.     {
  80.         len = strlen(string);
  81.         for(int i = 0; i < len; i++)
  82.         {
  83.             switch(string[i])
  84.             {
  85.             case 'A': string[i] = 'a'; break;
  86.             case 'B': string[i] = 'b'; break;
  87.             case 'C': string[i] = 'c'; break;
  88.             case 'D': string[i] = 'd'; break;
  89.             case 'E': string[i] = 'e'; break;
  90.             case 'F': string[i] = 'f'; break;
  91.             case 'G': string[i] = 'g'; break;
  92.             case 'H': string[i] = 'h'; break;
  93.             case 'I': string[i] = 'i'; break;
  94.             case 'J': string[i] = 'j'; break;
  95.             case 'K': string[i] = 'k'; break;
  96.             case 'L': string[i] = 'l'; break;
  97.             case 'M': string[i] = 'm'; break;
  98.             case 'N': string[i] = 'n'; break;
  99.             case 'O': string[i] = 'o'; break;
  100.             case 'P': string[i] = 'p'; break;
  101.             case 'Q': string[i] = 'q'; break;
  102.             case 'R': string[i] = 'r'; break;
  103.             case 'S': string[i] = 's'; break;
  104.             case 'T': string[i] = 't'; break;
  105.             case 'U': string[i] = 'u'; break;
  106.             case 'V': string[i] = 'v'; break;
  107.             case 'W': string[i] = 'w'; break;
  108.             case 'X': string[i] = 'x'; break;
  109.             case 'Y': string[i] = 'y'; break;
  110.             case 'Z': string[i] = 'z'; break;
  111.             case 'А': string[i] = 'а'; break;
  112.             case 'Б': string[i] = 'б'; break;
  113.             case 'В': string[i] = 'в'; break;
  114.             case 'Г': string[i] = 'г'; break;
  115.             case 'Д': string[i] = 'д'; break;
  116.             case 'Е': string[i] = 'е'; break;
  117.             case 'Ё': string[i] = 'ё'; break;
  118.             case 'Ж': string[i] = 'ж'; break;
  119.             case 'З': string[i] = 'з'; break;
  120.             case 'И': string[i] = 'и'; break;
  121.             case 'Й': string[i] = 'й'; break;
  122.             case 'К': string[i] = 'к'; break;
  123.             case 'Л': string[i] = 'л'; break;
  124.             case 'М': string[i] = 'м'; break;
  125.             case 'Н': string[i] = 'н'; break;
  126.             case 'О': string[i] = 'о'; break;
  127.             case 'П': string[i] = 'п'; break;
  128.             case 'Р': string[i] = 'р'; break;
  129.             case 'С': string[i] = 'с'; break;
  130.             case 'Т': string[i] = 'т'; break;
  131.             case 'У': string[i] = 'у'; break;
  132.             case 'Ф': string[i] = 'ф'; break;
  133.             case 'Х': string[i] = 'х'; break;
  134.             case 'Ц': string[i] = 'ц'; break;
  135.             case 'Ч': string[i] = 'ч'; break;
  136.             case 'Ш': string[i] = 'ш'; break;
  137.             case 'Щ': string[i] = 'щ'; break;
  138.             case 'Ъ': string[i] = 'ъ'; break;
  139.             case 'Ы': string[i] = 'ы'; break;
  140.             case 'Ь': string[i] = 'ь'; break;
  141.             case 'Э': string[i] = 'э'; break;
  142.             case 'Ю': string[i] = 'ю'; break;
  143.             case 'Я': string[i] = 'я'; break;
  144.             }
  145.         }
  146.         string[len] = '\0';
  147.     }
  148.     else
  149.     {
  150.         string = "";
  151.     }
  152.     cell *addr = NULL;
  153.     amx_GetAddr(amx, params[1], &addr);
  154.     amx_SetString(addr, string, 0, 0, len + 1);
  155.     return 1;
  156. }
  157.  
  158. static cell AMX_NATIVE_CALL TP_ToLowerString_miaso(AMX *amx, cell *params)
  159. {
  160.     char *string;
  161.     unsigned int len = 0;
  162.     amx_StrParam(amx, params[1], string);
  163.     if (string != NULL)
  164.     {
  165.         len = strlen(string);
  166.         string = UpperToLower_miaso(string, len);
  167.     }
  168.     else
  169.     {
  170.         string = "";
  171.     }
  172.     cell *addr = NULL;
  173.     amx_GetAddr(amx, params[1], &addr);
  174.     amx_SetString(addr, string, 0, 0, len+1);
  175.     delete[]string;
  176.     return 1;
  177. }
  178.  
  179. static cell AMX_NATIVE_CALL TP_ToLowerString_dartfol(AMX *amx, cell *params)
  180. {
  181.     char *string;
  182.     unsigned int len = 0;
  183.     amx_StrParam(amx, params[1], string);
  184.     if(string != NULL)
  185.     {
  186.         len = strlen(string);
  187.         UpperToLower_dartfol(string, len);
  188.     }
  189.     else
  190.     {
  191.         string = "";
  192.     }
  193.     cell *addr = NULL;
  194.     amx_GetAddr(amx, params[1], &addr);
  195.     amx_SetString(addr, string, 0, 0, len + 1);
  196.     return 1;
  197. }
  198.  
  199. AMX_NATIVE_INFO NATIVES_LIST[] =
  200. {
  201.     { "UpperToLower_orig", TP_ToLowerString_orig },
  202.     { "UpperToLower_miaso", TP_ToLowerString_miaso },
  203.     { "UpperToLower_dartfol", TP_ToLowerString_dartfol },
  204.     {0, 0}
  205. };
  206.  
  207. PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
  208. {
  209.     return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
  210. }
  211.  
  212. PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
  213. {
  214.     return amx_Register(amx, NATIVES_LIST, -1);
  215. }
  216.  
  217. PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
  218. {
  219.     return AMX_ERR_NONE;
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement