Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создание багажника для автомобиля

Статус
В этой теме нельзя размещать новые ответы.

GunsTerS

Новичок
Система багажников? Думаю всем понятно что это такое и для чего это нужно, а для тех кто еще не въехал я объясняю, система представляет собой возможность хранения ну и собственно как вы поняли транспортировки определенных объектов/вещей/денег ну и что вашей душе угодно ограничивает вас только фантазия. Думаю я понятно ввел вас в суть и давайте уже начнем:

1) Для начала нам понадобятся Forward'ы
Farward'ы ставим в начало мода ко всем остальным Forward'ам

PHP:
forward SafeResetPlayerWeapons(plyid); 
forward RemovePlayerWeapon(playerid, weaponid); 
forward SafeGivePlayerWeapon(plyid, weaponid, ammo);
2) Создаем массив нужный нам для хранения
Желательно тоже ко всем Enum'ам

PHP:
enum tTrunkInfo 
{ 
   tMoney, 
   tDrugs, 
   tGun1, 
   tGun2, 
   tGun3, 
   tGun4, 
   tGun5, 
   tAmmo1, 
   tAmmo2, 
   tAmmo3, 
   tAmmo4, 
   tAmmo5,  
   tOpened, 
} ; 
new TrunkInfo[MAX_VEHICLES][tTrunkInfo];
3) Создаем команду для вызова функций самого багажника
Добавляем в public OnPlayerCommandText

PHP:
if(strcmp(cmd, "/trunkdrop", true) == 0) 
{ 
if(IsPlayerConnected(playerid)) 
{ 

new x_job[256]; 
x_job = strtok(cmdtext, idx); 
if(!strlen(x_job)) { 
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Положить в Багажник __________________|"); 
SendClientMessage(playerid, COLOR_WHITE, "*Используйте: /trunkdrop [имя] [кол-во] (для оружия кол-во = 1)"); 
SendClientMessage(playerid, COLOR_GREY, "*Имена: money, drugs"); 
SendClientMessage(playerid, COLOR_GREY, "*Имена: Gun1, Gun2, Gun3, Gun4, Gun5"); 
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|"); 
return 1; 
} 
tmp = strtok(cmdtext, idx); 
if(!strlen(tmp)) 
{ 
SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: /trunkdrop [имя] [кол-во] (для оружия кол-во = 1)"); 
return 1; 
} 
new kolvo = strval(tmp); 
for(new i = 0; i < MAX_VEHICLES; i++) 
{ 
new Float:x,Float:y,Float:z; 
GetVehiclePos(i,x,y,z); 
if (PlayerToPoint(4, playerid,x,y,z)) 
{ 
if(IsPlayerInAnyVehicle(playerid)) 
{ 
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!"); 
return 1; 
} 
if(TrunkInfo[i][tOpened] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Багажник этого транспорта закрыт!"); 
return 1; 
} 
if(kolvo > 0) 
{ 
new gunid = GetPlayerWeapon(playerid); 
new ammo = GetPlayerAmmo(playerid); 
if(strcmp(x_job,"money",true) == 0) 
{ 
if(kolvo > PlayerInfo[playerid][pCash]) 
{ 
SendClientMessage(playerid,COLOR_GREY," У тебя нет такой суммы!"); 
return 1; 
} 
TrunkInfo[i][tMoney] += kolvo; 
GivePlayerMoney(playerid,-kolvo); 
SendClientMessage(playerid,COLOR_WHITE," Ты положил деньги в багажник"); 
} 
else if(strcmp(x_job,"drugs",true) == 0) 
{ 
if(kolvo > PlayerInfo[playerid][pDrugs]) 
{ 
SendClientMessage(playerid,COLOR_GREY," У тебя нет столько наркотиков!"); 
return 1; 
} 
TrunkInfo[i][tDrugs] += kolvo; 
PlayerInfo[playerid][pDrugs] -= kolvo; 
SendClientMessage(playerid,COLOR_WHITE," Ты положил наркотики в багажник"); 
} 
else if(strcmp(x_job,"Gun1",true) == 0) 
{ 
if(TrunkInfo[i][tGun1] != 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!"); 
return 1; 
} 
if(gunid == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!"); 
return 1; 
} 
TrunkInfo[i][tGun1] = gunid; 
TrunkInfo[i][tAmmo1] = ammo; 
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник"); 
RemovePlayerWeapon(playerid,gunid); 
} 
else if(strcmp(x_job,"Gun2",true) == 0) 
{ 
if(TrunkInfo[i][tGun2] != 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!"); 
return 1; 
} 
if(gunid == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!"); 
return 1; 
} 
TrunkInfo[i][tGun2] = gunid; 
TrunkInfo[i][tAmmo2] = ammo; 
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник"); 
RemovePlayerWeapon(playerid,gunid); 
} 
else if(strcmp(x_job,"Gun3",true) == 0) 
{ 
if(TrunkInfo[i][tGun3] != 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!"); 
return 1; 
} 
if(gunid == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!"); 
return 1; 
} 
TrunkInfo[i][tGun3] = gunid; 
TrunkInfo[i][tAmmo3] = ammo; 
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник"); 
RemovePlayerWeapon(playerid,gunid); 
} 
else if(strcmp(x_job,"Gun4",true) == 0) 
{ 
if(TrunkInfo[i][tGun4] != 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!"); 
return 1; 
} 
if(gunid == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!"); 
return 1; 
} 
TrunkInfo[i][tGun4] = gunid; 
TrunkInfo[i][tAmmo4] = ammo; 
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник"); 
RemovePlayerWeapon(playerid,gunid); 
} 
else if(strcmp(x_job,"Gun5",true) == 0) 
{ 
if(TrunkInfo[i][tGun5] != 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В этом слоте уже лежит оружие!"); 
return 1; 
} 
if(gunid == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," В твоих руках нет оружия!"); 
return 1; 
} 
TrunkInfo[i][tGun5] = gunid; 
TrunkInfo[i][tAmmo5] = ammo; 
SendClientMessage(playerid,COLOR_WHITE," Ты положил это оружие в багажник"); 
RemovePlayerWeapon(playerid,gunid); 
} 
} 
} 
} 
} 
return 1; 
} 
if(strcmp(cmd, "/trunktake", true) == 0) 
{ 
if(IsPlayerConnected(playerid)) 
{ 

new x_job[256]; 
x_job = strtok(cmdtext, idx); 
if(!strlen(x_job)) { 
SendClientMessage(playerid, COLOR_WHITE, "|__________________ Взять из багажника __________________|"); 
SendClientMessage(playerid, COLOR_WHITE, "*Используйте: /trunktake [имя] [кол-во] (для оружия кол-во = 1)"); 
SendClientMessage(playerid, COLOR_GREY, "*Имена: money, drugs"); 
SendClientMessage(playerid, COLOR_GREY, "*Имена: Gun1, Gun2, Gun3, Gun4, Gun5"); 
SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|"); 
return 1; 
} 
tmp = strtok(cmdtext, idx); 
if(!strlen(tmp)) 
{ 
SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: /trunktake [имя] [кол-во] (для оружия кол-во = 1)"); 
return 1; 
} 
new kolvo = strval(tmp); 
for(new i = 0; i < MAX_VEHICLES; i++) 
{ 
new Float:x,Float:y,Float:z; 
GetVehiclePos(i,x,y,z); 
if (PlayerToPoint(4, playerid,x,y,z)) 
{ 
if(IsPlayerInAnyVehicle(playerid)) 
{ 
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!"); 
return 1; 
} 
if(TrunkInfo[i][tOpened] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Багажник этого транспорта закрыт!"); 
return 1; 
} 
if(kolvo > 0) 
{ 
if(strcmp(x_job,"money",true) == 0) 
{ 
if(kolvo > TrunkInfo[i][tMoney]) 
{ 
SendClientMessage(playerid,COLOR_GREY," У тебя в багажнике нет такой суммы!"); 
return 1; 
} 
TrunkInfo[i][tMoney] -= kolvo; 
GivePlayerMoney(playerid,kolvo); 
SendClientMessage(playerid,COLOR_WHITE," Ты берешь деньги из багажника"); 
} 
else if(strcmp(x_job,"drugs",true) == 0) 
{ 
if(kolvo >TrunkInfo[i][tDrugs]) 
{ 
SendClientMessage(playerid,COLOR_GREY," У тебя в багажнике нет столько наркотиков!"); 
return 1; 
} 
TrunkInfo[i][tDrugs] -= kolvo; 
PlayerInfo[playerid][pDrugs] += kolvo; 
SendClientMessage(playerid,COLOR_WHITE," Ты берешь наркотики из багажника"); 
} 
else if(strcmp(x_job,"Gun1",true) == 0) 
{ 
if(TrunkInfo[i][tGun1] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!"); 
return 1; 
} 
GivePlayerWeapon(playerid,TrunkInfo[i][tGun1],TrunkInfo[i][tAmmo1]); 
TrunkInfo[i][tGun1] = 0; 
TrunkInfo[i][tAmmo1] = 0; 
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника"); 
} 
else if(strcmp(x_job,"Gun2",true) == 0) 
{ 
if(TrunkInfo[i][tGun2] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!"); 
return 1; 
} 
GivePlayerWeapon(playerid,TrunkInfo[i][tGun2],TrunkInfo[i][tAmmo2]); 
TrunkInfo[i][tGun2] = 0; 
TrunkInfo[i][tAmmo2] = 0; 
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника"); 
} 
else if(strcmp(x_job,"Gun3",true) == 0) 
{ 
if(TrunkInfo[i][tGun3] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!"); 
return 1; 
} 
GivePlayerWeapon(playerid,TrunkInfo[i][tGun3],TrunkInfo[i][tAmmo3]); 
TrunkInfo[i][tGun3] = 0; 
TrunkInfo[i][tAmmo3] = 0; 
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника"); 
} 
else if(strcmp(x_job,"Gun4",true) == 0) 
{ 
if(TrunkInfo[i][tGun4] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!"); 
return 1; 
} 
GivePlayerWeapon(playerid,TrunkInfo[i][tGun4],TrunkInfo[i][tAmmo4]); 
TrunkInfo[i][tGun4] = 0; 
TrunkInfo[i][tAmmo4] = 0; 
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника"); 
} 
else if(strcmp(x_job,"Gun5",true) == 0) 
{ 
if(TrunkInfo[i][tGun5] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Этот слот твоего багажника пустой!"); 
return 1; 
} 
GivePlayerWeapon(playerid,TrunkInfo[i][tGun5],TrunkInfo[i][tAmmo5]); 
TrunkInfo[i][tGun5] = 0; 
TrunkInfo[i][tAmmo5] = 0; 
SendClientMessage(playerid,COLOR_WHITE," Ты взял оружие из багажника"); 
} 
} 
} 
} 
} 
return 1; 
} 
if(strcmp(cmd, "/trunkinfo", true) == 0) 
{ 
if(IsPlayerConnected(playerid)) 
{ 
for(new i = 0; i < MAX_VEHICLES; i++) 
{ 
new Float:x,Float:y,Float:z; 
GetVehiclePos(i,x,y,z); 
if (PlayerToPoint(4, playerid,x,y,z)) 
{ 
if(IsPlayerInAnyVehicle(playerid)) 
{ 
SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!"); 
return 1; 
} 
if(TrunkInfo[i][tOpened] == 0) 
{ 
SendClientMessage(playerid,COLOR_GREY," Багажник этого транспорта закрыт!"); 
return 1; 
} 
new gunname[32]; 
SendClientMessage(playerid,COLOR_YELLOW,"*** Багажник ***"); 
format(string,sizeof(string)," Деньги: $%d ",TrunkInfo[i][tMoney]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
format(string,sizeof(string)," Наркотики: $%d ",TrunkInfo[i][tDrugs]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
if(TrunkInfo[i][tGun1] != 0) 
{ 
GetWeaponName(TrunkInfo[i][tGun1],gunname,sizeof(gunname)); 
format(string,sizeof(string)," Слот 1: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo1]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
} 
if(TrunkInfo[i][tGun2] != 0) 
{ 
GetWeaponName(TrunkInfo[i][tGun2],gunname,sizeof(gunname)); 
format(string,sizeof(string)," Слот 2: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo2]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
} 
if(TrunkInfo[i][tGun3] != 0) 
{ 
GetWeaponName(TrunkInfo[i][tGun3],gunname,sizeof(gunname)); 
format(string,sizeof(string)," Слот 3: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo3]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
} 
if(TrunkInfo[i][tGun4] != 0) 
{ 
GetWeaponName(TrunkInfo[i][tGun4],gunname,sizeof(gunname)); 
format(string,sizeof(string)," Слот 4: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo4]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
} 
if(TrunkInfo[i][tGun5] != 0) 
{ 
GetWeaponName(TrunkInfo[i][tGun5],gunname,sizeof(gunname)); 
format(string,sizeof(string)," Слот 5: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo5]); 
SendClientMessage(playerid,COLOR_WHITE,string); 
} 
} 
} 
} 
return 1; 
}[code] 

--------------------------------------------- 
[code]if(strcmp(cmd, "/trunkfrisk", true) == 0)//Команда для копов 
   { 
       if(IsPlayerConnected(playerid)) 
    { 
          for(new i = 0; i < MAX_VEHICLES; i++) 
     { 
         new Float:x,Float:y,Float:z; 
         GetVehiclePos(i,x,y,z); 
      if (PlayerToPoint(4, playerid,x,y,z)) 
      { 
          if(IsPlayerInAnyVehicle(playerid)) 
          { 
           SendClientMessage(playerid,COLOR_GREY," Сначала вылези из своего транспорта!"); 
              return 1; 
       } 
          if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1) 
          { 
        new gunname[32]; 
        SendClientMessage(playerid,COLOR_YELLOW,"*** Багажник ***"); 
        format(string,sizeof(string)," Деньги: $%d ",TrunkInfo[i][tMoney]); 
        SendClientMessage(playerid,COLOR_WHITE,string); 
        format(string,sizeof(string)," Наркотики: $%d ",TrunkInfo[i][tDrugs]); 
        SendClientMessage(playerid,COLOR_WHITE,string); 
        if(TrunkInfo[i][tGun1] != 0) 
        { 
            GetWeaponName(TrunkInfo[i][tGun1],gunname,sizeof(gunname)); 
            format(string,sizeof(string)," Слот 1: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo1]); 
            SendClientMessage(playerid,COLOR_WHITE,string); 
        } 
        if(TrunkInfo[i][tGun2] != 0) 
        { 
            GetWeaponName(TrunkInfo[i][tGun2],gunname,sizeof(gunname)); 
            format(string,sizeof(string)," Слот 2: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo2]); 
            SendClientMessage(playerid,COLOR_WHITE,string); 
        } 
        if(TrunkInfo[i][tGun3] != 0) 
        { 
            GetWeaponName(TrunkInfo[i][tGun3],gunname,sizeof(gunname)); 
            format(string,sizeof(string)," Слот 3: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo3]); 
            SendClientMessage(playerid,COLOR_WHITE,string); 
        } 
        if(TrunkInfo[i][tGun4] != 0) 
        { 
            GetWeaponName(TrunkInfo[i][tGun4],gunname,sizeof(gunname)); 
            format(string,sizeof(string)," Слот 4: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo4]); 
            SendClientMessage(playerid,COLOR_WHITE,string); 
        } 
        if(TrunkInfo[i][tGun5] != 0) 
        { 
            GetWeaponName(TrunkInfo[i][tGun5],gunname,sizeof(gunname)); 
            format(string,sizeof(string)," Слот 5: %s, патроны: %d", gunname,TrunkInfo[i][tAmmo5]); 
            SendClientMessage(playerid,COLOR_WHITE,string); 
        } 
          } 
       else 
       { 
           SendClientMessage(playerid,COLOR_GREY," Ты не полицейский!"); 
       } 
      } 
     } 
    } 
    return 1; 
   } 
   if(strcmp(cmd, "/trunkopen", true) == 0)//Открыть багажник 
   { 
       if(IsPlayerConnected(playerid)) 
    { 
           for(new i = 0; i < MAX_VEHICLES; i++) 
     { 
         new Float:x,Float:y,Float:z; 
         GetVehiclePos(i,x,y,z); 
      if (PlayerToPoint(4, playerid,x,y,z)) 
      { 
          if(!IsPlayerInAnyVehicle(playerid)) 
          { 
           SendClientMessage(playerid,COLOR_GREY," Ты не в транспорте!"); 
              return 1; 
       } 
       if(TrunkInfo[i][tOpened] == 1) 
       { 
           SendClientMessage(playerid,COLOR_GREY," Ты закрыл багажник!"); 
           TrunkInfo[i][tOpened] = 0; 
           return 1; 
       } 
       if(TrunkInfo[i][tOpened] == 0) 
       { 
           SendClientMessage(playerid,COLOR_GREY," Ты открыл багажник!"); 
           TrunkInfo[i][tOpened] = 1; 
           return 1; 
       } 
       } 
     } 
    } 
    return 1; 
   }
3) Напоследок создаем необходимые паблики для работы скрипта
Устанавливать мх можно хоть где но я предпочитаю сувать их в конец мода

3.1 Первый паблик
PHP:
public RemovePlayerWeapon(playerid, weaponid) 
{ 
   new plyWeapons[12] = 0; 
   new plyAmmo[12] = 0; 
   for(new slot = 0; slot != 12; slot++) 
   { 
    new wep, ammo; 
    GetPlayerWeaponData(playerid, slot, wep, ammo); 

    if(wep != weaponid && ammo != 0) 
    { 
     GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]); 
    } 
   } 

   SafeResetPlayerWeapons(playerid); 
   for(new slot = 0; slot != 12; slot++) 
   { 
       if(plyAmmo[slot] != 0) 
       { 
     SafeGivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]); 
    } 
   } 
   return 1; 
}
3.2 Второй паблик
PHP:
public SafeGivePlayerWeapon(plyid, weaponid, ammo) 
{ 
   GivePlayerWeapon(plyid, weaponid, ammo); 
   return 1; 
}
3.3 Третий паблик
PHP:
public SafeResetPlayerWeapons(plyid) 
{ 
   ResetPlayerWeapons(plyid); 
   return 1; 
}
Вообщем то это все. Сохранения багажника нет в скром времени сделаю. Систему вырезал из какого-то неизвестного мода

С вами был GunsTerS
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу