Merlin
Умник
Верху мода:
PHP:
enum pInfo
{
pJailTime,
pMember,
pLeader,
pArrested,
pJailed,
pCash,
}
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
forward Float:GetDistanceBetweenPlayers(p1,p2);
forward ServerGivePlayerMoney(playerid, money);
forward jailtimer();
forward OOCNews(color,const string[]);
new DengiTime[MAX_PLAYERS];
new gNews[MAX_PLAYERS];
new PlayerInfo[MAX_PLAYERS][pInfo];
#define COLOR_GREY 0xCCCCCAA
#define COLOR_RED 0xFB0000FF //красный
#define COLOR_LIGHTBLUE 0x33CCFFA //голубой
#define COLOR_LIGHTRED 0xFF0000FF
#define cmd(%1) if((strcmp(cmdtext,%1,true,strlen(%1))==0)&&(((cmdtext[strlen(%1)]==0)&&(d%1(playerid,"")))||((cmdtext[strlen(%1)]==32)&&(d%1(playerid,cmdtext[strlen(%1)+1]))))) return 1
После этого ищем public OnPlayerCommandText(playerid, cmdtext[]) и туда вставляем:
PHP:
new WantedPoints[MAX_PLAYERS];
new WantLawyer[MAX_PLAYERS];
new giveplayerid;
new string[256];
new cmd[256],tmp[256];
new idx;
new glob973C[200];
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
new var4[256];
new var8 = 0;
new var2[24];
new gTeam[MAX_PLAYERS];
new OnDuty[MAX_PLAYERS];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/arrest", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gTeam[playerid] == 7 || (playerid)) //в место 7 поставите на свое...который скин может использовать у меня это копы.
{
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
{
SendClientMessage(playerid, COLOR_GREY, " Вы не обязаные!");
return 1;
}
if(PlayerToPoint(3.2,playerid,-1604.7903,719.2490,11.8317))
{
SendClientMessage(playerid, COLOR_GREY, " Вы не около тюрьмы!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_RED, " Подсказка: /arrest [ID] [время] [штраф]");
return 1;
}
if(strval(tmp) == playerid) {
SendClientMessage(playerid, COLOR_RED, "Вы не можете себя арестовать");
return 1;
}
giveplayerid = strval(tmp);
if(!IsPlayerConnected(giveplayerid))
{
format(string, sizeof(string), "ID (%d) Не подключен", giveplayerid);
SendClientMessage(playerid, 0xFF9900AA, string);
return 1;
}
new pname[24];
GetPlayerName(giveplayerid, pname, 24);
if(GetPlayerWantedLevel(giveplayerid) <= 2)
{
format(string, sizeof(string), "%s(%d) Ты не можешь арестовать нерозыскомого игрока",pname,giveplayerid);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
if(GetDistanceBetweenPlayers(playerid,giveplayerid) > 5) {
format(string, sizeof(string), "%s(%d) Слишком далеко. Ты не можешь его арестовать",pname,giveplayerid);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
if(IsPlayerInAnyVehicle(giveplayerid)) {
format(string, sizeof(string), "%s(%d) Сидит в авто. Вытащи его из авто прежде чем использовать эту комманду.",pname,giveplayerid);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
SetPlayerVirtualWorld(giveplayerid,0);
if(GetPlayerWantedLevel(playerid) >=1) {
SendClientMessage(playerid,COLOR_RED,"Вы не можете использовать эту команду, если Вы разыскиваетесь полицией");
return 1;
}
if(glob973C[var8] == 1)
{
format(var4, 256, "%s(%d) уже отбывает срок.", var2, var8);
SendClientMessage(playerid, 0xFF9900AA, var4);
return 1;
}
new playa,time,price;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
time= strval(tmp);
if(time < 1 || time > 5) { SendClientMessage(playerid, COLOR_GREY, " Время от 1 до 5!"); return 1; }
tmp = strtok(cmdtext, idx);
price = strval(tmp);
if(price < 10000 || price > 50000) { SendClientMessage(playerid, COLOR_GREY, " Штраф от $10000 до 50000!"); return 1; }
if(IsPlayerConnected(playa))
{
if(GetDistanceBetweenPlayers(playerid,playa) < 5)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Вы арестовали %s на %d минут, штраф: $%d!", giveplayer,time,price);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
ServerGivePlayerMoney(playa, -price);
format(string, sizeof(string), "%s арестовал тебя на %d минут, штраф: $%d", sendername,time,price);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
ResetPlayerWeapons(playa);
if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
{
format(string, sizeof(string), "<< Полицейский : %s арестовал подозреваемого %s >>", sendername, giveplayer);
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
{
format(string, sizeof(string), "<< Федеральное Бюро Расследования : %s арестовал подозреваемого %s >>", sendername, giveplayer);
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
{
format(string, sizeof(string), "<< Военный : %s арестовал подозреваемого %s >>", sendername, giveplayer);
OOCNews(COLOR_LIGHTRED, string);
}
SetPlayerInterior(playa, 10);
SetPlayerPos(playa,219.5246,111.0973,999.0156);
PlayerInfo[playa][pJailTime] = time * 60;
PlayerInfo[playa][pJailed] = 1;
PlayerInfo[playa][pArrested] += 1;
WantedPoints[playa] = 0;
WantLawyer[playa] = 1;
TogglePlayerControllable(playa, 1);
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Неправильный ID!.");
return 1;
}
}
else
{
SendClientMessage(playerid, 0xFF9900AA, " Только копы могут использовать эту команду!");
return 1;
}
}//not connected
return 1;
}
Примерно так должен быть public:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
new WantedPoints[MAX_PLAYERS];
new WantLawyer[MAX_PLAYERS];
new giveplayerid;
new string[256];
new cmd[256],tmp[256];
new idx;
new glob973C[200];
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
new var4[256];
new var8 = 0;
new var2[24];
new gTeam[MAX_PLAYERS];
new OnDuty[MAX_PLAYERS];
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/arrest", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gTeam[playerid] == 7 || (playerid)) //в место 7 поставите на свое...который скин может использовать у меня это копы.
{
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
{
SendClientMessage(playerid, COLOR_GREY, " Вы не обязаные!");
return 1;
}
if(PlayerToPoint(3.2,playerid,-1604.7903,719.2490,11.8317))
{
SendClientMessage(playerid, COLOR_GREY, " Вы не около тюрьмы!");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_RED, " Подсказка: /arrest [ID] [время] [штраф]");
return 1;
}
if(strval(tmp) == playerid) {
SendClientMessage(playerid, COLOR_RED, "Вы не можете себя арестовать");
return 1;
}
giveplayerid = strval(tmp);
if(!IsPlayerConnected(giveplayerid))
{
format(string, sizeof(string), "ID (%d) Не подключен", giveplayerid);
SendClientMessage(playerid, 0xFF9900AA, string);
return 1;
}
new pname[24];
GetPlayerName(giveplayerid, pname, 24);
if(GetPlayerWantedLevel(giveplayerid) <= 2)
{
format(string, sizeof(string), "%s(%d) Ты не можешь арестовать нерозыскомого игрока",pname,giveplayerid);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
if(GetDistanceBetweenPlayers(playerid,giveplayerid) > 5) {
format(string, sizeof(string), "%s(%d) Слишком далеко. Ты не можешь его арестовать",pname,giveplayerid);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
if(IsPlayerInAnyVehicle(giveplayerid)) {
format(string, sizeof(string), "%s(%d) Сидит в авто. Вытащи его из авто прежде чем использовать эту комманду.",pname,giveplayerid);
SendClientMessage(playerid,COLOR_RED,string);
return 1;
}
SetPlayerVirtualWorld(giveplayerid,0);
if(GetPlayerWantedLevel(playerid) >=1) {
SendClientMessage(playerid,COLOR_RED,"Вы не можете использовать эту команду, если Вы разыскиваетесь полицией");
return 1;
}
if(glob973C[var8] == 1)
{
format(var4, 256, "%s(%d) уже отбывает срок.", var2, var8);
SendClientMessage(playerid, 0xFF9900AA, var4);
return 1;
}
new playa,time,price;
playa = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
time= strval(tmp);
if(time < 1 || time > 5) { SendClientMessage(playerid, COLOR_GREY, " Время от 1 до 5!"); return 1; }
tmp = strtok(cmdtext, idx);
price = strval(tmp);
if(price < 10000 || price > 50000) { SendClientMessage(playerid, COLOR_GREY, " Штраф от $10000 до 50000!"); return 1; }
if(IsPlayerConnected(playa))
{
if(GetDistanceBetweenPlayers(playerid,playa) < 5)
{
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Вы арестовали %s на %d минут, штраф: $%d!", giveplayer,time,price);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
ServerGivePlayerMoney(playa, -price);
format(string, sizeof(string), "%s арестовал тебя на %d минут, штраф: $%d", sendername,time,price);
SendClientMessage(playa, COLOR_LIGHTBLUE, string);
ResetPlayerWeapons(playa);
if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
{
format(string, sizeof(string), "<< Полицейский : %s арестовал подозреваемого %s >>", sendername, giveplayer);
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
{
format(string, sizeof(string), "<< Федеральное Бюро Расследования : %s арестовал подозреваемого %s >>", sendername, giveplayer);
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
{
format(string, sizeof(string), "<< Военный : %s арестовал подозреваемого %s >>", sendername, giveplayer);
OOCNews(COLOR_LIGHTRED, string);
}
SetPlayerInterior(playa, 10);
SetPlayerPos(playa,219.5246,111.0973,999.0156);
PlayerInfo[playa][pJailTime] = time * 60;
PlayerInfo[playa][pJailed] = 1;
PlayerInfo[playa][pArrested] += 1;
WantedPoints[playa] = 0;
WantLawyer[playa] = 1;
TogglePlayerControllable(playa, 1);
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Неправильный ID!.");
return 1;
}
}
else
{
SendClientMessage(playerid, 0xFF9900AA, " Только копы могут использовать эту команду!");
return 1;
}
}//not connected
return 1;
}
return 0;
}
И после этого добавляем функции:
PHP:
DengiTime[playerid] = 15;
if(money > 0)
{
PlayerInfo[playerid][pCash] += money;
GivePlayerMoney(playerid,money);
}
else
{
GivePlayerMoney(playerid,money);
PlayerInfo[playerid][pCash] += money;
}
return 1;
}
public jailtimer()
{
for(new i = 0; i < MAX_PLAYERS; i++) {
if(PlayerInfo[i][pJailed] > 0) {
if(PlayerInfo[i][pJailTime] > 0) {
PlayerInfo[i][pJailTime]--;
}
if(PlayerInfo[i][pJailTime] <= 0) {
PlayerInfo[i][pJailTime] = 0;
PlayerInfo[i][pJailed] = 0;
switch(random(2)) { //где 2 там меняем скок камер мы создали.по счету мы щяс создали 2. а это и есть case 0 , case 1
case 0: //это 1 тюрьма
{
SetPlayerInterior(i, 0); //тут интейнер
SetPlayerPos(i, X, Y, Z); //тут координаты
return 1;
}
case 1: //это у нас 2 тюрьма.
{
SetPlayerInterior(i, 0); //тут интейнер
SetPlayerPos(i, X, Y, Z); //тут координаты
return 1;
}
}
}
}
}
return 1;
}
После этого ищем public OnGameModeInit и туда вставляем:
PHP:
SetTimer("jailtimer", 1000, 1);
Вырезано с мода
