Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Created by Undertaker
- #if !defined _string_included
- #error Include 'UIS.inc' should be loaded after 'string.inc'!
- #endif
- #if !defined _u_kickfix_included
- forward und_KickDelay(playerid);
- #endif
- #if !defined UND_WAIT_TIME
- #define UND_WAIT_TIME (10)
- #endif
- #if !defined MAX_DISCONNECT_SLOTS
- #define MAX_DISCONNECT_SLOTS 20
- #endif
- #if !defined MAX_IPADRESS_LENGTH
- #define MAX_IPADRESS_LENGTH 16
- #endif
- #if (MAX_DISCONNECT_SLOTS < 2)
- #define MAX_DISCONNECT_SLOTS 2
- #endif
- #if (MAX_DISCONNECT_SLOTS > 100)
- #define MAX_DISCONNECT_SLOTS 100
- #endif
- static
- und_disc_slots[MAX_DISCONNECT_SLOTS][MAX_IPADRESS_LENGTH],
- und_disc_slots_time_out[MAX_DISCONNECT_SLOTS] = { 0, ... },
- out_writed_slots,
- und_player_ipadress[MAX_PLAYERS][MAX_IPADRESS_LENGTH]
- ;
- #if !defined FILTERSCRIPT
- public OnGameModeInit()
- {
- for(new i; i < MAX_DISCONNECT_SLOTS; i++)
- {
- und_disc_slots[i] = "NaN"; //обход бага с нуль символом (for strcmp)
- }
- out_writed_slots = 0;
- print("\nUIS Loaded...\a");
- #if defined UIS_OnGameModeInit
- UIS_OnGameModeInit();
- #endif
- return 1;
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit UIS_OnGameModeInit
- #if defined UIS_OnGameModeInit
- forward UIS_OnGameModeInit();
- #endif
- #else
- public OnFilterScriptInit()
- {
- for(new i; i < MAX_DISCONNECT_SLOTS; i++)
- {
- und_disc_slots[i] = "NaN"; //обход бага с нуль символом (for strcmp)
- }
- out_writed_slots = -1;
- print("\nUIS Loaded...");
- #if defined UIS_OnFilterScriptInit
- UIS_OnFilterScriptInit();
- #endif
- return 1;
- }
- #if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
- #else
- #define _ALS_OnFilterScriptInit
- #endif
- #define OnFilterScriptInit UIS_OnFilterScriptInit
- #if defined UIS_OnFilterScriptInit
- forward UIS_OnFilterScriptInit();
- #endif
- #endif
- public OnPlayerConnect(playerid)
- {
- new
- und_unix_time = gettime(),
- und_opc_stop = 0,
- und_player_name[MAX_PLAYER_NAME];
- GetPlayerIp(playerid, und_player_ipadress[playerid], MAX_IPADRESS_LENGTH);
- #if !defined COLOR_LIGHTRED
- #define COLOR_LIGHTRED 0xFF6347AA
- #endif
- for(new und_disc_slotid; und_disc_slotid < MAX_DISCONNECT_SLOTS; und_disc_slotid++)
- {
- if( !strcmp(und_disc_slots[und_disc_slotid], und_player_ipadress[playerid]) )
- {
- if(und_disc_slots_time_out[und_disc_slotid] > und_unix_time)
- {
- GetPlayerName(playerid, und_player_name, sizeof(und_player_name));
- und_disc_slots_time_out[und_disc_slotid] = und_unix_time + 10; // обратно в ожидание
- SendClientMessage(playerid, COLOR_LIGHTRED, !"Перед тем как перезайти, подождите 10 секунд.");
- printf("[UIS] %s [%d] перезашел менее чем через %d секунд и был кикнут", und_player_name, playerid, UND_WAIT_TIME);
- #if defined _u_kickfix_included
- Kick(playerid, 200);
- #else
- SetTimerEx("und_KickDelay", 200, 0, "i", playerid);
- #endif
- und_opc_stop = 1;
- break;
- }
- }
- }
- if(und_opc_stop) {
- return 0;
- }
- #if defined UIS_OnPlayerConnect
- UIS_OnPlayerConnect(playerid);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect UIS_OnPlayerConnect
- #if defined UIS_OnPlayerConnect
- forward UIS_OnPlayerConnect(playerid);
- #endif
- public OnPlayerDisconnect(playerid, reason)
- {
- new
- und_disc_slots_nowrite = 0;
- for(new i; i < MAX_DISCONNECT_SLOTS; i++)
- {
- if
- (
- strcmp(und_disc_slots[i], und_player_ipadress[playerid], false) == 0
- )
- {
- und_disc_slots_nowrite = 1; // запрещаем запись
- }
- }
- if(!und_disc_slots_nowrite)
- {
- if(++ out_writed_slots == MAX_DISCONNECT_SLOTS) {
- out_writed_slots = 0;
- }
- new
- und_unix_time = gettime();
- print(und_player_ipadress[playerid]);
- strmid(und_disc_slots[out_writed_slots], und_player_ipadress[playerid], 0, MAX_IPADRESS_LENGTH);
- und_disc_slots_time_out[out_writed_slots] = und_unix_time + UND_WAIT_TIME;
- }
- #if defined UIS_OnPlayerDisconnect
- UIS_OnPlayerDisconnect(playerid, reason);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect UIS_OnPlayerDisconnect
- #if defined UIS_OnPlayerDisconnect
- forward UIS_OnPlayerDisconnect(playerid, reason);
- #endif
- #if !defined _u_kickfix_included
- public und_KickDelay(playerid) {
- Kick(playerid);
- return 1;
- }
- #endif
- // 13.11.2016
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement