Sign in to follow this  
Followers 0
Aurum

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

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)

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

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

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

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   You have pasted content with formatting.   Remove formatting

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

Loading...
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content