Sign in to follow this  
Followers 0
kusehsup

Создание машин для фракций

17 posts in this topic

Сразу скажу, что данный урок написал Amfy, но нашему порталу он тоже не обходим.

Приступим

 

Первым делом нам нужно создать глобальную переменную.

new Mil[2];//Назовем её Mil

Далее идем в public OnGameModeinit и вставляем наши машины (машины вы ставите естественно свои). К примеру, мне нужно 4 машины.

AddStaticVehicleEx(411,x,y,z,angle,55,55,60000);
AddStaticVehicleEx(411,x,y,z,angle,55,55,60000);
AddStaticVehicleEx(411,x,y,z,angle,55,55,60000);
AddStaticVehicleEx(411,x,y,z,angle,55,55,60000);

К первой машине добавляем Mil[0] =, а к последней машине Mil[1] =, смотрите пример ниже как должно получится.

Mil[0] = AddStaticVehicleEx(411,1788.7271,1352.2760,10.7370,3.0671,55,55,60000);
AddStaticVehicleEx(411,1788.7271,1352.2760,10.7370,3.0671,55,55,60000);
AddStaticVehicleEx(411,1788.7271,1352.2760,10.7370,3.0671,55,55,60000);
Mil[1] = AddStaticVehicleEx(411,1788.7271,1352.2760,10.7370,3.0671,55,55,60000);

Машины между Mil[0] и Mil[1] (включительно) автоматически становятся для милиции. А это значит, если в дальнейшим надо будет добавлять машины милиции, добавляем их между Mil[0] и Mil[1]

 

Далее идем в public OnPlayerStateChange и вставляем следующий код:

if(newstate == PLAYER_STATE_DRIVER)//Если игрок сидит за рулем автомобиля
{
    new carid = GetPlayerVehicleID(playerid);//Узнаем ид машины в которой сидит игрок
    if(carid >= Mil[0] && carid <= Mil[1])//Если игрок сидит в машине Mil[0] до Mil[1], значит это милицейские машины
    {
        if(PlayerInfo[playerid][pMember] != 1)//Проверка на игроков из фракции номер 1.
        {
            SendClientMessage(playerid, -1, "У вас нет ключей от этого транспорта.");//Если игрок не состоит в 1-ой фракции
            RemovePlayerFromVehicle(playerid);//Выкидываем с машины
        }
    }
}

Если PLAYER_STATE_DRIVER уже существует в данном паблике, ещё раз создавать необязательно. Можно просто вставить в уже существующий.

 

P.S Если возникнут вопросы, пишите в данной теме. PlayerInfo, pLeader, pMember при необходимости нужно сменить.

 

Au - p/s Не своровал, а одолжил на добрые нужды :$

Share this post


Link to post
Share on other sites

Есть проблема. Создал так же. Но госсников выкидывает из них машин. А нелегалов (ОПГ) нет. В чем может быть проблема? 

Share this post


Link to post
Share on other sites

@RavanD как вы вставили код в OnPlayerStateChange? Киньте его сюда. 

Share this post


Link to post
Share on other sites

@DEST

Спойлер

 if(carid >= army_car[0] && carid <= army_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 2) 
  { 
  new model = GetVehicleModel(carid); 
    if(model == 433) 
    { 
     new str[64]; 
     format(str,sizeof(str),"Çàãðóæåíî: %d/10000 ïàòðîíîâ, %d/10000 ìåòàëëà",CAR_DATA[carid][data_PATR],CAR_DATA[carid][data_MET]); 
     SendClientMessage(playerid,0x99FFCCFF,str); 
    } 
   } 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= police_car[0] && carid <= police_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 3) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= hospital_car[0] && carid <= hospital_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 4) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= fsb_car[0] && carid <= fsb_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] != 8) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= smi_car[0] && carid <= smi_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 9) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= rostov_car[0] && carid <= rostov_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 5) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= maykop_car[0] && carid <= maykop_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 6) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
  if(carid >= odessa_car[0] && carid <= odessa_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 7) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 
 } 
 return true; 
}

 

 

Заметка от DEST , создано

Как использовать спойлер и код?

Share this post


Link to post
Share on other sites

@RavanD у фракции полиция id 3? 

Share this post


Link to post
Share on other sites

@DEST Да, а что? Ну как лидерки стоят, так и тут.

Share this post


Link to post
Share on other sites
if(PLAYER_DATA[playerid][data_MEMBER] !== id фракции) 

Попробуй так

Edited by Soul1337

Share this post


Link to post
Share on other sites

@Soul1337 что за такой оператор !== ? 

Share this post


Link to post
Share on other sites

@Soul1337Ну, а смысл? У ОПГ такой же код. Но ОПГшников невыкидывает из машин фракции, а вот Госников выкидывает. @DEST

Share this post


Link to post
Share on other sites

@RavanD вот этот код: 

Спойлер

if(carid >= police_car[0] && carid <= police_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 3) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 

 

замените этим: 

Спойлер

if(carid >= police_car[0] && carid <= police_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 3) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    printf("[#DEBUG] %d - playerid, %d - memberid", playerid, PLAYER_DATA[playerid][data_MEMBER]); 
    return true; 
  } 
  } 

 

после сядьте в машину полиции и киньте логи. 

Share this post


Link to post
Share on other sites

@DEST 

Спойлер

--------— 
Loaded log file: "server_log.txt". 
--------— 
 
SA-MP Dedicated Server 
--------------------— 
v0.3e, (C)2005-2012 SA-MP Team 
 
[12:55:52] 
[12:55:52] Server Plugins 
[12:55:52] —----------— 
[12:55:52] Loading plugin: dc_cmd.so 
[12:55:52] Daniel's CMD plugin v2.8 
[12:55:52] (c) 2014 Daniel_Cortez 
[12:55:52]  www.pro-pawn.ru 
[12:55:52] Loaded. 
[12:55:52] Loading plugin: mysql.so 
[12:55:52] Failed (libmysqlclient_r.so.16: cannot open shared object file: No such file or directory) 
[12:55:52] Loading plugin: mysql_static.so 
[12:55:52] » plugin.mysql: R39-3 successfully loaded. 
[12:55:52] Loaded. 
[12:55:52] Loading plugin: sscanf.so 
[12:55:52] 
 
[12:55:52] =============================== 
 
[12:55:52] sscanf plugin loaded. 
 
[12:55:52] Version: 2.8.1 
 
[12:55:52] (c) 2012 Alex "Y_Less" Cole 
 
[12:55:52] =============================== 
 
[12:55:52] Loaded. 
[12:55:52] Loading plugin: streamer.so 
[12:55:52] 
 
*** Streamer Plugin v2.7.8 by Incognito loaded *** 
 
[12:55:52] Loaded. 
[12:55:52] Loaded 4 plugins. 
 
[12:55:52] 
[12:55:52] Filterscripts 
[12:55:52] —-----------— 
[12:55:52] Loaded 0 filterscripts. 
 
[12:55:52] [Ravand ROLEPLAY]:                           MySQL         
[12:55:52] 
----------------------------— 
[12:55:52] Start date: 5.03.2017 
[12:55:52] —--------------------------— 
[12:55:52] Number of vehicle models: 24 
[12:55:52] [serv_log] Load warehouse. Time: 0 ms. 
[12:55:52] [serv_log] Load job business. Load: 4 b. Time: 1 ms. 
[12:55:52] [serv_log] Load auto business. Load: 2 b. Time: 0 ms. 
[12:55:53] [serv_log] Load kvartiry. Load: 305 b. Time: 107 ms. 
[12:55:53] [serv_log] Load houses. Load: 49 h. Time: 2 ms. 
[12:55:53] [serv_log] Load business. Load: 40 b. Time: 3 ms. 
[12:55:53] [serv_log] Load polit. Load: 9 p. Time: 1 ms. 
[12:55:53] [serv_log] Load radars. Load: 5 r. Time: 0 ms. 
[12:56:35] Incoming connection: 188.168.224.179:54933 
[12:56:36] [join] Alex_Lexis has joined the server (0:188.168.224.179) 
[12:56:53] [chat] [Alex_Lexis]: .   
[12:57:48] [part] Alex_Lexis has left the server (0:1)

 

23 часа назад, DEST сказал:

@RavanD вот этот код: 

  Код (открыть спойлер)


if(carid >= police_car[0] && carid <= police_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 3) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    return true; 
  } 
  } 

 

замените этим: 

  Код (открыть спойлер)


if(carid >= police_car[0] && carid <= police_car[1]) 
  { 
  if(PLAYER_DATA[playerid][data_MEMBER] == 3) 
  {} 
  else 
  { 
  SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!"); 
  RemovePlayerFromVehicleAC(playerid); 
    printf("[#DEBUG] %d - playerid, %d - memberid", playerid, PLAYER_DATA[playerid][data_MEMBER]); 
    return true; 
  } 
  } 

 

после сядьте в машину полиции и киньте логи. 

 

Share this post


Link to post
Share on other sites

@RavanD судя по логам, код вообще не отработал. Вы после замены строк кода мод компилировали и перезаливали с перезапуском? 

Share this post


Link to post
Share on other sites

@DEST Да, удалил старый код, вставил новый, скомпилировал. Когда скомпилировался обновил на хостинге и естественно его перезапустил, в чем может быть проблема? 

Loaded log file: "server_log.txt". 
--------— 
 
SA-MP Dedicated Server 
--------------------— 
v0.3e, (C)2005-2012 SA-MP Team 
 
[12:55:52] 
[12:55:52] Server Plugins 
[12:55:52] —----------— 
[12:55:52] Loading plugin: dc_cmd.so 
[12:55:52] Daniel's CMD plugin v2.8 
[12:55:52] (c) 2014 Daniel_Cortez 
[12:55:52]  www.pro-pawn.ru 
[12:55:52] Loaded. 
[12:55:52] Loading plugin: mysql.so 
[12:55:52] Failed (libmysqlclient_r.so.16: cannot open shared object file: No such file or directory) 
[12:55:52] Loading plugin: mysql_static.so 
[12:55:52] » plugin.mysql: R39-3 successfully loaded. 
[12:55:52] Loaded. 
[12:55:52] Loading plugin: sscanf.so 
[12:55:52] 
 
[12:55:52] =============================== 
 
[12:55:52] sscanf plugin loaded. 
 
[12:55:52] Version: 2.8.1 
 
[12:55:52] (c) 2012 Alex "Y_Less" Cole 
 
[12:55:52] =============================== 
 
[12:55:52] Loaded. 
[12:55:52] Loading plugin: streamer.so 
[12:55:52] 
 
*** Streamer Plugin v2.7.8 by Incognito loaded *** 
 
[12:55:52] Loaded. 
[12:55:52] Loaded 4 plugins. 
 
[12:55:52] 
[12:55:52] Filterscripts 
[12:55:52] —-----------— 
[12:55:52] Loaded 0 filterscripts. 
 
[12:55:52] [Ravand ROLEPLAY]:                           MySQL         
[12:55:52] 
----------------------------— 
[12:55:52] Start date: 5.03.2017 
[12:55:52] —--------------------------— 
[12:55:52] Number of vehicle models: 24 
[12:55:52] [serv_log] Load warehouse. Time: 0 ms. 
[12:55:52] [serv_log] Load job business. Load: 4 b. Time: 1 ms. 
[12:55:52] [serv_log] Load auto business. Load: 2 b. Time: 0 ms. 
[12:55:53] [serv_log] Load kvartiry. Load: 305 b. Time: 107 ms. 
[12:55:53] [serv_log] Load houses. Load: 49 h. Time: 2 ms. 
[12:55:53] [serv_log] Load business. Load: 40 b. Time: 3 ms. 
[12:55:53] [serv_log] Load polit. Load: 9 p. Time: 1 ms. 
[12:55:53] [serv_log] Load radars. Load: 5 r. Time: 0 ms. 
[12:56:35] Incoming connection: 188.168.224.179:54933 
[12:56:36] [join] Alex_Lexis has joined the server (0:188.168.224.179) 
[12:56:53] [chat] [Alex_Lexis]: .   
[12:57:48] [part] Alex_Lexis has left the server (0:1)

Заметка от Cawfee , создано

Как взять код в тег "Код"?.

Share this post


Link to post
Share on other sites

@RavanD значит, вы либо не садились в машину, либо сели не в ту машину. Это точно единственно существующие в моде машины? Может быть уже есть проверка на них. 

Share this post


Link to post
Share on other sites

@DEST Да, нет я сел... Меня сразу выкинуло, да и единственные это машины для полиции... Больше нету. @DEST Да, удалил старый код, вставил новый, скомпилировал. Когда скомпилировался обновил на хостинге и естественно его перезапустил, в чем может быть проблема? 

Share this post


Link to post
Share on other sites

@RavanD не нужно скидывать все одно и то же по 150 раз, тем более, если содержимое логов никак не меняется. Кинь все, что связано с police_car[0] и police_car[1]

 

Share this post


Link to post
Share on other sites

@DEST

Спойлер

new police_car[2]; 
police_car[0] = AddStaticVehicleEx(598, 47.398200, 313.934478, 12.168399, 156.879272, 1, 1, 600);

	AddStaticVehicleEx(551, 2574.878417, -2446.236083, 21.427700, 359.523956, 1, 1, 600);
	AddStaticVehicleEx(551, 2571.130859, -2446.124511, 21.426998, 0.200952, 1, 1, 600);
	AddStaticVehicleEx(551, 2567.552734, -2446.261718, 21.427053, 0.126675, 1, 1, 600);
	AddStaticVehicleEx(427, 2560.312011, -2446.803955, 22.126560, 358.759155, 1, 1, 600);
	AddStaticVehicleEx(427, 2556.630126, -2446.666992, 22.128067, 0.734909, 1, 1, 600);
	AddStaticVehicleEx(427, 2552.816406, -2446.720947, 22.133134, 2.225709, 1, 1, 600);
	AddStaticVehicleEx(601, 2556.211425, -2411.082519, 22.260698, 180.360412, 1, 1, 600);
	AddStaticVehicleEx(601, 2550.800292, -2411.006103, 22.265068, 180.629425, 1, 1, 600);
	AddStaticVehicleEx(601, 2545.118896, -2411.093750, 22.269054, 180.986511, 1, 1, 600);
	AddStaticVehicleEx(598, 2542.6313, -2446.9419, 21.7963, 270.0000, 1, 79, 600);
	AddStaticVehicleEx(598, 2542.7373, -2440.4561, 21.7963, 270.0000, 1, 79, 600);
	AddStaticVehicleEx(598, 2542.7195, -2434.1736, 21.7963, 270.0000, 1, 79, 600);
	AddStaticVehicleEx(598, 2542.7837, -2427.7527, 21.7963, 270.0000, 1, 79, 600);
	AddStaticVehicleEx(598, 2542.9531, -2421.3896, 21.7963, 270.0000, 1, 79, 600);
	AddStaticVehicleEx(497, 2536.3862, -2431.4856, 27.0618, 0.0000, 1, 79, 600);
	AddStaticVehicleEx(598, 2542.6970, -2415.3042, 21.7963, 270.0000, 1, 79, 600);


	AddStaticVehicleEx(598, 221.177825, 1510.187011, 11.991920, 168.416397, 1, 1, 600);
	AddStaticVehicleEx(598, 224.978286, 1509.392700, 11.990458, 169.215454, 1,1, 600);
	AddStaticVehicleEx(598, 228.445861, 1508.749023, 11.991939, 169.390945, 1, 1, 600);
	AddStaticVehicleEx(598, 232.106964, 1508.039672, 11.992456, 168.452941, 1, 1, 600);
	AddStaticVehicleEx(597, 235.643753, 1507.057861, 11.996908, 168.434814, 1, 1, 600);
	AddStaticVehicleEx(597, 239.246749, 1506.395507, 11.999672, 168.185836, 1, -1, 600);
	AddStaticVehicleEx(597, 242.760116, 1505.677124, 11.995423, 168.523483, 1, 1, 600);
	AddStaticVehicleEx(597, 231.049591, 1491.142944, 11.996998, 25.601890, 1, 1, 600);
	AddStaticVehicleEx(551, 234.882827, 1490.388061, 12.001555, 29.313669, 1, 1, 600);
	AddStaticVehicleEx(551, 238.748306, 1489.620483, 12.003518, 29.063425, 1, 1, 600);
	AddStaticVehicleEx(551, 242.433425, 1489.556152, 11.994470, 29.647399, 1, 1, 600);




	AddStaticVehicleEx(551, 50.722869, 312.434967, 12.168233, 157.562896, 1, 1, 600);
	AddStaticVehicleEx(551, 53.976848, 311.018066, 12.167160, 157.674545, 1, 1, 600);
	AddStaticVehicleEx(551, 57.275024, 309.271484, 11.966865, 157.399627, 1, 1, 600);
	AddStaticVehicleEx(599, 67.255516, 305.003540, 11.967527, 157.369338, 1, 1, 600);
	AddStaticVehicleEx(599, 63.946502, 306.389526, 11.967477, 157.045120, 1, 1, 600);
	AddStaticVehicleEx(599, 60.453102, 307.857849, 11.966860, 157.891815, 1, 1, 600);
	AddStaticVehicleEx(599, 51.906246, 293.086486, 12.156556, 6.589720, 1, 1, 600);
	AddStaticVehicleEx(599, 55.799579, 291.518798, 12.165949, 5.549322, 1, 1, 600);
	AddStaticVehicleEx(599, 59.818611, 289.858947, 12.169231, 6.557450, 1, 1, 600);
	AddStaticVehicleEx(427, 67.839401, 280.552856, 11.909934, 22.211221, 1, 1, 600);
	AddStaticVehicleEx(427, 65.329101, 274.616394, 11.908948, 24.888425, 1, 1, 600);
	police_car[1] = AddStaticVehicleEx(427, 62.666393, 268.300079, 11.908353, 27.795463, 1, 1, 600);
	if(carid >= police_car[0] && carid <= police_car[1])
			{ if(PLAYER_DATA[playerid][data_MEMBER] == 3)
			{}
			else { SendClientMessage(playerid,COLOR_WARNING,"Äàííûé òðàíñïîðò Âàì íåäîñòóïåí!");
			RemovePlayerFromVehicleAC(playerid);
			printf("[#DEBUG] %d - playerid, %d - memberid", playerid, PLAYER_DATA[playerid][data_MEMBER]);
				return true; }
	}

 

 

@DEST Я с телефона писал, жму на "@", а он старые СМС еще прихватывает. Баг наверное)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Kutuzov
      By Kutuzov
      Всем привет, хотелось бы спросить у тех, кто разбирается в PluginSDK.
      Какие есть источники, руководства, документации о PluginSDK?
      Я пока что ничего нормального не нахожу.
      Заранее спасибо 
    • Danila_Fazz
      By Danila_Fazz
      Добрый день вписал систему 3д номеров все запустилось, но когда создаю номера пишет что они записаны в бд но они не записываются в бд  когда еще раз отпровляю команду пишет опять что все записано, но не чо не записываеться когда компелирую мод показывает только варнинги 202 на разные строки
       
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23135) : warning 202: number of arguments does not match definition
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23162) : warning 202: number of arguments does not match definition
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23199) : warning 202: number of arguments does not match definition
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23288) : warning 202: number of arguments does not match definition
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23335) : warning 202: number of arguments does not match definition
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23388) : warning 202: number of arguments does not match definition
      C:\Users\Danila_Fazz\Desktop\Сервак\gamemodes\srp061.pwn(23397) : warning 202: number of arguments does not match definition
      Pawn compiler 3.10.20150531              Copyright (c) 1997-2006, ITB CompuPhase
      Header size:          18160 bytes
      Code size:          8734120 bytes
      Data size:          3641416 bytes
      Stack/heap size:      16384 bytes; estimated max. usage=6660 cells (26640 bytes)
      Total requirements:12410080 bytes
      7 Warnings.
      на каждой этой страке находиться   if(IsPlayerAdmin(playerid, 7)) return 1;