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

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

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

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

Работа на погрузчике[ALL]

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

Ria

Привет! В этой теме я расскажу как сделать работу грузчиком у себя на сервере.
Цель работы заключается в перевозе ящиков на погрузчике к точке разгрузки (тавтология?).








Нам потребуется:
- Streamer от Incognito

Приступим. Для начала создадим нужные переменные и объявим массивы.

PHP:
// Это массив с координатами "подбора" груза
new Float:checkLoader[7][3] = {
{-147.6650, 1112.1145, 19.7500},
{-147.7197, 1126.3038, 19.7422},
{-119.9986, 1136.4095, 19.7422},
{-102.0431, 1129.7157, 19.7500},
{-77.8152, 1133.7041, 19.7422},
{-83.7967, 1124.8478, 19.7422},
{-79.5303, 1111.5229, 19.7500}
};
// А здесь координаты "разгрузки"
new Float:checkLoaderUnload[3][3] = {
{-110.3317, 1117.3340, 19.7422},
{-113.2839, 1117.6509, 19.7422},
{-107.6272, 1117.7480, 19.7422}
};
new hereCheckLoader[MAX_PLAYERS];
new hereCheckUnLoader[MAX_PLAYERS];
new drawer[MAX_PLAYERS];

Теперь сделаем так чтобы при посадке в погрузчик, автоматически создавался чекпойнт. Идём в OnPlayerStateChange и вставляем туда:

PHP:
// Если игрок сел за руль
if(newstate == PLAYER_STATE_DRIVER)
{
            if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 530) // 530 это погрузчик
  {
      new rand = random(sizeof(checkLoader));
      hereCheckLoader[playerid] = CreateDynamicCP(checkLoader[rand][0], checkLoader[rand][1], checkLoader[rand][2], 1.6, -1, -1, playerid, 100.0);
      ShowPlayerDialog(playerid, 666, DIALOG_STYLE_MSGBOX, "Грузчик", "Отправляйся на красный чекпойнт за грузом.", "Хорошо", ""); // Покажем игроку диалог о том что он может начинать работать
  }
}
// Если игрок вылез из кара, удалим чекпойнты
else if(newstate == PLAYER_STATE_ONFOOT)
{
    if(hereCheckLoader[playerid]) DestroyDynamicCP(hereCheckLoader[playerid]);
    if(hereCheckUnLoader[playerid]) DestroyDynamicCP(hereCheckUnLoader[playerid]);
}
А теперь дадим денег игроку за каждый разгруженный ящик. Ищем (если нету, создаём) паблик OnPlayerEnterDynamicCP и вставляем в него:

PHP:
// Если игрок подобрал ящик
if(checkpointid == hereCheckLoader[playerid])
{
    drawer[playerid] = CreateDynamicObject(1224, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    AttachDynamicObjectToVehicle(drawer[playerid], GetPlayerVehicleID(playerid), 0.0, 0.6, 0.6, 0.0, 0.0, 0.0);
    new rand = random(sizeof(checkLoaderUnload));
    hereCheckUnLoader[playerid] = CreateDynamicCP(checkLoaderUnload[rand][0], checkLoaderUnload[rand][1], checkLoaderUnload[rand][2], 1.6, -1, -1, playerid, 100.0);
    DestroyDynamicCP(hereCheckLoader[playerid]);
}
// Если игрок сгрузил ящик
else if(checkpointid == hereCheckUnLoader[playerid])
{
    GivePlayerMoney(playerid, 20); // При желании вы можете записывать деньги в переменную а выдавать при зарплате
    GameTextForPlayer(playerid, "~g~+20$", 3000, 4);
    new rand = random(sizeof(checkLoader));
    hereCheckLoader[playerid] = CreateDynamicCP(checkLoader[rand][0], checkLoader[rand][1], checkLoader[rand][2], 1.6, -1, -1, playerid, 100.0);
    DestroyDynamicCP(hereCheckUnLoader[playerid]);
    DestroyDynamicObject(drawer[playerid]);
}

Ну вот вроде и всё. Автор урока happines.
Просьба не забывать указывать автора при публикации решения на других ресурсах.

Решение довольно деревянное, но у кого есть желание сам доработает для своего мода. В принципе это готовая работа, нужно только сделать пикап где будет устраиваться на работу игрок и добавить доп. проверку при посадке в погрузчик, чтобы только грузчики могли садиться. Решение рабочее 100%, взято из ещё не доработанного мода EoH RPG.

Работа находится в районе Лас Вентураса, в городке Форт Карсон.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу