[FAQ]Система материалов - SAMP-CITY Forum | Всё о GTA Multiplayers. SA-MP, MTA, IV-MP. Samp-City.Ru Всё для GTA-MP, SAMP, MTA SA, GTA IV - [FAQ]Система материалов - SAMP-CITY Forum | Всё о GTA Multiplayers. SA-MP, MTA, IV-MP.



Логин:
Пароль:


Тут может быть ваша реклама!
Клик
Статистика Форума
Последние темы Новые пользователи Активные пользователи

1 Заявка на пост модератора(0)

2 Вопрос - Ответ #1(20)

3 Вопрос-Ответ.(218)

4 Ищу хорошего мапера.(7)

5 [F.A.Q]Перевод мода на 0.3e(2)

1 ilja99 (Сергей)

EE

2 edva1235 (Edvin)

LT

3 wmt (Михаил)

RU

4 kingcs (kingcs)

RU

5 maksimkafear (максим)

RU

1 Tailer

      Форум: 1187

2 Steep_Chele

      Форум: 876

3 Ilya1996

      Форум: 633

4 aptyp

      Форум: 552

5 Kweckey

      Форум: 505
Страница 1 из 11
Модератор форума: Tailer 
SAMP-CITY Forum | Всё о GTA Multiplayers. SA-MP, MTA, IV-MP. » Знаменитые моды SA-MP » GodFather » [FAQ]Система материалов
[FAQ]Система материалов
TailerДата: Четверг, 09.02.2012, 11:41:29 | Сообщение # 1
:-(
Сообщений: 1187
Автор:9GYAR
Описание:Органы закон, должны на авианосце привезти материалы на склад в зону 51...там есть пекапы по которым банды могут воровать материалы...в общак банд можно так же воровать маты теперь...когда подходишь к пекапу набираешь команду /materials get - взять 1к матов садишься в свой фургон (обязательно в фургон от банды) вводишь /materials put положить маты в фургон...команда /unloding разгрузить маты у себя на базе
Можно продать материалы мафии от банд,командой /materialssell
Теперь все сохраняется каждую секунду...так что вы не потеряете ни один материал.

1. Добавляем новые переменные:
Code
new mats1;
new mats2;
new colmats=100000;
new matscar1;
new matscar2;
new objakrm=50000;
new objakyak=50000;
new objaklcn=50000;
new objakgro = 50000 ;
new monobjakgro = 10000 ;
new objakbal = 50000 ;
new monobjakbal = 10000 ;
new objakcor = 50000 ;
new monobjakcor = 10000 ;
new objakvag = 50000 ;
new monobjakvag = 10000 ;
new objakrif = 50000 ;
new monobjakrif = 10000 ;
new monobjaklcn = 10000 ;
new monobjakrm = 10000 ;
new monobjakyak = 10000 ;
new furgon[5];
new matso;
new objaklspd;  
new objaksfpd;  
new objaklvpd;  
new objakarm2;  
new objakarm1;  
new objakfbi;


2. В 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 < 500)
         {
           SendClientMessage(playerid, COLOR_RED, "На складе нет материалов");
         }
         else
         {
          PlayerInfo[playerid][pMats]+=500;
          SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы взяли несколько комплектов");
          colmats=colmats-500;
         }
     }
     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 < 500)
         {
           SendClientMessage(playerid, COLOR_RED, "На складе нет материалов");
         }
         else
         {
          PlayerInfo[playerid][pMats]+=500;
          SendClientMessage(playerid, COLOR_LIGHTBLUE, "Вы взяли несколько комплектов");
          colmats=colmats-500;
         }
     }
     else
     {
     SendClientMessage(playerid, COLOR_GREEN, "Вы не состоите в преступных группировках или вы не законник");
     }
     return 1;
     }  


3. Теперь нужно сделать сохранение материалов:
Добавляем forward
Code

forward SaveMaterials();
forward LoadMaterials();  


4. Создаем 2 public:

Code
public SaveMaterials()
{
       new coordsstring[256];
       format(coordsstring, sizeof(coordsstring), "%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i|%i",colmats,objakgro,objakbal,objakcor,objakvag,objakrif,objaklspd,objaklvpd,objaksfpd,objakfb i,objakarm1,objakarm2,objaklcn,objakrm,objakyak);
       new File: file2 = fopen("materials.ini", io_write);
       fwrite(file2, coordsstring);
       fclose(file2);
       return 1;
}
public LoadMaterials()
{
       new arrCoords[15][64];
       new strFromFile2[256];
       new File: file = fopen("materials.ini", io_read);
       if (file)
       {
        fread(file, strFromFile2);
        split(strFromFile2, arrCoords, '|');
        colmats = strval(arrCoords[0]);
        objakgro = strval(arrCoords[1]);
        objakbal = strval(arrCoords[2]);
        objakcor = strval(arrCoords[3]);
        objakvag = strval(arrCoords[4]);
        objakrif = strval(arrCoords[5]);
        objaklspd = strval(arrCoords[6]);
        objaklvpd = strval(arrCoords[7]);
        objaksfpd = strval(arrCoords[8]);
        objakfbi = strval(arrCoords[9]);
        objakarm1 = strval(arrCoords[10]);
        objakarm2 = strval(arrCoords[11]);
        objaklcn = strval(arrCoords[12]);
        objakrm = strval(arrCoords[13]);
        objakyak = strval(arrCoords[14]);
        fclose(file);
       }
       return 1;
}  


5. В public OnGameModeInit()
Code

SetTimer("LoadMaterials", 1000, 0);
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);


6. 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);
         }
     }


7.Далее добавляем в public OnDialogResponse
Code
if(dialogid == 5551)
     {
     if(response)
     {
     SetPlayerCheckpoint(playerid,136.7081,1875.6571,22.4375,5.0);
     }
     }  


8. В public OnPlayerEnterCheckpoint добавляем
Code

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

Добавлено (09.02.2012, 11:41:29)
---------------------------------------------
9. Создаем сами команды в 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, "/warehouse", true) == 0)
     {
         if(IsPlayerConnected(playerid))
         {
             if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)//New Cops Spawn
             {
                 format(string, sizeof(string), "На складе LSPD %d/50000 матов", objaklspd);
                 SendClientMessage(playerid, COLOR_BLUE, string);
                 return 1;
             }
             if (PlayerInfo[playerid][pMember] == 8 || PlayerInfo[playerid][pLeader] == 8)//New Cops Spawn
             {
                 format(string, sizeof(string), "На складе SFPD %d/50000 матов", objaksfpd);
                 SendClientMessage(playerid, COLOR_BLUE, string);
                 return 1;
             }
                 if (PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12)//rm
             {
                 format(string, sizeof(string), "На складе LVPD %d/50000 матов", objaklvpd);
                 SendClientMessage(playerid, COLOR_BLUE, string);
                 return 1;
             }
             if (PlayerInfo[playerid][pMember] == 19 || PlayerInfo[playerid][pLeader] == 19)//51
             {
                 format(string, sizeof(string), "На складе: %d/100000 матов", objakarm2);
                 SendClientMessage(playerid, COLOR_BLUE, string);
                 return 1;
             }
             if (PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)//sf
             {
                 format(string, sizeof(string), "На складе : %d/50000 матов", objakarm1);
                 SendClientMessage(playerid, COLOR_BLUE, string);
                 return 1;
             }
                 if (PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2)// FBI
             {
                 format(string, sizeof(string), "На складе FBI %d матов", objakfbi);
                 SendClientMessage(playerid, COLOR_BLUE, string);
                 return 1;
             }
         }
         return 1;
     }
     if(strcmp(cmd, "/materialssell", true) == 0)
     {
              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))
             {
             tmp = strtok(cmdtext, idx);
             if(!strlen(tmp))
             {
                 SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /materialssell [êîë-âî] [1-2-3]");
                 return 1;
             }
             new playa = strval(tmp);
             tmp = strtok(cmdtext, idx);
             if(!strlen(tmp))
             {
                 SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /materialssell [êîë-âî] [1-2-3]");
                 SendClientMessage(playerid, COLOR_GRAD2, "Используйте: 1-LCN 2-RM 3-Yakuza");
                 return 1;
             }
             new coli = strval(tmp);
             if(coli < 1 || coli > 3) { SendClientMessage(playerid, COLOR_GREY, "не меньше 1, и больше 3!"); return 1; }
             if(coli == 1)
             {
             if(l==14||(m==14&&ran>=4))
             {
             objakgro -=playa;
             monobjakgro += playa*100;
             }
             else if(l==15||(m==15&&ran>=4))
             {
             objakcor -=playa;
             monobjakcor += playa*100;
             }
             else if(l==16||(m==16&&ran>=4))
             {
             objakbal -=playa;
             monobjakbal += playa*100;
             }
             else if(l==17||(m==17&&ran>=4))
             {
             objakrif -=playa;
             monobjakrif += playa*100;
             }
             else if(l==18||(m==18&&ran>=4))
             {
             objakvag -=playa;
             monobjakvag += playa*100;
             }
             objaklcn += playa;
             monobjaklcn -= playa*100;
             format(string, sizeof(string), "*Вы продали %d материалов LCN.",playa);
             SendClientMessage(playerid,COLOR_GREY,string);
             return 1;
             }
             else if(coli == 2)
             {
             if(l==14||(m==14&&ran>=4))
             {
             objakgro -=playa;
             monobjakgro += playa*100;
             }
             else if(l==15||(m==15&&ran>=4))
             {
             objakcor -=playa;
             monobjakcor += playa*100;
             }
             else if(l==16||(m==16&&ran>=4))
             {
             objakbal -=playa;
             monobjakbal += playa*100;
             }
             else if(l==17||(m==17&&ran>=4))
             {
             objakrif -=playa;
             monobjakrif += playa*100;
             }
             else if(l==18||(m==18&&ran>=4))
             {
             objakvag -=playa;
             monobjakvag += playa*100;
             }
             objakrm += playa;
             monobjakrm -= playa*100;
             format(string, sizeof(string), "*Вы продали %d материалов русской мафии.",playa);
             SendClientMessage(playerid,COLOR_GREY,string);
             return 1;
             }
             else if(coli == 3)
             {
             if(l==14||(m==14&&ran>=4))
             {
             objakgro -=playa;
             monobjakgro += playa*100;
             }
             else if(l==15||(m==15&&ran>=4))
             {
             objakcor -=playa;
             monobjakcor += playa*100;
             }
             else if(l==16||(m==16&&ran>=4))
             {
             objakbal -=playa;
             monobjakbal += playa*100;
             }
             else if(l==17||(m==17&&ran>=4))
             {
             objakrif -=playa;
             monobjakrif += playa*100;
             }
             else if(l==18||(m==18&&ran>=4))
             {
             objakvag -=playa;
             monobjakvag += playa*100;
             }
             objakyak += playa;
             monobjakyak -= playa*100;
             format(string, sizeof(string), "*Вы продали %d материалов Yakuza.",playa);
             SendClientMessage(playerid,COLOR_GREY,string);
             return 1;
             }
             }
                   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;
     }


KlimusДата: Четверг, 09.02.2012, 12:22:55 | Сообщение # 2
:-(
Сообщений: 367
+, молодец!

velixДата: Четверг, 09.02.2012, 12:33:35 | Сообщение # 3
:-(
Сообщений: 133
Оптимизация? Не, не слышал.


нахер


Сообщение отредактировал velix - Четверг, 09.02.2012, 20:31:09
psycho-sawДата: Четверг, 09.02.2012, 17:33:16 | Сообщение # 4
:-(
Сообщений: 355
lol.

Добавлено (09.02.2012, 17:33:16)
---------------------------------------------

Quote (Tailer)
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)

Quote (Tailer)
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))

Для таких вещей разве не нужен IsACop?

Quote (Tailer)
new mats1; new mats2; new colmats=100000; new matscar1; new matscar2; new objakrm=50000; new objakyak=50000; new objaklcn=50000; new objakgro = 50000 ; new monobjakgro = 10000 ; new objakbal = 50000 ; new monobjakbal = 10000 ; new objakcor = 50000 ; new monobjakcor = 10000 ; new objakvag = 50000 ; new monobjakvag = 10000 ; new objakrif = 50000 ; new monobjakrif = 10000 ; new monobjaklcn = 10000 ; new monobjakrm = 10000 ; new monobjakyak = 10000 ; new furgon[5]; new matso; new objaklspd;   new objaksfpd;   new objaklvpd;   new objakarm2;   new objakarm1;   new objakfbi;

ROFL

Лучше бы на PVar's,потом может напишу(Даже не для ГФ).

На повестке дня: RP Style
My work's:
[Pawn][Tutorial]Всё об функциях
[WTT prod.][SA:MP][GM]Hollywood v0.3[exclusive](Подробнее на wrong-turn-samp.clan.su)
SAMP-CITY Forum | Всё о GTA Multiplayers. SA-MP, MTA, IV-MP. » Знаменитые моды SA-MP » GodFather » [FAQ]Система материалов
Страница 1 из 11
Поиск:
Design by Tw33k | eXc-Server.ru Copyright SCT © 2008-2011 | Создать сайт бесплатно