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

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

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

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

[Урок] Исправленная работа дальнобойщика

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

Artemios

Умник
Работа "Дальнобойщик" для мода GodFather. Работает 100%, перенесена в поселок.

Ко всем new добавим:

PHP:
new checkpointd[MAX_PLAYERS];
new acceptgruz[MAX_PLAYERS];
new Float:RandomGRUZ[15][3] = {
{-1888.3518,-1729.9679,21.4561},
{828.0614,854.6743,12.6972},
{2493.7378,2772.9478,10.5368},
{2467.7561,1948.0699,9.9756},
{2792.6357,-2475.4504,13.3700},
{501.2822,-1356.1147,15.8554},
{-2102.5251,208.3739,35.0051},
{1316.2872,-912.7282,37.6074},
{1251.3525,248.5478,19.2124},
{1350.6709,-1753.4606,13.0613},
{-1946.8146,234.8263,33.5364},
{-2712.5488,232.3394,4.0357},
{1053.1881,-1029.8051,31.7937},
{2397.5576,1040.8143,10.5236},
{2397.5576,1040.8143,10.5236} };
Потом ко всем 3d текстам и пикапам в public OnGameModeInit() добавим:

PHP:
    Create3DTextLabel("Подсказка:\nТут можно устроиться на работу: {7CFC00}Дальнобойщик{FFFFFF}\nЧтоб устроиться введите: {7CFC00}/go{FFFFFF}",0xFFFFFFFF,-50.0121,-269.3635,6.6332,20.0,0,1);
CreatePickup(1239, 23, -50.0121,-269.3635,6.6332);
    CreateDynamic3DTextLabel(" Взять груз дальнобойщику\n/delivery ",0xBFF600FF,-22.9128,-273.2436,5.4297,50.0);
CreatePickup(1239,23,-22.9128,-273.2436,5.4297);
Далее идем в public OnPlayerEnterCheckpoint(playerid) и добавляем:

PHP:
if(acceptgruz[playerid] !=  0)
    {
    for(new i = 0x0; i < sizeof(RandomGRUZ); i++)
    {
        if(IsPlayerInRangeOfPoint(playerid,10.0,RandomGRUZ[i][0], RandomGRUZ[i][1], RandomGRUZ[i][2])
        {
            if(IsPlayerInAnyVehicle(playerid))
            {
                if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, COLOR_WHITE,"Нет прицепа! Иди ищи прицеп.");
                DisablePlayerCheckpoint(playerid);
                acceptgruz[playerid] = 0;
                GiveMoney(playerid,random(1000) + 6000);
                format(string,sizeof(string),"Вы доставили груз и заработали %i$",rand);
                SendClientMessage(playerid, COLOR_ORANGE,string);
            }
        }
        else return  SendClientMessage(playerid, COLOR_WHITE,"Вы находитесь не в месте разгрузки груза!");
    }
Потом добавим команды в public OnPlayerCommandText(playerid, cmdtext[]):

PHP:
    if(strcmp(cmd, "/go", true) == 0)
    {
            if (GetPlayerState(playerid) == 1 && PlayerToPoint(3.0, playerid,-50.0121,-269.3635,6.6332)) return SendClientMessage(playerid, COLOR_GREY, "Server: В этом месте нельзя утроится на работу!");
                  {
                    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Уволиться с работы можно будет только по истечению 5-ти часов отработанных по контракту.");
                    ShowPlayerDialog(playerid,116,DIALOG_STYLE_MSGBOX,"Контракт","Вам была предложена работа \"Дальнобойщика\", если вы согласны, то подпишите контракт.","Подписать","Отказаться");
                    GettingJob[playerid] = 16;
                    return 1;
                }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "Server: У Вас уже есть работа, или у Вас нет паспорта!");
            }
        }
        return 1;
    }
И

PHP:
if(strcmp(cmd,"/delivery",true) == 0)
{
        if(PlayerInfo[playerid][pJob] == 16) return SendClientMessage(playerid,COLOR_GREY,"Вы не работаете дальнобойщиком!");
        if(IsPlayerInRangeOfPoint(playerid,10.0,-22.9128,-273.2436,5.4297)) return SendClientMessage(playerid,COLOR_GREY,"Вы находитесь не в месте загрузки груза!");
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_GREY,"Вы не в транспорте!");
        new carid = GetPlayerVehicleID(playerid);
        if(GetVehicleModel(carid) == 514) return   SendClientMessage(playerid,COLOR_GREY,"Вы не в машине дальнобойщика!");
        if(IsAnyTrailerAttachedToVehicle(carid)) return SendClientMessage(playerid,COLOR_GREY,"У вас не прицеплен прицеп!");
        if(acceptgruz[playerid] != 0) return SendClientMessage(playerid,COLOR_GREY,"Вы уже загрузили груз!");
        DisablePlayerCheckpoint(playerid);
        GameTextForPlayer(playerid, "~r~MEC¦O PA?‚PY?K… ЊOMEЌE®O ®A PAѓAPE", 2500, 1);
        SendClientMessage(playerid,COLOR_LIGHTBLUE,"Вы загрузили груз, отвезите его заказчику!");
        acceptgruz[playerid] = 1;
          new rand = random(sizeof(RandomGRUZ));
        SetPlayerCheckpoint(playerid, RandomGRUZ[rand][0], RandomGRUZ[rand][1], RandomGRUZ[rand][2], 8.0);
          return true ;
}
Все связанное с транспортом для этой работы.

В конце мода создадим сток:

PHP:
stock IsAnyTrailerAttachedToVehicle(vehicleid)
{
    new trailerid = GetVehicleTrailer(vehicleid);
    new modelid = GetVehicleModel(trailerid);
    if(modelid == 435 || modelid == 591) return true;
    return false;
}
Это проверка на прицеп.

Далее ко всем машинам добавим:

PHP:
    AddStaticVehicleEx(514,-61.0347,-324.9564,6.0130,270.8889,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-61.4161,-317.8141,6.0171,269.9076,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-61.5548,-310.8012,6.0167,270.9304,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-61.5602,-303.8195,6.0183,269.4847,-1,-1,CAR_SPAWN_TIME);
       AddStaticVehicleEx(514,-39.8904,-376.4206,6.0179,0.5866,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-46.6055,-376.6276,5.9900,359.6903,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(591,0.6693,-377.4727,6.0802,1.8403,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(435,-6.3759,-377.5096,6.0312,1.8223,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(591,-13.1154,-377.6660,6.0938,358.7585,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(435,-19.5792,-377.7712,6.0729,359.7721,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(591,-32.7590,-377.7761,6.0680,2.6862,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(435,-26.5159,-377.7709,6.1003,2.0099,-1,-1,CAR_SPAWN_TIME);
Тут и прицепы и тягачи.
---
Дополнительно:
Проверка на машины, когда неработающий игрок сядет в машину дальнобойщика, его выкинет.

Так же ко всем машинам добавим (только с переменными):

PHP:
    truck[0] = AddStaticVehicleEx(514,-61.0347,-324.9564,6.0130,270.8889,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-61.4161,-317.8141,6.0171,269.9076,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-61.5548,-310.8012,6.0167,270.9304,-1,-1,CAR_SPAWN_TIME);
    AddStaticVehicleEx(514,-61.5602,-303.8195,6.0183,269.4847,-1,-1,CAR_SPAWN_TIME);
       AddStaticVehicleEx(514,-39.8904,-376.4206,6.0179,0.5866,-1,-1,CAR_SPAWN_TIME);
    truck[1] = AddStaticVehicleEx(514,-46.6055,-376.6276,5.9900,359.6903,-1,-1,CAR_SPAWN_TIME);
Затем в public CarEnter(playerid,carid) добавим:

PHP:
if(carid >= truck[0] && carid <= truck[1])
    {
        if(PlayerInfo[playerid][pJob] == 16) return SendClientMessage(playerid,COLOR_LIGHTRED,"Вы не работаете Дальнобойщиком!");
        RemovePlayerFromVehicle(playerid);
    }
В данном готовом решении я использовал 16 id работы по счету, меняйте на свою.
Автор урока: Artemios
Оптимизация: Mark_N
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу