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

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

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

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

Получать и развозить руду

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

Bart_Marco

Умник
Первое что делаем - заносим forwards
PHP:
forward LoadMaterials();  
forward SaveMaterials();  
forward ruda(playerid);  
forward IsAnRifa(playerid);
Следующий шаг - заносим переменные
PHP:
new encarier; // Вход в карьер  
new excarier; // Выход из карьера  
new Rudabox = 0; // Склад руды  
new Materialsbox = 0; // Склад завода  
new Bilaz1 = 0;  
new Bilaz2 = 0;  
new Bilaz3 = 0;  
new Bilaz4 = 0;  
new Bilaz5 = 0;  
new Bilaz6 = 0;  
new mammount; // Покупка материалов (введеное кол-во)  
new palammm[MAX_PLAYERS];  
new rudaslots = 1; 
new BELAZ[7];//для машин
Находим public IsAnInstructor(playerid)
Перед ним вставляем


PHP:
public ruda(playerid)  
{  
      new newcar = GetPlayerVehicleID(playerid);  
         SendClientMessage(playerid, COLOR_GREY, "Погрузка руды окончена. Отвезите руду в указанное место!");  
      TogglePlayerControllable(playerid, 1);  
      SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0);  
      if(newcar == 453) //Иды машин поменять 
      { Bilaz1 = 100; }  
      if(newcar == 454)  
      { Bilaz2 = 100; }  
      if(newcar == 455)  
      { Bilaz3 = 100; }  
      if(newcar == 456)  
      { Bilaz4 = 100; }  
      if(newcar == 457)  
      { Bilaz5 = 100; }  
      if(newcar == 458)  
      { Bilaz6 = 100; }  
      SaveMaterials();  
      return 1;  
}  

public IsAnRifa(playerid)  
{  
if(IsPlayerConnected(playerid))  
{  
      new leader = PlayerInfo[playerid][pLeader];  
      new member = PlayerInfo[playerid][pMember];  
      if(member==17)//Вместо 17 Вставляем ид Фракции Рифы  
      {  
       return 1;  
      }  
      if(leader==17)//Тут тоже вместо 17 ид Фракции Рифы  
      {  
       return 1;  
      }  
}  
return 0;  
}
Находим public LoadStuff() и перед ним вставляем

PHP:
public LoadMaterials()  
{  
      new arrCoords[9][64];  
      new strFromFile2[256];  
      new File: file = fopen("materials.ini", io_read);  
      if (file)  
      {  
       fread(file, strFromFile2);  
       split(strFromFile2, arrCoords, '|');  
             
       Rudabox = strval(arrCoords[0]);  
       Materialsbox = strval(arrCoords[1]);  
       Bilaz1 = strval(arrCoords[2]);  
       Bilaz2 = strval(arrCoords[3]);  
       Bilaz3 = strval(arrCoords[4]);  
       Bilaz4 = strval(arrCoords[5]);  
       Bilaz5 = strval(arrCoords[6]);  
       Bilaz6 = strval(arrCoords[7]);  
             
       fclose(file);  
      }  
      return 1;  
}  

public SaveMaterials()  
{  
      new coordsstring[256];  
      format(coordsstring, sizeof(coordsstring), "%d|%d|%d|%d|%d|%d|%d|%d", Rudabox, Materialsbox, Bilaz1, Bilaz2, Bilaz3, Bilaz4, Bilaz5, Bilaz6);  
      new File: file2 = fopen("materials.ini", io_write);  
      fwrite(file2, coordsstring);  
      fclose(file2);  
      return 1;  
}
В OnPlayerCommandText

PHP:
if(strcmp(cmd, "/loadruda", true) == 0)// Узнать кол-ко руды на складе 
     { 
         if(PlayerInfo[playerid][pJob] != 17 ) 
        { 
             SendClientMessage(playerid, COLOR_GREY, "Доступ имеют только водители Билазов!"); 
            return 1; 
          } 
        if (!PlayerToPoint(8.0, playerid,804.801,842.090,10.732)) 
        { 
            SendClientMessage(playerid, COLOR_GREY, "Нельзя здесь загружать руду!"); 
        } 
         else 
        { 
             SendClientMessage(playerid, COLOR_RED, "Вы не около склада !"); return 1; 
         } 
          format(string, sizeof(string), "Количество руды на складе: %d из 50000!", Rudabox); 
           SendClientMessage(playerid, COLOR_GREY, string); 
           return 1; 
       } 
        
       if(strcmp(cmd, "/ruda", true) == 0)// Загрузить руду в грузовик 
    { 
        if(PlayerInfo[playerid][pJob] != 17) 
          { 
            SendClientMessage(playerid, COLOR_GREY, "Доступ имеют только водители Билазов!"); 
            return 1; 
        } 
        new newcar = GetPlayerVehicleID(playerid); 
           if(newcar == BELAZ[0] || BELAZ[1] || BELAZ[2] || BELAZ[3] || BELAZ[4] || BELAZ[5]) 
        { 
        } 
          else 
        { 
            SendClientMessage(playerid, COLOR_GREY, "Вы не на белазе"); 
            return 1; 
        } 
        if(newcar == BELAZ[0]) 
        { 
            if(Bilaz1 == 100) 
            { 
                SendClientMessage(playerid, COLOR_GREY, "Машина уже загружена, едьте на склад!"); 
                   SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0); 
                   return 1; 
               } 
          } 
           if(newcar == BELAZ[1]) 
        { 
            if(Bilaz2 == 100) 
               { 
                   SendClientMessage(playerid, COLOR_GREY, "Машина уже загружена, едьте на склад!"); 
                   SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0); 
                   return 1; 
               } 
           } 
           if(newcar == BELAZ[2]) 
           { 
               if(Bilaz3 == 100) 
            { 
                   SendClientMessage(playerid, COLOR_GREY, "Машина уже загружена, едьте на склад!"); 
                   SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0); 
                   return 1; 
                } 
        } 
        if(newcar == BELAZ[3]) 
        { 
            if(Bilaz4 == 100) 
               { 
                SendClientMessage(playerid, COLOR_GREY, "Машина уже загружена, едьте на склад!"); 
                SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0); 
                return 1; 
            } 
        } 
            if(newcar == BELAZ[4]) 
        { 
            if(Bilaz5 == 100) 
               { 
                   SendClientMessage(playerid, COLOR_GREY, "Машина уже загружена, едьте на склад!"); 
                   SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0); 
                   return 1; 
               } 
        } 
        if(newcar == BELAZ[5]) 
        { 
            if(Bilaz6 == 100) 
               { 
                   SendClientMessage(playerid, COLOR_GREY, "Машина уже загружена, едьте на склад!"); 
                   SetPlayerCheckpoint(playerid, 804.801,842.090,10.732, 8.0); 
                   return 1; 
                } 
        } 
        SendClientMessage(playerid, COLOR_WHITE, "Следуйте к месту погрузки руды."); 
        if(rudaslots == 1) 
           { 
            SetPlayerCheckpoint(playerid, 599.036,932.729,-40.953, 8.0); 
             rudaslots += 1; 
        } 
        else if(rudaslots == 2) 
        { 
               SetPlayerCheckpoint(playerid, 556.766,923.956,-42.960, 8.0); 
             rudaslots += 1; 
           } 
           else if(rudaslots == 3) 
        { 
            SetPlayerCheckpoint(playerid, 576.121,871.943,-43.616, 8.0); 
            rudaslots += 1; 
           } 
           else if(rudaslots == 4) 
           { 
            SetPlayerCheckpoint(playerid, 551.299,878.674,-42.683, 8.0); 
            rudaslots += 1; 
        } 
        else if(rudaslots == 5) 
        { 
            SetPlayerCheckpoint(playerid, 540.563,844.478,-41.794, 8.0); 
             rudaslots += 1; 
           } 
           else if(rudaslots == 6) 
          { 
               SetPlayerCheckpoint(playerid, 585.906,844.187,-42.469, 8.0); 
              rudaslots = 1; 
           } 
           return 1; 
    } 
    if(strcmp(cmd, "/takeruda", true) == 0) 
    { 
        if(PlayerInfo[playerid][pJob] != 17) 
        { 
            SendClientMessage(playerid, COLOR_GREY, "Доступ имеют только водители Билазов!"); 
            return 1; 
        } 
        new newcar = GetPlayerVehicleID(playerid); 
           if(newcar == BELAZ[0] || BELAZ[1] || BELAZ[2] || BELAZ[3] || BELAZ[4] || BELAZ[5]) 
           { 
           } 
           else 
           { 
               SendClientMessage(playerid, COLOR_GREY, "Вы не в Билазе"); 
               return 1; 
           } 
           if(IsPlayerInCheckpoint(playerid)) {} 
           else { SendClientMessage(playerid, COLOR_RED, "Вы не на месте погрузки руды!"); return 1; } 
           if (PlayerToPoint(8.0, playerid,599.036,932.729,-40.953) || PlayerToPoint(8.0, playerid,556.766,923.956,-42.960) || PlayerToPoint(8.0, playerid,576.121,871.943,-43.616) || PlayerToPoint(8.0, playerid,551.299,878.674,-42.683) || PlayerToPoint(8.0, playerid,540.563,844.478,-41.794) || PlayerToPoint(8.0, playerid,585.906,844.187,-42.469)) 
        {} 
        else 
        { 
        SendClientMessage(playerid, COLOR_RED, "Вы не на месте погрузки руды!"); 
          return 1; 
           } 
          SendClientMessage(playerid, COLOR_WHITE, "Началась погрузка руды. Подождите минуту!"); 
        TogglePlayerControllable(playerid,0); 
        DisablePlayerCheckpoint(playerid); 
        SetTimerEx("ruda", 60000, 0, "d", playerid); 
           return 1;
if(strcmp(cmd, "/sellruda", true) == 0)// Сдать руду на склад 
    { 
        if(PlayerInfo[playerid][pJob] != 17) 
        { 
            SendClientMessage(playerid, COLOR_GREY, "Доступ имеют только водители Билазов!"); 
            return 1; 
        } 
        new newcar = GetPlayerVehicleID(playerid); 
           if(newcar == BELAZ[0] || BELAZ[1] || BELAZ[2] || BELAZ[3] || BELAZ[4] || BELAZ[5]) 
           {} else { SendClientMessage(playerid, COLOR_GREY, "Вы не в Билазе"); return 1; } 
           if(IsPlayerInCheckpoint(playerid)) {} 
           else { SendClientMessage(playerid, COLOR_RED, "Вы не возле склада!"); return 1; } 
           if (PlayerToPoint(8.0, playerid,804.801,842.090,10.732)) {} 
           else { SendClientMessage(playerid, COLOR_RED, "Вы не возле склада!"); return 1; } 
           if (Rudabox >= 50000) 
           { 
               SendClientMessage(playerid, COLOR_RED, "Извените, склад полон. Попробуйте позже!"); return 1; 
           } 
           if(newcar == BELAZ[0]) 
           { Bilaz1 = 0; } 
           if(newcar == BELAZ[1]) 
           { Bilaz2 = 0; } 
           if(newcar == BELAZ[2]) 
           { Bilaz3 = 0; } 
           if(newcar == BELAZ[3]) 
           { Bilaz4 = 0; } 
           if(newcar == BELAZ[4]) 
           { Bilaz5 = 0; } 
           if(newcar == BELAZ[5]) 
           { Bilaz6 = 0; } 
        SendClientMessage(playerid, COLOR_RED, "Доставлено, вы заработали $5000!"); 
        Rudabox +=100; 
        new sellmoney = 5000; 
        GivePlayerMoney(playerid, sellmoney); 
        DisablePlayerCheckpoint(playerid); 
        SaveMaterials(); 
           return 1; 
    } 
    ////////////////// 
     if(strcmp(cmd,"/mats",true)==0) 
      { 
           if(IsPlayerConnected(playerid)) 
         { 
              if(!IsAnRifa(playerid))// 
               { 
                SendClientMessage(playerid,COLOR_GREY,"Перевозкой материалов занимается Rifa"); 
                   return 1; 
               } 
               new x_nr[256]; 
               x_nr = strtok(cmdtext, idx); 
               if(!strlen(x_nr)) 
               { 
                 SendClientMessage(playerid, COLOR_WHITE, "Используйте:  /mats [название]"); 
                 SendClientMessage(playerid, COLOR_WHITE, "Используйте: купить, продать, загружено."); 
                 return 1; 
               } 
                        if(strcmp(x_nr,"купить",true) == 0) // покупка 
              { 
                    if(IsPlayerConnected(playerid)) 
                 { 
                    if(!PlayerToPoint(5.0, playerid, 321.816741,916.144958,22.131235))//Координаты покупки 
                    { 
                           SendClientMessage(playerid, COLOR_GREY, "Вы не на месте покупки материалов");// 
                           return 1; 
                    } 
                    tmp = strtok(cmdtext, idx); 
                    mammount = strval(tmp); 
                    if(!strlen(tmp)) 
                    { 
                        SendClientMessage(playerid, COLOR_WHITE, "+++:::Crazy_Universe:::+++ Используйте: /mats buy [количество]");// 
                        return 1; 
                    } 
                       new manybag = palammm[playerid] + mammount; 
                     if(manybag > 100) 
                    { 
                        SendClientMessage(playerid, COLOR_GREY, "Вы не можете взять больше"); 
                        return 1; 
                    } 
                       if(mammount < 1 || mammount > 100)// Диапазон покупки 
                       { 
                        SendClientMessage(playerid, COLOR_GREY, "Покупка материалов не должна превышать в 100 штук."); 
                        return 1; 
                       } 
                       if(GetPlayerMoney(playerid) < mammount * 50)// Кол-во материалов умножаем на 50, это и будет оплата за маты + проверка на наличные 
                       { 
                        SendClientMessage(playerid, COLOR_GREY, "У вас не хватает наличных."); 
                        return 1; 
                       } 
                       palammm[playerid] = mammount; 
                      format(string, sizeof(string), "Вы купили %d заготовок за %d$ !", palammm[playerid], mammount * 50); 
                       SendClientMessage(playerid, COLOR_GREY, string); 
                       GivePlayerMoney(playerid, - mammount * 50); 
                       Rudabox -= palammm[playerid]; 
                       SaveMaterials(); 
                   } 
             } 
               else if(strcmp(x_nr,"продать",true) == 0) 
              { 
                  if(IsPlayerConnected(playerid)) 
                  { 
                    if(!PlayerToPoint(5.0, playerid, 89.951538,-311.614837,1.381098)) 
                      { 
                          SendClientMessage(playerid, COLOR_GREY, "Вы не на оптовой базе."); 
                          return 1; 
                      } 
                      tmp = strtok(cmdtext, idx); 
                      if(!strlen(tmp)) 
                      { 
                           SendClientMessage(playerid, COLOR_WHITE, "Используйте: /mats продать [количество]"); 
                              return 1; 
                      } 
                       if (Materialsbox >= 50000) 
                     { 
                          SendClientMessage(playerid, COLOR_GREY, "Приём материалов окончен, база полна!"); 
                          return 1; 
                     } 
                     else 
                     { 
                           new sellprice = (100)*(palammm[playerid]); // Цена на продажу 
                          format(string, sizeof(string), "Вы продали %d заготовок за %d$!", palammm[playerid], sellprice); 
                          SendClientMessage(playerid, COLOR_GREY, string); 
                          GivePlayerMoney(playerid, (100)*(palammm[playerid])); 
                          Materialsbox += palammm[playerid]; 
                          palammm[playerid] = 0; 
                          SaveMaterials(); 
                     } 
                } 
               } 
               else if(strcmp(x_nr,"загружено",true) == 0) 
               { 
                if(IsPlayerConnected(playerid)) 
                { 
                     if(!PlayerToPoint(10.0, playerid, 89.951538,-311.614837,1.381098)) 
                     { 
                         SendClientMessage(playerid, COLOR_GREY, "Вы не на складе"); 
                          return 1; 
                     } 
                     format(string, sizeof(string), "На складе %d/50000 материалов", Materialsbox); 
                     SendClientMessage(playerid, COLOR_GREY, string); 
                } 
               } 
          }
Удаляем/исправляем /materials на /mats
===========
Потом создаём объекты в OnGameModeInit


PHP:
CreateObject(11081,327.55908203,906.82421875,29.18076706,0.00000000,352.00000000,303.99914551); //object(crackfacttanks_sfs) (1) 
      CreateObject(12941,822.45507812,848.72753906,9.78227806,355.99548340,0.00000000,113.99963379); //object(sw_lastdrop) (1) 
    CreateObject(3867,820.21386719,864.98046875,9.28411293,0.00000000,0.00000000,199.99511719); //object(ws_scaffolding_sfx) (1) 
    CreateObject(9361,50.22949219,-224.23339844,3.15150118,0.00000000,0.00000000,41.99523926); //object(boatoffice_sfn) (1) 
    CreateObject(3795,49.87942886,-227.43286133,1.11750674,0.00000000,0.00000000,356.00000000); //object(missile_04_sfxr) (1) 
    CreateObject(3794,47.81445312,-225.91308594,1.37590325,0.00000000,0.00000000,265.99548340, 250.0); //object(missile_07_sfxr) (1) 
    CreateObject(3396,49.85042191,-226.11399841,0.77650118,0.00000000,0.00000000,266.00000000); //object(a51_sdsk_4_) (1)
И где все Load'ы вставляем LoadMaterials();

Находим пикап
Materials Package building
Заменяем его на


PHP:
AddStaticPickup(1239, 1, 49.759590,-224.803787,1.776501); //Materials Package building  
         Create3DTextLabel( "Продажа материалов\nВведите /materials ", 0x008080FF, 49.759590,-224.803787,2.776501, 40.0, 0 );
Ниже дописываем

PHP:
  AddStaticPickup(1239, 1, 835.904968,858.773803,12.753187); //Работа водителя билаза  
      Create3DTextLabel( "Работа водителя Билаза\nЧтобы устроится введите /go", 0x008080FF, 835.904968,858.773803,13.5, 40.0, 0 );  
      encarier = CreatePickup(1318,1,835.898498,854.819152,12.614954); // Вход в карьер  
      excarier = CreatePickup(1318,1,814.163818,839.041259,10.970828); // Выход из карьера
Добавляем машины(я сразу присвоил машинам переменные, что бы было легче)

PHP:
BELAZ[0] = AddStaticVehicleEx(406,677.848,838.661,-42.209,61.986,-1,-1,600000); //Dumper 453  
    BELAZ[1] = AddStaticVehicleEx(406,689.033,853.925,-42.209,59.986,-1,-1,600000); //Dumper 454 
    BELAZ[2] = AddStaticVehicleEx(406,668.415,821.055,-42.202,59.985,-1,-1,600000); //Dumper 455 
    BELAZ[3] = AddStaticVehicleEx(406,677.759,926.492,-40.087,59.985,-1,-1,600000); //Dumper 456 
    BELAZ[4] = AddStaticVehicleEx(406,543.247,834.544,-39.816,319.985,-1,-1,600000); //Dumper 457 
    BELAZ[5] = AddStaticVehicleEx(406,598.033,873.089,-42.209,359.982,-1,-1,600000); //Dumper 458
ищем команду /go или /join, ну какая что бы устроится на работу и добавляем

PHP:
else if (GetPlayerState(playerid) == 1 && PlayerToPoint(3.0, playerid,835.904968,858.773803,12.753187))  
           {  
               if(PlayerInfo[playerid][pMember] > 0 || PlayerInfo[playerid][pFMember] < 255) { SendClientMessage(playerid, COLOR_GREY, "   Families cannot take on this Job !"); return 1; }  
               SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Вы собираетесь стать Водителем Билаза, и получить 5-часовой Контракт.");  
             SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Если у вас есть другая работа то сначало пропишите /quitjob.");  
             SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Если вы уверены что хотите стать Водителем грузовика, напечатайте /accept job.");  
             GettingJob[playerid] = 17; // id профессии (поменяйте на свой)  
         }
Потом в public OnPlayerPickUpPickup

PHP:
else if(pickupid == encarier)  
   {  
    SetPlayerInterior(playerid, 0);  
    SetPlayerPos(playerid, 811.919921,837.891418,9.830896);  
    }  
    else if(pickupid == excarier)  
   {  
    SetPlayerInterior(playerid, 0);  
    SetPlayerPos(playerid, 839.547973,857.159484,12.895117);  
    }
Из слов автора:
Таким образом мы имеем сохранение 2-х складов + сохранение в каждом дампере.
Ещё создайте в scriptfiles файл materials.ini

Автор идее FiLE95, автор Реализации FiLE95
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу