• Страница 1 из 1
  • 1
Модератор форума: [east_side]_trane, drifter-dron, valych, admin  
pawno урок тюрьма для любого мода 100% рабочий лично делал
adminДата: Воскресенье, 13.11.2011, 19:35:04 | Сообщение # 1

Группа: Администраторы
Сообщений: 3869
как помогал aksel с рандомным тюрьмой решил выложить урок по тюрьме с рандомным спавном , что и aksel помогал.

Верху мода:
Code
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[]) и туда вставляем:
Code
    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:
Code
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;
}

И после этого добавляем функции:
Code
strtok(const string[], &index)
{
  new length = strlen(string);
  while ((index < length) && (string[index] <= ' '))
  {
   index++;
  }

  new offset = index;
  new result[20];
  while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  {
   result[index - offset] = string[index];
   index++;
  }
  result[index - offset] = EOS;
  return result;
}

public Float:GetDistanceBetweenPlayers(p1,p2){
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2)){
return -1.00;
}
GetPlayerPos(p1,x1,y1,z1);
GetPlayerPos(p2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));

}

ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
  new pos = 0;
  while (text[pos] < 0x21)
  {
   if (text[pos] == 0) return INVALID_PLAYER_ID;
   pos++;
  }
  new userid = INVALID_PLAYER_ID;
  if (IsNumeric(text[pos]))
  {
   userid = strval(text[pos]);
   if (userid >=0 && userid < MAX_PLAYERS)
   {
    if(!IsPlayerConnected(userid))
    {
     userid = INVALID_PLAYER_ID;
    }
    else
    {
     return userid;
    }
   }
  }
  new len = strlen(text[pos]);
  new count = 0;
  new name[MAX_PLAYER_NAME];
  for (new i = 0; i < MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
   {
    GetPlayerName(i, name, sizeof (name));
    if (strcmp(name, text[pos], true, len) == 0)
    {
     if (len == strlen(name))
     {
      return i;

     }
     else // Partial match
     {
      count++;
      userid = i;
     }
    }
   }
  }
  if (count != 1)
  {
   if (playerid != INVALID_PLAYER_ID)
   {
    if (count)
    {
     SendClientMessage(playerid, 0xFF0000AA, "Найдено несколько игроков.");
    }
    else
    {
     SendClientMessage(playerid, 0xFF0000AA, "Не найдено соответствия.");
    }
   }
   userid = INVALID_PLAYER_ID;
  }
  return userid;
}

public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}

IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++) {
     if (string[i] > '9' || string[i] < '0') {
return 0;
}
}

return 1;
}

public OOCNews(color,const string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!gNews[i])
{
SendClientMessage(i, color, string);
}
}
}
}

public ServerGivePlayerMoney(playerid,money)
{
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 и туда вставляем:
Code
SetTimer("jailtimer", 1000, 1);

где 1000 - это у нас стандартно игрок будет сидеть 1 мин в тюрьме!
Делал в видео FS и так же скинул функцию
Code
strtok(const string[], &index)
если кто будет делать в Fs то проблем не будет!
Будут проблема пишите или не понятки :)
Автор:26_RUSSS


zm-jail.ru

Разработка сайта samp-pawno.ru


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

Верху мода:
Code
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[]) и туда вставляем:
Code
    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:
Code
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;
}

И после этого добавляем функции:
Code
strtok(const string[], &index)
{
  new length = strlen(string);
  while ((index < length) && (string[index] <= ' '))
  {
   index++;
  }

  new offset = index;
  new result[20];
  while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  {
   result[index - offset] = string[index];
   index++;
  }
  result[index - offset] = EOS;
  return result;
}

public Float:GetDistanceBetweenPlayers(p1,p2){
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2)){
return -1.00;
}
GetPlayerPos(p1,x1,y1,z1);
GetPlayerPos(p2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));

}

ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
  new pos = 0;
  while (text[pos] < 0x21)
  {
   if (text[pos] == 0) return INVALID_PLAYER_ID;
   pos++;
  }
  new userid = INVALID_PLAYER_ID;
  if (IsNumeric(text[pos]))
  {
   userid = strval(text[pos]);
   if (userid >=0 && userid < MAX_PLAYERS)
   {
    if(!IsPlayerConnected(userid))
    {
     userid = INVALID_PLAYER_ID;
    }
    else
    {
     return userid;
    }
   }
  }
  new len = strlen(text[pos]);
  new count = 0;
  new name[MAX_PLAYER_NAME];
  for (new i = 0; i < MAX_PLAYERS; i++)
  {
   if (IsPlayerConnected(i))
   {
    GetPlayerName(i, name, sizeof (name));
    if (strcmp(name, text[pos], true, len) == 0)
    {
     if (len == strlen(name))
     {
      return i;

     }
     else // Partial match
     {
      count++;
      userid = i;
     }
    }
   }
  }
  if (count != 1)
  {
   if (playerid != INVALID_PLAYER_ID)
   {
    if (count)
    {
     SendClientMessage(playerid, 0xFF0000AA, "Найдено несколько игроков.");
    }
    else
    {
     SendClientMessage(playerid, 0xFF0000AA, "Не найдено соответствия.");
    }
   }
   userid = INVALID_PLAYER_ID;
  }
  return userid;
}

public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}

IsNumeric(const string[])
{
for (new i = 0, j = strlen(string); i < j; i++) {
     if (string[i] > '9' || string[i] < '0') {
return 0;
}
}

return 1;
}

public OOCNews(color,const string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!gNews[i])
{
SendClientMessage(i, color, string);
}
}
}
}

public ServerGivePlayerMoney(playerid,money)
{
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 и туда вставляем:
Code
SetTimer("jailtimer", 1000, 1);

где 1000 - это у нас стандартно игрок будет сидеть 1 мин в тюрьме!
Делал в видео FS и так же скинул функцию
Code
strtok(const string[], &index)
если кто будет делать в Fs то проблем не будет!
Будут проблема пишите или не понятки :)
Автор:26_RUSSS

Автор - admin
Дата добавления - 13.11.2011 в 19:35:04
HanterДата: Пятница, 01.03.2013, 20:57:56 | Сообщение # 2

Группа: Пользователи
Сообщений: 7
Если  я буду делать для LSPD И FBI как зделать чтоб  они садили не в одно КПЗ а вразные FBI в своё а LSPD в своё?
 
СообщениеЕсли  я буду делать для LSPD И FBI как зделать чтоб  они садили не в одно КПЗ а вразные FBI в своё а LSPD в своё?

Автор - Hanter
Дата добавления - 01.03.2013 в 20:57:56
adminДата: Вторник, 09.04.2013, 19:01:19 | Сообщение # 3

Группа: Администраторы
Сообщений: 3869
Цитата (Hanter)
Если  я буду делать для LSPD И FBI как зделать чтоб  они садили не в одно КПЗ а вразные FBI в своё а LSPD в своё?
если я не ошибаюсь то там уже все есть зачем лишний раз вставлять этот код? чтобы заморочек больше было?


zm-jail.ru

Разработка сайта samp-pawno.ru


 
Сообщение
Цитата (Hanter)
Если  я буду делать для LSPD И FBI как зделать чтоб  они садили не в одно КПЗ а вразные FBI в своё а LSPD в своё?
если я не ошибаюсь то там уже все есть зачем лишний раз вставлять этот код? чтобы заморочек больше было?

Автор - admin
Дата добавления - 09.04.2013 в 19:01:19
roomero2rvДата: Среда, 18.02.2015, 16:13:34 | Сообщение # 4

Группа: Пользователи
Сообщений: 2
Ребята кто нибудь может готовый скрипт скинуть, не получаеться скомпилировать плз!!!!
Очень нужен
 
СообщениеРебята кто нибудь может готовый скрипт скинуть, не получаеться скомпилировать плз!!!!
Очень нужен

Автор - roomero2rv
Дата добавления - 18.02.2015 в 16:13:34
adminДата: Среда, 11.03.2015, 06:25:12 | Сообщение # 5

Группа: Администраторы
Сообщений: 3869
Цитата roomero2rv ()
Ребята кто нибудь может готовый скрипт скинуть, не получаеться скомпилировать плз!!!!
Очень нужен

можешь скачать мой мод sf-gang v1.7 там можешь вырезать =)


zm-jail.ru

Разработка сайта samp-pawno.ru


 
Сообщение
Цитата roomero2rv ()
Ребята кто нибудь может готовый скрипт скинуть, не получаеться скомпилировать плз!!!!
Очень нужен

можешь скачать мой мод sf-gang v1.7 там можешь вырезать =)

Автор - admin
Дата добавления - 11.03.2015 в 06:25:12
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
21:21:48
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2025

vkontakte :samp-pawno.ru: