Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Пользователь
Регистрация
2 Апр 2025
Сообщения
7
В Начало мода:
Pawn:
new Float:JailPosition[3] = {264.6288, 77.5505, 1001.0391};  // lspd podval
new JailInterior = 6;  // inta lspd
new JailVirtualWorld = 1;   // virtual world 
#define MAX_JAIL_TIME                   180000


В секундный таймер если у вас есть:

Pawn:
if(PI[i][pJailed] == 1) {
            if(PI[i][pJailTime] > 0) {
                PI[i][pJailTime]--;
                GameTextForPlayerf(i,2000, 3, "~n~~b~~h~JAILED ~r~%02d:%02d", PI[i][pJailTime] / 60, PI[i][pJailTime] % 60);
                if(!IsPlayerInRangeOfPoint(i, 15.0, JailPosition[0], JailPosition[1], JailPosition[2])) {
                    SetPlayerPos(i, JailPosition[0], JailPosition[1], JailPosition[2]);
                    SetPlayerInterior(i, JailInterior);
                    SetPlayerVirtualWorld(i, JailVirtualWorld);
                    SetSkinEx(i, 62);
                }
            } else {
                PI[i][pJailed] = 0;
                PI[i][pJailTime] = 0;
                SpawnPlayer(i);
                SetPlayerVirtualWorld(i, 0);
                SetPlayerInterior(i, 0);
                SetSkinEx(i, PI[i][pSkin]);
                SCM(i, COLOR_GREEN, "Вы освобождены из тюрьмы!");
                SAMf(COLOR_YELLOW, "[JAIL LOG] Игрок %s[%d] вышел с тьюрьмы", PN(i), i);
                
                new query[128], db_id;

                mysql_format(dbHandle, query, sizeof(query), "SELECT `ID` FROM `users` WHERE `Name` = '%e' LIMIT 1", PN(i));
                new Cache:result = mysql_query(dbHandle, query);
                if(cache_num_rows() > 0) {
                    cache_get_value_name_int(0, "ID", db_id);
                    cache_delete(result);

                    mysql_format(dbHandle, query, sizeof(query), "DELETE FROM `jail_info` WHERE `player_id` = %d", db_id);
                    mysql_query(dbHandle, query);
                } else {
                    cache_delete(result);
                }
            }
        }


OnPlayerConnect:
Pawn:
if(PI[playerid][pJailed] == 1) {
    SetTimerEx("DelayedJail", 1000, false, "i", playerid);
}


После авторизации игрока:
Pawn:
stock LoadPlayerJailInfo(playerid) {
    new query[128], playerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playerName, sizeof(playerName));
    
    mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `users` WHERE `Name` = '%e' LIMIT 1", playerName);
    new Cache:result = mysql_query(dbHandle, query);

    if(cache_num_rows() > 0) {
        new db_id;
        cache_get_value_name_int(0, "ID", db_id);

        cache_delete(result);

        mysql_format(dbHandle, query, sizeof(query), "SELECT * FROM `jail_info` WHERE `player_id` = %d LIMIT 1", db_id);
        result = mysql_query(dbHandle, query);

        if(cache_num_rows() > 0) {
            new jailed, jail_time;
            new jail_reason[128], jailer_name[24];

            cache_get_value_name_int(0, "jailed", jailed);
            cache_get_value_name_int(0, "jail_time", jail_time);
            cache_get_value_name(0, "jail_reason", jail_reason, sizeof(jail_reason));
            cache_get_value_name(0, "jailer_name", jailer_name, sizeof(jailer_name));

            if(jailed == 1 && jail_time > 0) {
                PI[playerid][pJailed] = 1;
                PI[playerid][pJailTime] = jail_time;

                new str[256];
                format(str, sizeof(str), "Вы вернулись в тюрьму. Оставшееся время: %d минут. Причина: %s", jail_time / 60, jail_reason);
                SCM(playerid, COLOR_RED, str);
                SetSkinEx(playerid, 62);

                SAMf(COLOR_YELLOW, "[JAIL LOG] Игрок %s[%d] вернулся в тьюрьму. Оставшееся время: %d минут. Причина: %s(Посадил: %s)", PN(playerid), playerid, jail_time / 60, jail_reason, jailer_name);
            }
        }
        cache_delete(result);
    } else {
        cache_delete(result);
    }
    return 1;
}
stock SavePlayerJailInfo(playerid) {
    if(!IsPlayerConnected(playerid)) return 0;

    new query[1042], db_id;
    new playerName[MAX_PLAYER_NAME], adminName[MAX_PLAYER_NAME];
    new reason[128] = "пидорас";

    GetPlayerName(playerid, playerName, sizeof(playerName));

    mysql_format(dbHandle, query, sizeof(query), "SELECT `ID` FROM `users` WHERE `Name` = '%e' LIMIT 1", playerName);
    new Cache:result = mysql_query(dbHandle, query);

    if(cache_num_rows() > 0) {
        cache_get_value_name_int(0, "ID", db_id);
        cache_delete(result);

        mysql_format(dbHandle, query, sizeof(query), "SELECT `jail_reason`, `jailer_name` FROM `jail_info` WHERE `player_id` = %d LIMIT 1", db_id);
        result = mysql_query(dbHandle, query);

        if(cache_num_rows() > 0) {
            cache_get_value_name(0, "jail_reason", reason, sizeof(reason));
            cache_get_value_name(0, "jailer_name", adminName, sizeof(adminName));
        }
        cache_delete(result);
        if(PI[playerid][pJailed] == 1) {
            mysql_format(dbHandle, query, sizeof(query), "REPLACE INTO `jail_info` (`player_id`,`PlayerName`, `jailed`, `jail_time`, `jail_reason`, `jailer_name`) VALUES (%d, '%e', 1, %d, '%e', '%e')",
                db_id, playerName, PI[playerid][pJailTime], reason, adminName);
        } else {
            mysql_format(dbHandle, query, sizeof(query), "DELETE FROM `jail_info` WHERE `player_id` = %d", db_id);
        }
        mysql_query(dbHandle, query);
        return 1;
    }
    cache_delete(result);
    return 0;
}

// если обходит наказание
Pawn:
stock CheckJailInfo(playerid)
{
    new query[256], ip[16];
    GetPlayerIp(playerid, ip, sizeof(ip));

    mysql_format(dbHandle, query, sizeof(query), "SELECT `Name`, `jail_time` FROM `users` u LEFT JOIN `jail_info` j ON u.ID = j.player_id WHERE `LastIP` = '%e' AND `jailed` = 1", ip);
    mysql_tquery(dbHandle, query, "OnCheckJailBan", "i", playerid);
    
    printf("%s| IP: %s", query, ip);
    return 1;
}
forward OnCheckJailBan(playerid);
public OnCheckJailBan(playerid)
{
    if(cache_num_rows() > 0)
    {
        new jailedName[MAX_PLAYER_NAME], jail_time;
        cache_get_value_name(0, "Name", jailedName);
        cache_get_value_name_int(0, "jail_time", jail_time);
        
        PI[playerid][pJailed] = 1;
        PI[playerid][pJailTime] = jail_time;

        SafeTeleport(playerid, JailPosition[0], JailPosition[1], JailPosition[2]);
        SetPlayerInterior(playerid, JailInterior);
        SetPlayerVirtualWorld(playerid, JailVirtualWorld);
        SetSkinEx(playerid, 62);

        SCM(playerid, COLOR_RED, "Вы были автоматически посажены в тьрьму. Обратитесь к администрации если это ошибка.");
        SAMf(COLOR_YELLOW, "%s[%d] автоматически посажен в тьюрму (Jailed: %d | Name: %s)", PN(playerid), playerid, jail_time, jailedName);
    }
}

Pawn:
MD:jail(playerid, params[]) {
    if(PI[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_RED, NO_DOSTUP_TEXT);
    if(!IsAdminAuthorized[playerid]) return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
    new targetid, time, reason[128];

    if(sscanf(params, "iis[128]", targetid, time, reason)) {
        SCM(playerid, COLOR_LIGHTRED, "[Ошибка] {ffffff}/jail [id] [время(минуты)] [причина]");
        return 1;
    }
    if(PI[targetid][pJailed]) {
        SCM(playerid, COLOR_RED, "[Ошибка] {ffffff}Игрок и так в тьюрьме!");
        return 1;
    }
    if(!IsPlayerConnected(targetid)) {
        SCM(playerid, COLOR_LIGHTRED, "[Ошибка] {ffffff}Указанный игрок не в сети!");
        return 1;
    }
    if(time < 1 || time > MAX_JAIL_TIME / 60) {
        SCMf(playerid, COLOR_RED, "Время тюрьмы должно быть от 1 до %d минут!", MAX_JAIL_TIME / 60);
        return 1;
    }

    time *= 60;

    PI[targetid][pJailed] = 1;
    PI[targetid][pJailTime] = time;

    SetPlayerPos(targetid, JailPosition[0], JailPosition[1], JailPosition[2]);
    
    
    SetPlayerInterior(targetid, JailInterior);
    SetPlayerVirtualWorld(targetid, JailVirtualWorld);
    SetSkinEx(targetid, 62);


    SCMAllf(COLOR_RED, "A: Администратор %s посадил %s в тюрьму на %d минут. Причина: %s", PN(playerid), PN(targetid), time / 60, reason);
    SCMf(targetid, COLOR_YELLOW, "Вы были посажены в тюрьму администратором %s на %d минут. Причина: %s", PN(playerid), time / 60, reason);
    
    
    new query[1042], db_id;

    mysql_format(dbHandle, query, sizeof(query), "SELECT `ID` FROM `users` WHERE `Name` = '%e' LIMIT 1", PN(targetid));
    new Cache:result = mysql_query(dbHandle, query);

    if(cache_num_rows() > 0) {
        cache_get_value_name_int(0, "ID", db_id);
        cache_delete(result);

        mysql_format(dbHandle, query, sizeof(query), "REPLACE INTO `jail_info` (`player_id`, `PlayerName`, `jailed`, `jail_time`, `jail_reason`, `jailer_name`) VALUES (%d, '%e', 1, %d, '%e', '%e')",
            db_id,PN(targetid) , time, reason, PN(targetid));
        mysql_query(dbHandle, query);
    } else {
        cache_delete(result);
    }
    return 1;
}
CMD:unjail(playerid, params[]) {
    if(PI[playerid][pAdmin] < 3) return SCM(playerid, COLOR_RED, NO_DOSTUP_TEXT);
    if(!IsAdminAuthorized[playerid]) return SCM(playerid, COLOR_GREY, NO_DUTY_TEXT);
    new targetid;

    if(sscanf(params, "i", targetid)) {
        SCM(playerid, COLOR_YELLOW, "[Ошибка] {ffffff}/unjail [id]");
        return 1;
    }
    if(!IsPlayerConnected(targetid)) {
        SCM(playerid, COLOR_RED, "[Ошибка] {ffffff}Игрок не в сети!");
        return 1;
    }
    if(PI[targetid][pJailed] == 0) {
        SCM(playerid, COLOR_RED, "[Ошибка] {ffffff}Игрок не в тьюрьме!");
        return 1;
    }
    PI[targetid][pJailed] = 0;
    PI[targetid][pJailTime] = 0;
    SetPlayerVirtualWorld(targetid, 0);
    SetPlayerInterior(targetid, 0);
    SetSkinEx(targetid, PI[playerid][pSkin]);
    SpawnPlayer(targetid);

    SCMAllf(COLOR_LIGHTRED, "[A] Администратор %s освободил %s из тюрьмы", PN(playerid), PN(targetid));
    SCMf(targetid, COLOR_WHITE, "Вы были освобождены из тюрьмы администратором %s", PN(playerid));
    
    new query[128], db_id;

    mysql_format(dbHandle, query, sizeof(query), "SELECT `ID` FROM `users` WHERE `name` = '%e' LIMIT 1", PN(targetid));
    new Cache:result = mysql_query(dbHandle, query);

    if(cache_num_rows() > 0) {
        cache_get_value_name_int(0, "ID", db_id);
        cache_delete(result);

        mysql_format(dbHandle, query, sizeof(query), "DELETE FROM `jail_info` WHERE `player_id` = %d", db_id);
        mysql_query(dbHandle, query);
    } else {
        cache_delete(result);
    }
    return 1;
}
 
Пользователь
Регистрация
2 Май 2025
Сообщения
31
2.14. Запрещено флудить, оффтопить, заниматься флеймом. | Для подобных сообщений, используйте BB-код
фу
 
Пользователь
Регистрация
2 Май 2025
Сообщения
31
2.14. Запрещено флудить, оффтопить, заниматься флеймом. | Для подобных сообщений, используйте BB-код
што смешнся у меня в это время потекло
 
Сверху