[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[Pawno-Урок]Урок по созданию Система материалов
Дата: 18.05.2011, Среда, 11:44:51 | Сообщение # $NUMBER
Группа: Гл. Модераторы
Сообщений: 220
Репутация: 253+
FFFUUU
Данная система похожа на систему изСАМП-РП.
Версия:v.1.2
объясню подробнее:законники должны на авианосце привезти материалы на склад в зону 51...там есть пекапы по которым банды могут воровать материалы...в общак банд можно так же воровать маты теперь...когда подходишь к пекапу набираешь команду /materials get - взять 1к матов садишься в свой фургон (обязательно в фургон от банды) вводишь /materials put положить маты в фургон...команда /unloding разгрузить маты у себя на базе(не доработано еще)
(скажу сразу будет обновляться)
Если заметили ошибку или хотите предложить что либо пишите(отзывы очень важны)

ко все переменным new добавляем эти вот

Code
new mats1;
new mats2;
new colmats;
new matscar1;
new matscar2;
new objakgro;
new objakbal;
new objakcor;
new objakvag;
new objakrif;
new furgon[5];
new matso;

потом находим паблик public OnPlayerPickUpPickup и добовляем следующее

Code
else if(pickupid == mats1)
       {
       new l = PlayerInfo[playerid][pLeader];
       new m = PlayerInfo[playerid][pMember];
       if(l==14 || l==1 ||l==2||l==3||l==8||l==12||l==20 || l==15 || l==16 || l==17 || l==18 || m==14 || m==15 || m==16 || m==17 || m==18|| m==1 ||m==2||m==3||m==8||m==12||m==20)
       {
         if(colmats < 20)
         {
           SendClientMessage(playerid, COLOR_RED, "На складе нет материалов");
         }
         else
         {
          PlayerInfo[playerid][pMats]+=20;
          SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы взяли несколько комплектов");
          colmats=colmats-20;
         }
     }
     else
     {
     SendClientMessage(playerid, COLOR_GREEN, "Вы не состоите в преступных группировках или вы не законник");
     }
     return 1;
     }
        else if(pickupid == mats2)
       {
       new l = PlayerInfo[playerid][pLeader];
       new m = PlayerInfo[playerid][pMember];
       if(l==14 || l==1 ||l==2||l==3||l==8||l==12||l==20 || l==15 || l==16 || l==17 || l==18 || m==14 || m==15 || m==16 || m==17 || m==18|| m==1 ||m==2||m==3||m==8||m==12||m==20)
       {
         if(colmats < 20)
         {
           SendClientMessage(playerid, COLOR_RED, "На складе нет материалов");
         }
         else
         {
          PlayerInfo[playerid][pMats]+=20;
          SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы взяли несколько комплектов");
          colmats=colmats-20;
         }
     }
     else
     {
     SendClientMessage(playerid, COLOR_GREEN, "Вы не состоите в преступных группировках или вы не законник");
     }
     return 1;
     }

в паблик public OnGameModeInit() суем пекапы и авиносцы

Code
   objakgro = CreatePickup(1239,2,2505.8123,-1694.6447,13.5579);
objakcor = CreatePickup(1239,2,1663.2285,-2113.6067,13.5469);
objakbal = CreatePickup(1239,2,2644.9167,-2033.7373,13.5540);
objakrif = CreatePickup(1239,2,2184.0181,-1812.2617,13.5469);
objakvag = CreatePickup(1239,2,2767.7549,-1616.6736,10.9219);
  mats1 = CreatePickup(1239,2,129.8493,1875.6160,17.8359);
     mats2 = CreatePickup(1239,2,124.8786,1876.2286,17.8359);
    matscar1 = AddStaticVehicleEx(548,-1287.83801270,447.79321289,9.08756161,0.00000000,-1,-1,30000); //Cargobob
     matscar2 = AddStaticVehicleEx(470,-1349.24914551,456.36822510,7.29751158,0.00000000,-1,-1,30000); //Patriot
     CreatePickup(1239,2,275.2503,1829.7740,17.6406);
     Create3DTextLabel("/materials",0xBFF600FF,275.2503,1829.7740,17.6406,20.0,0);
furgon[3]=AddStaticVehicleEx(418,2649.13476562,-2009.16430664,13.49035358,268.69067383,85,85,30000);  
furgon[2]=AddStaticVehicleEx(418,2505.81274414,-1672.85095215,13.26896763,67.48950195,16,16,30000);  
furgon[4]=AddStaticVehicleEx(418,2187.64599609,-1797.88012695,13.11032677,49.62463379,108,108,30000);  
furgon[1]=AddStaticVehicleEx(418,2771.26904297,-1609.55798340,10.67187500,272.66064453,6,6,30000);  
furgon[0]=AddStaticVehicleEx(418,1694.37329102,-2118.54394531,13.52521706,326.25524902,2,2,30000);

в паблик вставляем проверку на машину public CarEnter(playerid,carid)

Code
    if(carid >= matscar1 && carid <= matscar2)
     {
         if(PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3||PlayerInfo[playerid][pMember] == 1|| PlayerInfo[playerid][pLeader] == 1||PlayerInfo[playerid][pMember] == 2|| PlayerInfo[playerid][pLeader] == 2||PlayerInfo[playerid][pMember] == 8|| PlayerInfo[playerid][pLeader] == 8||PlayerInfo[playerid][pMember] == 12|| PlayerInfo[playerid][pLeader] == 12||PlayerInfo[playerid][pMember] == 20|| PlayerInfo[playerid][pLeader] == 20)//фракции ставим свои...это законники
         {
         ShowPlayerDialog(playerid,5551,DIALOG_STYLE_MSGBOX,"Система материалов","{FF0000}Вы хотете отвезти материалы на военную базу?","Да","Отмена");
         }
         else
         {
             SendClientMessage(playerid,COLOR_LIGHTRED2,"Вы законник!");
             RemovePlayerFromVehicle(playerid);
         }
     }

в паблик public OnDialogResponse вставляем

Code
   if(dialogid == 5551)
     {
     if(response)
     {
     SetPlayerCheckpoint(playerid,136.7081,1875.6571,22.4375,5.0);
     }
     }

в паблик
public OnPlayerEnterCheckpoint встовляем

Code
   if(PlayerToPoint(2.0, playerid,136.7081,1875.6571,22.4375))
     {
     colmats+=5000;
     DisablePlayerCheckpoint(playerid);
      }

теперь добавим команды сами
в пабкик public OnPlayerCommandText

Code
if(strcmp(cmd,"/materials",true)==0)
     {
         if(IsPlayerConnected(playerid))
         {
         new l = PlayerInfo[playerid][pLeader];
           new m = PlayerInfo[playerid][pMember];
           new ran = PlayerInfo[playerid][pRank];
           if(l==14|| l==15 || l==16 || l==17 || l==18 || (m==14&&ran>=4) || (m==15&&ran>=4) || (m==16&&ran>=4) || (m==17&&ran>=4) || (m==18&&ran>=4))
             {
             new x_nr[256];
             x_nr = strtok(cmdtext, idx);
             if(!strlen(x_nr))
             {
                 SendClientMessage(playerid, COLOR_WHITE, " Используйте: /materials [name]");
                 SendClientMessage(playerid, COLOR_WHITE, "Доступные названия: Get, Put.");
                 return 1;
             }
             if(strcmp(x_nr,"get",true) == 0)
             {
                 if(PlayerToPoint(3.0,playerid,275.2503,1829.7740,17.6406))
                 {
                 if( matso >= 1000)
                 {
                 SendClientMessage(playerid, COLOR_GREY, "У вас уже есть на руках большой комплект материалов!");
                 }
                 else
                 {
                  matso = 1000;
                  SendClientMessage(playerid, COLOR_GREY, "Вы взяли один большой комплект материалов!");
                  SendClientMessage(playerid, COLOR_GREY, "Отнесите его в ваш фургон и отвезите на базу!");
                  ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
                  SetPlayerAttachedObject(playerid, 1 , 2060, 1,0.11,0.36,0.0,0.0,90.0);
                  ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,1,0,0,1,1,1);
                 }
                  }
             }
             else if(strcmp(x_nr,"put",true) == 0)
             {
                 new caridi = GetPlayerVehicleID(playerid);
                 if(caridi == furgon[0] || caridi == furgon[1]|| caridi == furgon[2]|| caridi == furgon[3]|| caridi == furgon[4])
                 {
                         if(mater[caridi] > 3000)
                         {
                             SendClientMessage(playerid,COLOR_GREY,"Больше 3-х больших комплектов материалов возить нельзя!");
                             return 1;
                         }
                         else
                         {
                             if (matso==1000)
                             {
                             mater[caridi] += 1000;
                             matso-=1000;
                             SendClientMessage(playerid, COLOR_GREY, "Вы положили большой комплект материалов фургон!");
                             if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
                             }
                         }
                 }
                 else
                 {
                  SendClientMessage(playerid, COLOR_GREY, "Вы должны сидеть в фургоне чтоб положить комплект материалов!");
                 }
             }
             }
             else
             {
              SendClientMessage(playerid,COLOR_GREY,"Вы не состоите в преступных группировках либо у вас маленький ранг");
              return 1;
             }
         }
         return 1;
     }
     if(strcmp(cmd, "/unloding", true) == 0)
     {
         if(IsPlayerConnected(playerid))
         {
         new l = PlayerInfo[playerid][pLeader];
           new m = PlayerInfo[playerid][pMember];
           new ran = PlayerInfo[playerid][pRank];
         new caridi = GetPlayerVehicleID(playerid);
               if(l==14|| (m==14&&ran>=4))
             {
               format(string, sizeof(string), "*Вы положили в общак банды Grove Street %d материалов.",mater[caridi]);
             SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
             objakgro+=mater[caridi];
             }
             else if(l==15||m==15&&ran>=4)
             {
             format(string, sizeof(string), "*Вы положили в общак банды El Coronas %d материалов.",mater[caridi]);
             SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
             objakcor+=mater[caridi];
             }
             else if(l==16||m==16&&ran>=4)
             {
             format(string, sizeof(string), "*Вы положили в общак банды Ballas gang %d материалов.",mater[caridi]);
             SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
             objakbal+=mater[caridi];
             }
             else if(l==17||m==17&&ran>=4)
             {
             format(string, sizeof(string), "*Вы положили в общак банды Rifa gang %d материалов.",mater[caridi]);
             SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
             objakrif+=mater[caridi];
             }
             else if(l==18||m==18&&ran>=4)
             {
             format(string, sizeof(string), "*Вы положили в общак банды Vagos gang %d материалов.",mater[caridi]);
             SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
             objakvag+=mater[caridi];
             }
         }
         return 1;
     }

Автор:9GYAR
А чуть не забыл,предварительно удалите старую систему материалов если имеется

  • Страница 1 из 1
  • 1
Поиск: