Advertisement
Guest User

UIS Version 1.0

a guest
Nov 13th, 2016
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.63 KB | None | 0 0
  1. // Created by Undertaker
  2.  
  3. #if !defined _string_included
  4.     #error Include 'UIS.inc' should be loaded after 'string.inc'!
  5. #endif
  6.  
  7. #if !defined _u_kickfix_included
  8.     forward und_KickDelay(playerid);
  9. #endif
  10.  
  11. #if !defined UND_WAIT_TIME
  12.     #define UND_WAIT_TIME (10)
  13. #endif
  14.  
  15. #if !defined MAX_DISCONNECT_SLOTS
  16.     #define MAX_DISCONNECT_SLOTS 20
  17. #endif
  18.  
  19. #if !defined MAX_IPADRESS_LENGTH
  20.     #define MAX_IPADRESS_LENGTH 16
  21. #endif
  22.  
  23. #if (MAX_DISCONNECT_SLOTS < 2)
  24.     #define MAX_DISCONNECT_SLOTS 2
  25. #endif
  26.  
  27. #if (MAX_DISCONNECT_SLOTS > 100)
  28.     #define MAX_DISCONNECT_SLOTS 100
  29. #endif
  30.  
  31. static
  32.     und_disc_slots[MAX_DISCONNECT_SLOTS][MAX_IPADRESS_LENGTH],
  33.     und_disc_slots_time_out[MAX_DISCONNECT_SLOTS] = { 0, ... },
  34.     out_writed_slots,
  35.     und_player_ipadress[MAX_PLAYERS][MAX_IPADRESS_LENGTH]
  36. ;
  37.  
  38. #if !defined FILTERSCRIPT
  39.     public OnGameModeInit()
  40.     {
  41.         for(new i; i < MAX_DISCONNECT_SLOTS; i++)
  42.         {
  43.             und_disc_slots[i] = "NaN"; //обход бага с нуль символом (for strcmp)
  44.         }
  45.         out_writed_slots = 0;
  46.         print("\nUIS Loaded...\a");
  47.         #if defined UIS_OnGameModeInit
  48.             UIS_OnGameModeInit();
  49.         #endif
  50.         return 1;
  51.     }
  52.     #if defined _ALS_OnGameModeInit
  53.         #undef OnGameModeInit
  54.     #else
  55.         #define _ALS_OnGameModeInit
  56.     #endif
  57.     #define OnGameModeInit UIS_OnGameModeInit
  58.     #if defined UIS_OnGameModeInit
  59.         forward UIS_OnGameModeInit();
  60.     #endif
  61. #else
  62.     public OnFilterScriptInit()
  63.     {
  64.         for(new i; i < MAX_DISCONNECT_SLOTS; i++)
  65.         {
  66.             und_disc_slots[i] = "NaN"; //обход бага с нуль символом (for strcmp)
  67.         }
  68.         out_writed_slots = -1;
  69.         print("\nUIS Loaded...");
  70.         #if defined UIS_OnFilterScriptInit
  71.             UIS_OnFilterScriptInit();
  72.         #endif
  73.         return 1;
  74.     }
  75.     #if defined _ALS_OnFilterScriptInit
  76.         #undef OnFilterScriptInit
  77.     #else
  78.         #define _ALS_OnFilterScriptInit
  79.     #endif
  80.     #define OnFilterScriptInit UIS_OnFilterScriptInit
  81.     #if defined UIS_OnFilterScriptInit
  82.         forward UIS_OnFilterScriptInit();
  83.     #endif
  84. #endif
  85. public OnPlayerConnect(playerid)
  86. {
  87.     new
  88.         und_unix_time = gettime(),
  89.         und_opc_stop = 0,
  90.         und_player_name[MAX_PLAYER_NAME];
  91.  
  92.     GetPlayerIp(playerid, und_player_ipadress[playerid], MAX_IPADRESS_LENGTH);
  93.  
  94.     #if !defined COLOR_LIGHTRED
  95.         #define COLOR_LIGHTRED 0xFF6347AA
  96.     #endif
  97.  
  98.     for(new und_disc_slotid; und_disc_slotid < MAX_DISCONNECT_SLOTS; und_disc_slotid++)
  99.     {
  100.         if( !strcmp(und_disc_slots[und_disc_slotid], und_player_ipadress[playerid]) )
  101.         {
  102.             if(und_disc_slots_time_out[und_disc_slotid] > und_unix_time)
  103.             {
  104.                 GetPlayerName(playerid, und_player_name, sizeof(und_player_name));
  105.                 und_disc_slots_time_out[und_disc_slotid] = und_unix_time + 10; // обратно в ожидание
  106.  
  107.                 SendClientMessage(playerid, COLOR_LIGHTRED, !"Перед тем как перезайти, подождите 10 секунд.");
  108.                 printf("[UIS] %s [%d] перезашел менее чем через %d секунд и был кикнут", und_player_name, playerid, UND_WAIT_TIME);
  109.  
  110.                 #if defined _u_kickfix_included
  111.                     Kick(playerid, 200);
  112.                 #else
  113.                     SetTimerEx("und_KickDelay", 200, 0, "i", playerid);
  114.                 #endif
  115.                 und_opc_stop = 1;
  116.                 break;
  117.             }
  118.         }
  119.     }
  120.  
  121.     if(und_opc_stop) {
  122.         return 0;
  123.     }
  124.     #if defined UIS_OnPlayerConnect
  125.         UIS_OnPlayerConnect(playerid);
  126.     #endif
  127.     return 1;
  128. }
  129. #if defined _ALS_OnPlayerConnect
  130.     #undef OnPlayerConnect
  131. #else
  132.     #define _ALS_OnPlayerConnect
  133. #endif
  134. #define OnPlayerConnect UIS_OnPlayerConnect
  135. #if defined UIS_OnPlayerConnect
  136.     forward UIS_OnPlayerConnect(playerid);
  137. #endif
  138.  
  139. public OnPlayerDisconnect(playerid, reason)
  140. {
  141.     new
  142.         und_disc_slots_nowrite = 0;
  143.  
  144.     for(new i; i < MAX_DISCONNECT_SLOTS; i++)
  145.     {
  146.         if
  147.         (
  148.             strcmp(und_disc_slots[i], und_player_ipadress[playerid], false) == 0
  149.         )
  150.         {
  151.             und_disc_slots_nowrite = 1; // запрещаем запись
  152.         }
  153.     }
  154.  
  155.     if(!und_disc_slots_nowrite)
  156.     {
  157.         if(++ out_writed_slots == MAX_DISCONNECT_SLOTS) {
  158.             out_writed_slots = 0;
  159.         }
  160.  
  161.         new
  162.             und_unix_time = gettime();
  163.         print(und_player_ipadress[playerid]);
  164.         strmid(und_disc_slots[out_writed_slots], und_player_ipadress[playerid], 0, MAX_IPADRESS_LENGTH);
  165.         und_disc_slots_time_out[out_writed_slots] = und_unix_time + UND_WAIT_TIME;
  166.     }
  167.     #if defined UIS_OnPlayerDisconnect
  168.         UIS_OnPlayerDisconnect(playerid, reason);
  169.     #endif
  170.     return 1;
  171. }
  172. #if defined _ALS_OnPlayerDisconnect
  173.     #undef OnPlayerDisconnect
  174. #else
  175.     #define _ALS_OnPlayerDisconnect
  176. #endif
  177. #define OnPlayerDisconnect UIS_OnPlayerDisconnect
  178. #if defined UIS_OnPlayerDisconnect
  179.     forward UIS_OnPlayerDisconnect(playerid, reason);
  180. #endif
  181.  
  182. #if !defined _u_kickfix_included
  183.     public und_KickDelay(playerid) {
  184.         Kick(playerid);
  185.         return 1;
  186.     }
  187. #endif
  188. // 13.11.2016
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement