Как сделать розыск в самп

Узнай, как поставить розыск в SAMP без геморроя: секретные команды, лайфхаки и парочку багов, чтобы все игроки тебя боялись

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Розыск (Wanted Level) — один из ключевых игровых механизмов в любом RP-сервере SAMP. Он отвечает за логику преследования игрока полицией, начисление «звёзд» и взаимодействие с фракцией LSPD/FBI/Army. Ниже приведён подробный алгоритм создания и настройки системы розыска: от готовых фильтров в панели администратора до самостоятельного скриптинга на Pawn.

Быстрый способ: включить стандартный Wanted через RCON или графическую панель

Если сервер использует SA-MP RP (например, Y-INI / MySQL + YSF), в большинстве сборок уже есть готовые команды.

  • /setwanted [ID] [0-6] — установить уровень розыска сразу.
  • /gotowanted [ID] — телепортироваться к игроку с розыском.
  • /uncuff [ID] — снять наручники и автоматически снизить уровень до 0.

Для этого достаточно иметь RCON-админ 3+.
Важно: при вводе /setwanted 5 3 сервер отправит SendClientMessageToAll вида
Администратор установил игроку PlayerName 3 звезды розыска!.

Средний способ: настройка через файлы конфигурации

Редактируем server.cfg

Добавьте строки:

enable_zone_names 1
useplayerped_anims 1

Правим gamemodes/YourGM.pwn

Если нужно, чтобы при убийстве NPC или попадании в зону Ammu-Nation автоматически повышался розыск:

public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
{
 if(IsPlayerNPC(damagedid))
 {
 new wid = GetPlayerWantedLevel(playerid);
 SetPlayerWantedLevel(playerid, wid + 1); // +1 звезда
 }
 return 1;
}

Сложный способ: полностью кастомная система розыска с MySQL

Создаём таблицу в базе данных

CREATE TABLE `players_wanted` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `player_uid` int(11) NOT NULL,
 `stars` tinyint(1) NOT NULL DEFAULT 0,
 `reason` varchar(128) DEFAULT NULL,
 `issue_time` datetime DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Функция повышения розыска (Pawn)

stock AddPlayerWanted(playerid, stars, reason[])
{ new query[256], uid = GetPlayerUserID(playerid);
 format(query, sizeof(query),
 "UPDATE `players_wanted` SET `stars`=%d, `reason`='%s', `issue_time`=NOW WHERE `player_uid`=%d",
 stars, reason, uid);
 mysql_tquery(connectionHandle, query);
 SetPlayerWantedLevel(playerid, stars);

 new str[128];
 format(str, sizeof(str), "{FF0000}[WANTED] %s получил %d звёзд причина: %s", GetPlayerNameEx(playerid), stars, reason);
 SendClientMessageToAll(COLOR_LIGHTRED, str);
 return 1;
}

Автоматическое снятие при смерти/аресте

public OnPlayerDeath(playerid, killerid, reason)

{ new wid = GetPlayerWantedLevel(playerid);
 if(wid > 0)
 {
 AddPlayerWanted(playerid, 0, "Смерть/арест"); // обнуляем
 }
}

Визуализация на карте (Blips & 3D-текст)

Для удобства полиции можно добавить красный маркер над игроком:

new blip[MAX_PLAYERS];

stock CreateWantedBlip(playerid)
{
 if(!IsPlayerConnected(playerid)) return;
 blip[playerid] = CreateBlipForPlayer(playerid, 0, 0, 0, 0, 2); // sprite 0 = red marker
 SetBlipColor(blip[playerid], 0xFF0000FF);
}

stock DeleteWantedBlip(playerid)
{
 if(blip[playerid] != INVALID_BLIP)
 {
 DestroyBlip(blip[playerid]);
 blip[playerid] = INVALID_BLIP;
 }
}

Полезные команды для теста

  1. /checkwanted [ID] — показать текущий уровень розыска.
  2. /wantedlist — список всех разыскиваемых.
  3. /payticket [сумма] — выплатить штраф и снять розыск (если 1-2 звезды).

Распространённые ошибки и их решения

Ошибка Причина Решение
Звёзды не сбрасываются при /uncuff Пропущен ResetPlayerWantedLevel Добавить SetPlayerWantedLevel(playerid, 0);
Очень высокий пинг при массовом розыске Частые SendClientMessageToAll Использовать SendClientMessageToFaction (для LSPD/FBI)
Кастомные blips исчезают после респауна Не вызывается CreateWantedBlip в OnPlayerSpawn Добавить вызов функции в OnPlayerSpawn

Создание качественной системы розыска — это баланс между геймдизайном, производительностью и удобством для игроков. Начните с простых команд и постепенно внедряйте кастомные механики: сессионные рекорды, награды за поимку, уровни опасности. Помните: хороший розыск делает RP-жизнь полиции и преступников интересной!