Автор: happines
В этой теме я расскажу как сделать работу грузчиком у себя на сервере. Цель работы заключается в перевозе ящиков на погрузчике к точке разгрузки. Работа находится в районе Лас Вентураса, в городке Форт Карсон.
- Скриншоты
Нам потребуется: - Streamer от Incognito
Для начала создадим нужные переменные и объявим массивы.
Code: Select all
// Это массив с координатами "подбора" груза
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 и вставляем туда:
Code: Select all
// Если игрок сел за руль
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 и вставляем в него:
Code: Select all
// Если игрок подобрал ящик
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]);
}