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

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

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

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

Система конопли/кустов.

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

Frank_Walker

Ученик
Доброго времени суток, уважаемые форумчане!
На многих серверах установлена система конопли/кустов, но не везде ее можно найти.
Недавно ковырялся в моде VC:RP, нашел систему конопли/кустов и решил вырезать, выложив его сюда!
Ну приступим...
​


Открываем поиск(CTRL + F), находим pInfo. Нашли? Отлично!
Добавляем туда:


Код:
[COLOR="#000000"]pKust[/COLOR]
Далее.. Перед pInfo добавляем систему:
​

Код:
[COLOR="#000000"]
enum nInfo
{
    nId,     
    Float:nX,
    Float:nY,
    Float:nZ,
    nVoda,
    nRost,
    nModel,
    nSor,
};
new NarkoInfo[MAX_KUST][nInfo];[/COLOR]
Добавили? Хорошо.. Идем дальше!..

Код:
[COLOR="#000000"]
if(strcmp(cmd, "/датькуст", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
        new kusts;
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
              SendClientMessage(playerid, COLOR_GREY, "Пиши: /датькуст [id/ЧастьИмени] [кол-во]");
              return 1;
         }
         //giveplayerid = strval(tmp);
         giveplayerid = ReturnUser(tmp);
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))
         {
              SendClientMessage(playerid, COLOR_GREY, "Пиши: /датькуст [id/ЧастьИмени] [кол-во]");
              return 1;
         }
         kusts = strval(tmp);
         if (IsPlayerConnected(giveplayerid))
         {
             if(giveplayerid != INVALID_PLAYER_ID)
             {
                   if(PlayerInfo[giveplayerid][pLocal] == 106)
                   {
                          SendClientMessage(playerid, COLOR_GREY, "Недопустимо в данной локации!");
                           return 1;
                   }
                   if (ProxDetectorS(5.0, playerid, giveplayerid))
                   {
                         GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                         GetPlayerName(playerid, sendername, sizeof(sendername));
                         if (kusts > 0 && PlayerInfo[playerid][pKust] >= kusts)
                         {
                              PlayerInfo[giveplayerid][pKust] += kusts;
                              format(string, sizeof(string), "* %s достает пакетик с семенами и передает их %s.", sendername ,giveplayer);
                              ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                              format(string, sizeof(string), "   Вы передали %d кустов!", kusts);
                              SendClientMessage(playerid, COLOR_GREY, string);
                              format(string, sizeof(string), "   Тебе передали %d кустов!", kusts);
                              SendClientMessage(giveplayerid, COLOR_GREY, string);
                              }
                                 else
                                 {
                                      SendClientMessage(playerid, COLOR_GREY, "Вы указали неверное количество!");
                                  }
                               }
                                 else
                                 {
                                      SendClientMessage(playerid, COLOR_GREY, "Вы слишком далеко!");
                                 }
                            }//invalid id
                        }
                        else
                        {
                                format(string, sizeof(string), "   %i неактивный игрок !", giveplayerid);
                                SendClientMessage(playerid, COLOR_GREY, string);
                        }
                }
                return 1;
        }
        if(strcmp(cmd, "/сорвать", true) == 0)
        {
        if(IsPlayerConnected(playerid))
        {
        for(new m = 0; m < NARKOKUST; m++ )
        {
        if (PlayerToPoint(3,playerid,NarkoInfo[m][nX],NarkoInfo[m][nY],NarkoInfo[m][nZ]))
        {
        NarkoInfo[m][nSor] = 1;
        SendClientMessage(playerid, COLOR_WHITE, "Вы сорвали куст!");
        if(NarkoInfo[m][nRost] >= 100)
        {
        PlayerInfo[playerid][pDrugs] += 50;
        SendClientMessage(playerid, COLOR_WHITE, "Вы собрали 50 грамм наркотиков!");
        }
        SaveKust();
        new sa = NarkoInfo[m][nId];
        DestroyDynamicObject(NarkoKusts[sa]);
        LoadKust();
        PlayerInfo[playerid][pKust] += 1;
        NARKOKUST -= 1;
        SaveStuff();
        }
        }
   }
   return 1;
   }
   if(strcmp(cmd, "/полить", true) == 0)
   {
   if(IsPlayerConnected(playerid))
   {
   for(new m = 0; m < NARKOKUST; m++ )
   {
           if (PlayerToPoint(2,playerid,NarkoInfo[m][nX],NarkoInfo[m][nY],NarkoInfo[m][nZ]))
           {
           if(NarkoInfo[m][nVoda] > 50)
           {
           SendClientMessage(playerid, COLOR_WHITE, "Этот цветок уже поливали!");
           return 1;
           }
           NarkoInfo[m][nVoda] = 100;
           if(NarkoInfo[m][nRost] >= 100)
           {
           NarkoInfo[m][nModel] = 810;
           SendClientMessage(playerid, COLOR_WHITE, "Вы полили цветок.");
           SaveKust();
           new sa = NarkoInfo[m][nId];
           DestroyDynamicObject(NarkoKusts[sa]);
           LoadKust();
           return 1;
           }
           NarkoInfo[m][nModel] = 677;
           SendClientMessage(playerid, COLOR_WHITE, "Вы посадили цветок.");
           SaveKust();
           new sa = NarkoInfo[m][nId];
           DestroyDynamicObject(NarkoKusts[sa]);
           LoadKust();
           }
           }
   }
   return 1;
   }
   if(strcmp(cmd, "/посадить", true) == 0)
   {
        if(IsPlayerConnected(playerid))
        {
        if(PlayerInfo[playerid][pKust] < 1)
        {
                   SendClientMessage(playerid, COLOR_WHITE, "У вас нет цветков !");
                   return 1;
                  }
                    new Float:X,Float:Y,Float:Z;
                    GetPlayerPos(playerid, X,Y,Z);
                    NARKOKUST ++;
                    new NarkoID;
                    NarkoID = NARKOKUST-1;
                    NarkoInfo[NARKOKUST-1][nId] = NarkoID;
                    NarkoInfo[NARKOKUST-1][nX] = X;
                    NarkoInfo[NARKOKUST-1][nY] = Y;
                    NarkoInfo[NARKOKUST-1][nZ] = Z-1;
                    NarkoInfo[NARKOKUST-1][nVoda] = 100;
                    NarkoInfo[NARKOKUST-1][nRost] = 0;
                    NarkoInfo[NARKOKUST-1][nModel] = 677;
                    NarkoInfo[NARKOKUST-1][nSor] = 0;
                    SaveStuff();
                    SaveKust();
                    LoadKust();
                    format(string, sizeof(string), "* Вы посадили цветок.");
                    SendClientMessage(playerid, COLOR_GREY, string);
                    PlayerInfo[playerid][pKust] -= 1;
                    ClearAnimations(playerid);
                    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); 
                }
                return 1;
           }[/COLOR]
Команды мы записали..
Далее мы добавляем в конец мода паблики:


Код:
[COLOR="#000000"]
public LoadKust()
{
    new arrCoords[8][64];
    new strFromFile2[256];
    new File: file = fopen("Kust.cfg", io_read);
    if (file)
    {
        new idx;
        while (idx < NARKOKUST)
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, '|');
            NarkoInfo[idx][nId] = strval(arrCoords[0]);
            NarkoInfo[idx][nX] = floatstr(arrCoords[1]);
            NarkoInfo[idx][nY] = floatstr(arrCoords[2]);
            NarkoInfo[idx][nZ] = floatstr(arrCoords[3]);
            NarkoInfo[idx][nVoda] = strval(arrCoords[4]);
            NarkoInfo[idx][nRost] = strval(arrCoords[5]);
            NarkoInfo[idx][nModel] = strval(arrCoords[6]);
            NarkoInfo[idx][nSor] = strval(arrCoords[7]);
            if(NarkoInfo[idx][nSor] == 0)
            {
                new sa = NarkoInfo[idx][nId];
                NarkoKusts[sa] = CreateDynamicObject(NarkoInfo[idx][nModel],NarkoInfo[idx][nX],NarkoInfo[idx][nY],NarkoInfo[idx][nZ],0,0,0);
            }
            idx++;
            }
           fclose(file);
        }
        return 1;
}

public VodaKust()
{
for(new ni = 0; ni != NARKOKUST; ni++)
{
NarkoInfo[ni][nVoda] -= 1;
if(NarkoInfo[ni][nVoda] < 1)
{
   if(NarkoInfo[ni][nVoda] < -100)
   {
   NarkoInfo[ni][nSor] = 1;
   SaveKust();
   new sa = NarkoInfo[ni][nId];
   DestroyDynamicObject(NarkoKusts[sa]);
   LoadKust();
   return 1;
   }
   NarkoInfo[ni][nModel] = 692;
   SaveKust();
   new sa = NarkoInfo[ni][nId];
   DestroyDynamicObject(NarkoKusts[sa]);
   LoadKust();
   }
}
return 1;
}

public RostKust()
{
   for(new ni = 0; ni != NARKOKUST; ni++)
   {
       NarkoInfo[ni][nRost] += 1;
       if(NarkoInfo[ni][nRost] >= 100)
       {
           NarkoInfo[ni][nModel] = 810;
       }
       SaveKust();
       new sa = NarkoInfo[ni][nId];
       DestroyDynamicObject(NarkoKusts[sa]);
       LoadKust();
   }
   return 1;
}

public SaveKust()
{
        new idx;
        new File: file2;
        while (idx < NARKOKUST)
        {
                new coordsstring[256];
                format(coordsstring, sizeof(coordsstring), "%d|%f|%f|%f|%d|%d|%d|%d\n",
                NarkoInfo[idx][nId],
                NarkoInfo[idx][nX],
                NarkoInfo[idx][nY],
                NarkoInfo[idx][nZ],
                NarkoInfo[idx][nVoda],
                NarkoInfo[idx][nRost],
                NarkoInfo[idx][nModel],
                NarkoInfo[idx][nSor]);
                if(idx == 0)
                {
                        file2 = fopen("Kust.cfg", io_write);
                }
                else
                {
                        file2 = fopen("Kust.cfg", io_append);
                }
                fwrite(file2, coordsstring);
                idx++;
                fclose(file2);
        }
        return 1;
}

public LoadNarko()
{
    new arrCoords[1][64];
    new strFromFile2[256];
    new File: file = fopen("narko.cfg", io_read);
    if (file)
    {
        fread(file, strFromFile2);
        split(strFromFile2, arrCoords, '|');
        new narkos;
        narkos = strval(arrCoords[0]);
        NarkoGotovo = narkos;
    }
}

public Advertising()
{
    for(new i = 0; i < GetMaxPlayers(); i++)
    {
       if(IsPlayerConnected(i))
       {
            NarkoGotovo += 1;
            VodaKust();
            SaveKust();
            LoadKust();
       }
   }
   return 1;
}[/COLOR]
Ко всем forward's добавляем:

Код:
[COLOR="#000000"]forward LoadKust();
forward SaveKust();
forward LoadNarko();
forward VodaKust();
forward RostKust();
forward Advertising();[/COLOR]
Форварды мы добавили..
Ищем public OnGameModeInit()


Добавим таймеры и пикап:

Код:
[COLOR="#000000"]SetTimer("Advertising",365000,1);
SetTimer("RostKust", 900000, 1);
narko10 = CreatePickup(1254,2, 1929.8159,-1089.3829,24.7380);[/COLOR]
Чуть ниже добавляем:

Код:
[COLOR="#000000"]LoadNarko();
LoadKust();[/COLOR]
Ищем public OnPlayerPickUpPickup(playerid, pickupid) и добавляем:

Код:
[COLOR="#000000"]if(pickupid == narko10) 
        {
         if(PlayerInfo[playerid][pJob] == 19)
         {
           if(NarkoGotovo > 19)
           {
            PlayerInfo[playerid][pKust] += 2;
            NarkoGotovo -= 20;
            GivePlayerMoney(playerid, -1000);
            SendClientMessage(playerid, COLOR_WHITE, "Вы купили цветок у диллера !");
           }
           else
           {
           SendClientMessage(playerid, COLOR_WHITE, "У диллеров сейчас нет товара!");
           }
          }
          else
          {
          SendClientMessage(playerid, COLOR_WHITE, "Вы не нашли диллера!");
          }
        }[/COLOR]
Находим public LoadStuff() и добавляем:

Код:
[COLOR="#000000"]NARKOKUST = strval(arrCoords[13]);[/COLOR]
И в public SaveStuff() добавляем:

Код:
[COLOR="#000000"]format(coordsstring, sizeof(coordsstring), "%d|%d|%d|%d.", Jackpot,Tax,TaxValue,Security,NARKOKUST,OWNABLECARS);[/COLOR]
Находим public OnPlayerConnect(playerid) и добавляем туда:

Код:
[COLOR="#000000"]PlayerInfo[playerid][pKust] = 0;[/COLOR]
Осталось лишь сделать сохранение и загрузку кустов.

Добавляем в public OnPlayerRegister(playerid, password[]):

Код:
[COLOR="#000000"]format(var, 64, "Kust=%d\n",PlayerInfo[playerid][pKust]);fwrite(hFile, var);[/COLOR]
Дальше ищем public OnPlayerLogin(playerid,password[]) и добавляем:

Код:
[COLOR="#000000"]if( strcmp( key , "Kust" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKust] = strval( val ); }[/COLOR]
И последний штрих, добавляем ко всем new:

Код:
[COLOR="#008000"]new[/COLOR] NARKOKUST;
[COLOR="#008000"]new[/COLOR] NarkoGotovo;
[COLOR="#008000"]new[/COLOR] narko10;
[COLOR="#008000"]new[/COLOR] NarkoKusts[2000000];

Вот собственно и конец мануала!
Вырезано из мода VC:RP.
С вами был я, Frank_Walker, удачи!
Будут ошибки, помогу! :bf:
​
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу