Пользователь
- Регистрация
- 2 Апр 2025
- Сообщения
- 7
- Автор темы
- #1
В Начало мода:
В секундный таймер если у вас есть:
OnPlayerConnect:
После авторизации игрока:
// если обходит наказание
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;
}