16:33
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: Alcoholik  
[FAQ] Создание новой категории лицензии
DiSEДата: Вторник, 25.05.2010, 10:36 | Сообщение # 1
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
Сейчас попробуем создать новую категорию лицензии. В моём примере это лицензия на грузовые автомобили
Начнём.

Находим

Code
enum pInfo

там ищем
Code
pCarLic,

После него добавляем название вашей лицензии, пусть это будет
Code
pGruzLic,

Идём в
Code
public OnPlayerConnect(playerid)

Там находим
Code
PlayerInfo[playerid][pCarLic] = 0;

После него ставим
Code
PlayerInfo[playerid][pGruzLic] = 0;

Идём в
Code
public SetPlayerUnjail()

найдём там
Code
if(PlayerInfo[i][pCarLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
     {
      if(TakingLesson[i] == 1) { }
         else { RemovePlayerFromVehicle(i); }
     }

После него вставляем
Code
if(PlayerInfo[i][pGruzLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
     {
      if(TakingLesson[i] == 1) { }
         else { RemovePlayerFromVehicle(i); }
     }

У вас должно получится так
Code
if(PlayerInfo[i][pCarLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
     {
      if(TakingLesson[i] == 1) { }
         else { RemovePlayerFromVehicle(i); }
     }
     if(PlayerInfo[i][pGruzLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
     {
      if(TakingLesson[i] == 1) { }
         else { RemovePlayerFromVehicle(i); }
     }

Проехали.Идём дальше.
Вбиваем в поиск

Code
public OnPlayerRegister(playerid, password[])

ниже находим
Code
format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);

И после этого вставляем
Code
format(var, 32, "GruzLic=%d\n",PlayerInfo[playerid][pGruzLic]);fwrite(hFile, var);

Ищем
Code
public OnPlayerUpdate(playerid)

Там так же находим
Code
format(var, 32, "CarLic=%d\n",PlayerInfo[playerid][pCarLic]);fwrite(hFile, var);

Ниже него пишите
Code
format(var, 32, "GruzLic=%d\n",PlayerInfo[playerid][pGruzLic]);fwrite(hFile, var);

Идём потом в

Code
public OnPlayerLogin(playerid,password[])

Ищем там
Code
if( strcmp( key , "CarLic" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCarLic] = strval( val ); }

так же вставляем после него
Code
if( strcmp( key , "GruzLic" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pGruzLic] = strval( val ); }

Находим команду /givelicense
Ищем там

Code
if(strcmp(x_nr,"driving",true) == 0)
     {
               tmp = strtok(cmdtext, idx);
      if(!strlen(tmp))
      {
          SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givelicense driverslicense [playerid/PartOfName]");
          return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if(IsPlayerConnected(giveplayerid))
      {
          if(giveplayerid != INVALID_PLAYER_ID)
          {
              GetPlayerName(playerid, sendername, sizeof(sendername));
              GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                 format(string, sizeof(string), "* You've given a Drivers License to %s.",giveplayer);
              SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
              format(string, sizeof(string), "* Instructor %s has given you a Drivers License.",sendername);
              SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
              PlayerInfo[giveplayerid][pCarLic] = 1;
              return 1;
             }
      }
      else
      {
          SendClientMessage(playerid, COLOR_GREY, "   That player is Offline !");
          return 1;
      }
     }

Добавлено (25.05.2010, 10:28)
---------------------------------------------
И после него добавляем

Code
if(strcmp(x_nr,"Gruz",true) == 0) // Здесь можете написать то что будете писать при выдаче лицензии
     {
               tmp = strtok(cmdtext, idx);
      if(!strlen(tmp))
      {
          SendClientMessage(playerid, COLOR_WHITE, "Используйте: /givelicense gruz [playerid/PartOfName]");
          return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if(IsPlayerConnected(giveplayerid))
      {
          if(giveplayerid != INVALID_PLAYER_ID)
          {
              GetPlayerName(playerid, sendername, sizeof(sendername));
              GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                 format(string, sizeof(string), "* Вам выдали лицензию на вождение грузовых автомобилей %s.",giveplayer);
              SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
              format(string, sizeof(string), "* Инструктор %s выдал лицензию на вождение грузовых автомобилей.",sendername);
              SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
              PlayerInfo[giveplayerid][pGruzLic] = 1;
              return 1;
             }
      }
      else
      {
          SendClientMessage(playerid, COLOR_GREY, "   That player is Offline !");
          return 1;
      }
     }

Дальше находим команду /take
Ниже ищите

Code
if(strcmp(x_nr,"driving",true) == 0)
     {
         tmp = strtok(cmdtext, idx);
      if(!strlen(tmp)) {
       SendClientMessage(playerid, COLOR_WHITE, "Используйте: /take drivinglicense [playerid/PartOfName]");
       return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if(IsPlayerConnected(giveplayerid))
      {
          if(giveplayerid != INVALID_PLAYER_ID)
          {
              if (ProxDetectorS(8.0, playerid, giveplayerid))
        {
               format(string, sizeof(string), "* You have taken away %s's Drivers License.", giveplayer);
               SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
               format(string, sizeof(string), "* Officer %s has taken away your Drivers License.", sendername);
               SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
               PlayerInfo[giveplayerid][pCarLic] = 0;
        }
        else
        {
            SendClientMessage(playerid, COLOR_GREY, "   That player is not near you !");
            return 1;
        }
          }
      }
      else
      {
          SendClientMessage(playerid, COLOR_GREY, "   That player is Offline !");
          return 1;
      }
     }

Там же ниже добавляйте

Code
if(strcmp(x_nr,"Gruz",true) == 0)// Здесь можете написать то что будете писать когда будете отбирать лицензию
     {
         tmp = strtok(cmdtext, idx);
      if(!strlen(tmp)) {
       SendClientMessage(playerid, COLOR_WHITE, "Используйте: /take gruz [playerid/PartOfName]");
       return 1;
      }
      giveplayerid = ReturnUser(tmp);
      if(IsPlayerConnected(giveplayerid))
      {
          if(giveplayerid != INVALID_PLAYER_ID)
          {
              if (ProxDetectorS(8.0, playerid, giveplayerid))
        {
               format(string, sizeof(string), "* You have taken away %s's gruz License.", giveplayer);
               SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
               format(string, sizeof(string), "* Officer %s has taken away your gruz License.", sendername);
               SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
               PlayerInfo[giveplayerid][pGruzLic] = 0;
        }
        else
        {
            SendClientMessage(playerid, COLOR_GREY, "   That player is not near you !");
            return 1;
        }
          }
      }
      else
      {
          SendClientMessage(playerid, COLOR_GREY, "   That player is Offline !");
          return 1;
      }
     }

Теперь пишем в поиске /licenses
Видим строчку

Code
if(PlayerInfo[playerid][pGunLic]) { text5 = "Passed"; } else { text5 = "Not Passed"; }

после неё вставляем
Code
if(PlayerInfo[playerid][pGruzLic]) { text6 = "Passed"; } else { text6 = "Not Passed"; }

И выше где

Code
new text5[20];

Пишите под ним
Code
new text6[20];

ниже где

Code
format(string, sizeof(string), "** Weapon License: %s.", text5);
SendClientMessage(playerid, COLOR_GREY, string);

пишите
Code
format(string, sizeof(string), "** Лицензия на грузовые авто: %s.", text6);
SendClientMessage(playerid, COLOR_GREY, string);

Потом идём ниже и видим команду /showlicenses
Опять же где
Code
new text5[20];

Добавляем
Code
new text6[20];

И после
Code
if(PlayerInfo[playerid][pGunLic]) { text5 = "Passed"; } else { text5 = "Not Passed"; }

Ниже пишем
Code
if(PlayerInfo[playerid][pGruzLic]) { text6 = "Passed"; } else { text6 = "Not Passed"; }

Ещё ниже после

Code
format(string, sizeof(string), "** Weapon License: %s.", text5);
SendClientMessage(giveplayerid, COLOR_GREY, string);

Пишем
Code
format(string, sizeof(string), "** Лицензия на грузовые авто: %s.", text6);
SendClientMessage(giveplayerid, COLOR_GREY, string);

____

Всё почти сделано. Осталось сделать только проверку на грузовые авто. Для этого создаём новый forward
Находим

Code
forward IsABoat(carid);

Ниже добавляем
Code
forward IsAGruz(carid);

В конце мода создаём такой паблик

Code
public IsAGruz(carid)
{
     new gruz = GetVehicleModel(carid);
  if(gruz==578||gruz==455||gruz==403||gruz==582||gruz==514||gruz==515||gruz==440||gruz==456||gruz==573||gruz==500||gruz==470||gruz==505||gr uz==495)
  {
   return 1;
  }
  return 0;
}

Здесь мои ID грузовых машин. Можете вставить свои. Только не порядковые ID, а которые используете в команде /veh, тоесть которые здесь http://wiki.sa-mp.com/wiki/Category:Vehicle

Ну вот и всё. Проверяйте. У меня всё получилось. Если есть вопросы пишите в теме.
Отдельное спасибо Scandal'у за созданную лицензию на мотоциклы. По его примеру была создана данная тема.

Добавлено (25.05.2010, 10:36)
---------------------------------------------
Отпишите если что не правильно

ИвентДата: Вторник, 25.05.2010, 10:49 | Сообщение # 2
Местный
Группа: I'm V.I.P.
Сообщений: 610
Награды: 65
Город: ?
Замечания: 100%
Статус:
EnErGiZeR, Маладес yes Хоть какие-то факи делаешь. Лови плюсеги new_russian


Банец.
stas221Дата: Вторник, 25.05.2010, 10:54 | Сообщение # 3
Новенький
Группа: Продвинутые
Сообщений: 61
Награды: 1
Город: Ростов-на-Дону
Репутация: -28
Замечания: 60%
Статус:
++++++,вам гарантирован
VanoProGДата: Вторник, 25.05.2010, 11:23 | Сообщение # 4
Новенький
Группа: Пользователи
Сообщений: 8
Награды: 0
Город: Надвоицы
Репутация: -7
Замечания: 0%
Статус:
C:\Users\Иван\Desktop\rgs-rp.pwn(40973) : error 036: empty statement чё это?
ВОт сама строка:
if(gruz ==578||gruz==455||gruz==403||gruz==582||gruz==514||gruz==515||gruz==440||gruz==456||gruz==573||gruz==500||gruz==470||gruz==505||gruz==495);

vasya234Дата: Вторник, 25.05.2010, 13:36 | Сообщение # 5
Новенький
Группа: Пользователи
Сообщений: 34
Награды: 0
Город: Санкт-Петербург
Репутация: -16
Замечания: 20%
Статус:
молодцом yes ;)
SMOUKДата: Вторник, 25.05.2010, 14:23 | Сообщение # 6
Местный
Группа: Продвинутые
Сообщений: 646
Награды: 13
Город: Рославль
Репутация: 284
Замечания: 100%
Статус:
КрасавчеГ лови + new_russian


_Xottab_Дата: Вторник, 25.05.2010, 14:38 | Сообщение # 7
Уверенный в себе
Группа: Продвинутые
Сообщений: 272
Награды: 5
Город: Запорожье
Репутация: 37
Замечания: 40%
Статус:
Quote (VanoProG)
if(gruz ==578||gruz==455||gruz==403||gruz==582||gruz==514||gruz==515||gruz==440||gruz==456||gruz==573||gruz==500||gruz==470||gruz==505||gruz==495);

А зачем в конце if() ;?

DiSEДата: Вторник, 25.05.2010, 15:03 | Сообщение # 8
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
_Xottab_
правильно. Зачем ;?

VanoProGДата: Вторник, 25.05.2010, 15:04 | Сообщение # 9
Новенький
Группа: Пользователи
Сообщений: 8
Награды: 0
Город: Надвоицы
Репутация: -7
Замечания: 0%
Статус:
Во всё запохало)))кулл
-LexA-Дата: Вторник, 25.05.2010, 19:00 | Сообщение # 10
Новенький
Группа: Пользователи
Сообщений: 32
Награды: 2
Город: Ростов - на - Дону
Репутация: 30
Замечания: 0%
Статус:
Quote (VanoProG)
Во всё запохало)))кулл

запохало что именно? просто пишет наличие лицы и всё? тут вроде как идея должна быть чтоб на груз авто требовало лицу на груз авто
EnErGiZeR, у тебя не все написано.
короче эти строки нужно убрать :
Quote (EnErGiZeR)
if(PlayerInfo[i][pGruzLic] < 1 && IsPlayerInAnyVehicle(i) && GetPlayerState(i) == 2)
{
if(TakingLesson[i] == 1) { }
else { RemovePlayerFromVehicle(i); }
}

затем найти else if(IsAPlane(newcar)) и перед этим добавить следующее :
Code
else if( IsAGruz(newcar))
{
     if(PlayerInfo[i][pGruzLic] < 1)  
     {  
         if(TakingLesson[i] == 1) { }  
         else { SendClientMessage(playerid, COLOR_GREY, " нельзя ездить на груз тачках без лицы "); RemovePlayerFromVehicle(i); }  
     }
}

проверял не все

Добавлено (25.05.2010, 19:00)
---------------------------------------------

Quote (EnErGiZeR)
public SetPlayerUnjail()

еще увидел. лучше добавлять такие проверки не в public SetPlayerUnjail() а в public OnPlayerStateChange. сейчас перепишем.
найти нужно else if(IsAPlane(newcar)) именно в public OnPlayerStateChange и перед этим добавить :
Code
else if( IsAGruz(newcar))  
{  
      if(PlayerInfo[playerid][pGruzLic] < 1)   
      {   
          if(TakingLesson[playerid] == 1) { }   
          else { SendClientMessage(playerid, COLOR_GREY, " нельзя ездить на груз тачках без лицы "); RemovePlayerFromVehicle(playerid); }   
      }  
}



нужны деньги на пару экзаменов. кому не жалко пишите в личку
AwmДата: Вторник, 25.05.2010, 19:10 | Сообщение # 11
Группа: I'm V.I.P.
Сообщений: 3235
Награды: 55
Город: Tallinn
Репутация: 1661
Замечания: 0%
Статус:
Code
if(PlayerInfo[i][pCarLic]<1||PlayerInfo[i][pGruzLic]<1&&IsPlayerInAnyVehicle(i)&&GetPlayerState(i)==2)
{
if(TakingLesson[i] != 1) RemovePlayerFromVehicle(i);
}




"Life is hard... life is harder if you're stupid." - John Wayne
BanDiT54{rus}Дата: Понедельник, 31.05.2010, 21:22 | Сообщение # 12
Новенький
Группа: Пользователи
Сообщений: 18
Награды: 0
Город: Турки
Репутация: -3
Замечания: 0%
Статус:
Пачиму у миня на сервире посли реги можно ездить без лицы на любой авто? crazy crazy crazy
[RGS]JAGUARДата: Понедельник, 31.05.2010, 21:43 | Сообщение # 13
Советчик
Группа: Продвинутые
Сообщений: 1154
Награды: 25
Город: FloatX,FloatY,FloatZ
Репутация: 291
Замечания: 40%
Статус:
Quote (BanDiT54{rus})
Пачиму у миня на сервире посли реги можно ездить без лицы на любой авто?

ищи в моде
if(PlayerInfo[i][pCarLic]<1)
там ниже добавь
if(TakingLesson[i] != 1) RemovePlayerFromVehicle(i);



[/url]
Новая ICQ: 593922
[RGS]JAGUARДата: Четверг, 03.06.2010, 21:07 | Сообщение # 14
Советчик
Группа: Продвинутые
Сообщений: 1154
Награды: 25
Город: FloatX,FloatY,FloatZ
Репутация: 291
Замечания: 40%
Статус:
ELEMENT_09, forward IsAGruz(carid);
забыл



[/url]
Новая ICQ: 593922
_LexA_Дата: Четверг, 03.06.2010, 21:18 | Сообщение # 15
Долгожитель
Группа: Продвинутые
Сообщений: 1437
Награды: 161
Город: Ростов-на-Дону
Репутация: 563
Замечания: 20%
Статус:
Quote (ELEMENT_09)
Ахах!

а че смешного?

  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua