Доступ к готовым решениям

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

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

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

Мануал Система Лоурайдеров

Expert

Изучающий
Пользователь
Регистрация
11 Июн 2015
Сообщения
195
Лучшие ответы
0
Репутация
55
Доброго времени суток, пользователи P-I.RU!
Недавно увидел на одном из серверов (GameWorld-RP) систему лоурайдеров.
Решил сделать на скорую руку что-то подобное, может кому-нибудь понадобится.

Используются 4 вида стрелок: верх, низ, лево, право.
Используется Num клавиши.






Приступим к выполнению работы.


Ко всем переменным:

PHP:
#define f(%1,              format(%1,sizeof(%1),
new Text:LRRegister[4];
new Text:LRRightBox[5];
new PlayerText:LRShowVehicle[MAX_PLAYERS];
new PlayerText:LRArrows[MAX_PLAYERS][3];
new gChangeLRVehicle[8] = {536, 575, 534, 567, 535, 566, 576, 412};
new gNumberLRList[MAX_PLAYERS];
new gGamersLowRiders[2];
new Float:gDriversPlace[2][4] =
{
    {1791.4767,-1927.1775,13.3891,359.1139},
    {1791.8611,-1899.7068,13.3980,180.8908}
};
new PlayerVehicleID[MAX_PLAYERS];
new PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];

new SelectedImage[4][15] =
{
    "LD_BEAT:up",
    "LD_BEAT:down",
    "LD_BEAT:left",
    "LD_BEAT:right"
};

new PlayerImageID[MAX_PLAYERS][3];
new bool:StartServerRiders;
new TimerSecond[2];
new PlayerCountGoodKeys[MAX_PLAYERS];
В OnPlayerKeyStateChange:

PHP:
    if(StartServerRiders)
    {
        if(gGamersLowRiders[0] == playerid || gGamersLowRiders[1] == playerid)
        {
            if(newkeys & KEY_ANALOG_UP)
            {
                if(PlayerImageID[playerid][1] == 0) GameTextForPlayer(playerid, "~g~GOOD KEYS", 500, 4), PlayerCountGoodKeys[playerid] += 5;
                else GameTextForPlayer(playerid, "~r~BAD KEYS", 500, 4);
                   PlayerChangeImage(playerid, true);
            }
            if(newkeys & KEY_ANALOG_DOWN)
            {
                if(PlayerImageID[playerid][1] == 1) GameTextForPlayer(playerid, "~g~GOOD KEYS", 500, 4), PlayerCountGoodKeys[playerid] += 5;
                else GameTextForPlayer(playerid, "~r~BAD KEYS", 500, 4);
                   PlayerChangeImage(playerid, true);
            }
            if(newkeys & KEY_ANALOG_LEFT)
            {
                if(PlayerImageID[playerid][1] == 2) GameTextForPlayer(playerid, "~g~GOOD KEYS", 500, 4), PlayerCountGoodKeys[playerid] += 5;
                else GameTextForPlayer(playerid, "~r~BAD KEYS", 500, 4);
                   PlayerChangeImage(playerid, true);
            }
            if(newkeys & KEY_ANALOG_RIGHT)
            {
                if(PlayerImageID[playerid][1] == 3) GameTextForPlayer(playerid, "~g~GOOD KEYS", 500, 4), PlayerCountGoodKeys[playerid] += 5;
                else GameTextForPlayer(playerid, "~r~BAD KEYS", 500, 4);
                   PlayerChangeImage(playerid, true);
            }
            new mes[MAX_PLAYER_NAME+20];
            if(gGamersLowRiders[0] == playerid) f(mes, "1. %s     %i", PlayerName[playerid], PlayerCountGoodKeys[playerid]), TextDrawSetString(LRRightBox[2],mes);
            else f(mes, "2. %s     %i", PlayerName[playerid], PlayerCountGoodKeys[playerid]), TextDrawSetString(LRRightBox[3],mes);
        }
    }
В OnGameModeInit:

PHP:
    // ВЫБОР МАШИНЫ
    LRRegister[0] = TextDrawCreate(373.199981, 169.500000, "usebox");
    TextDrawLetterSize(LRRegister[0], 0.000000, 14.450742);
    TextDrawTextSize(LRRegister[0], 247.599990, 0.000000);
    TextDrawAlignment(LRRegister[0], 1);
    TextDrawColor(LRRegister[0], 0);
    TextDrawUseBox(LRRegister[0], true);
    TextDrawBoxColor(LRRegister[0], -2147483393);
    TextDrawSetShadow(LRRegister[0], 0);
    TextDrawSetOutline(LRRegister[0], 0);
    TextDrawFont(LRRegister[0], 0);

    LRRegister[1] = TextDrawCreate(251.199996, 306.133331, "LD_BEAT:left");
    TextDrawLetterSize(LRRegister[1], 0.000000, 0.000000);
    TextDrawTextSize(LRRegister[1], 29.600021, 28.373321);
    TextDrawAlignment(LRRegister[1], 1);
    TextDrawColor(LRRegister[1], -1);
    TextDrawSetShadow(LRRegister[1], 0);
    TextDrawSetOutline(LRRegister[1], 0);
    TextDrawFont(LRRegister[1], 4);
    TextDrawSetSelectable(LRRegister[1], true);

    LRRegister[2] = TextDrawCreate(340.999938, 304.893310, "LD_BEAT:right");
    TextDrawLetterSize(LRRegister[2], 0.000000, 0.000000);
    TextDrawTextSize(LRRegister[2], 29.600021, 28.373321);
    TextDrawAlignment(LRRegister[2], 1);
    TextDrawColor(LRRegister[2], -1);
    TextDrawSetShadow(LRRegister[2], 0);
    TextDrawSetOutline(LRRegister[2], 0);
    TextDrawFont(LRRegister[2], 4);
    TextDrawSetSelectable(LRRegister[2], true);

    LRRegister[3] = TextDrawCreate(297.600097, 310.613342, "play");
    TextDrawLetterSize(LRRegister[3], 0.449999, 1.600000);
    TextDrawTextSize(LRRegister[3], 327.199890, 28.373331);
    TextDrawAlignment(LRRegister[3], 1);
    TextDrawColor(LRRegister[3], -1);
    TextDrawUseBox(LRRegister[3], true);
    TextDrawBoxColor(LRRegister[3], 0);
    TextDrawSetShadow(LRRegister[3], 0);
    TextDrawSetOutline(LRRegister[3], 1);
    TextDrawBackgroundColor(LRRegister[3], 51);
    TextDrawFont(LRRegister[3], 1);
    TextDrawSetProportional(LRRegister[3], 1);
    TextDrawSetSelectable(LRRegister[3], true);
    // ПРАВЫЙ БОКС
    LRRightBox[0] = TextDrawCreate(643.599975, 150.086669, "usebox");
    TextDrawLetterSize(LRRightBox[0], 0.000000, 10.984079);
    TextDrawTextSize(LRRightBox[0], 490.799987, 0.000000);
    TextDrawAlignment(LRRightBox[0], 1);
    TextDrawColor(LRRightBox[0], 0);
    TextDrawUseBox(LRRightBox[0], true);
    TextDrawBoxColor(LRRightBox[0], 12582826);
    TextDrawSetShadow(LRRightBox[0], 0);
    TextDrawSetOutline(LRRightBox[0], 0);
    TextDrawFont(LRRightBox[0], 0);

    LRRightBox[1] = TextDrawCreate(586.400024, 150.079940, "1:20");
    TextDrawLetterSize(LRRightBox[1], 0.449999, 1.600000);
    TextDrawAlignment(LRRightBox[1], 1);
    TextDrawColor(LRRightBox[1], -1);
    TextDrawSetShadow(LRRightBox[1], 0);
    TextDrawSetOutline(LRRightBox[1], 1);
    TextDrawBackgroundColor(LRRightBox[1], 51);
    TextDrawFont(LRRightBox[1], 2);
    TextDrawSetProportional(LRRightBox[1], 1);

    LRRightBox[2] = TextDrawCreate(502.600006, 185.426635, "_");// name 1
    TextDrawLetterSize(LRRightBox[2], 0.237199, 1.517866);
    TextDrawAlignment(LRRightBox[2], 1);
    TextDrawColor(LRRightBox[2], -1);
    TextDrawSetShadow(LRRightBox[2], 0);
    TextDrawSetOutline(LRRightBox[2], 1);
    TextDrawBackgroundColor(LRRightBox[2], 51);
    TextDrawFont(LRRightBox[2], 2);
    TextDrawSetProportional(LRRightBox[2], 1);

    LRRightBox[3] = TextDrawCreate(501.200042, 204.346710, "_");// name 2
    TextDrawLetterSize(LRRightBox[3], 0.237199, 1.517866);
    TextDrawAlignment(LRRightBox[3], 1);
    TextDrawColor(LRRightBox[3], -1);
    TextDrawSetShadow(LRRightBox[3], 0);
    TextDrawSetOutline(LRRightBox[3], 1);
    TextDrawBackgroundColor(LRRightBox[3], 51);
    TextDrawFont(LRRightBox[3], 2);
    TextDrawSetProportional(LRRightBox[3], 1);
    
    LRRightBox[4] = TextDrawCreate(284.000061, 380.053253, "LD_BEAT:cring");
    TextDrawLetterSize(LRRightBox[4], 0.000000, 0.000000);
    TextDrawTextSize(LRRightBox[4], 47.999984, 47.786636);
    TextDrawAlignment(LRRightBox[4], 1);
    TextDrawColor(LRRightBox[4], -1061109505);
    TextDrawSetShadow(LRRightBox[4], 0);
    TextDrawSetOutline(LRRightBox[4], 0);
    TextDrawFont(LRRightBox[4], 4);
    
    gGamersLowRiders[0] = INVALID_PLAYER_ID;
    gGamersLowRiders[1] = INVALID_PLAYER_ID;
В OnPlayerConnect:

PHP:
    LRShowVehicle[playerid] = CreatePlayerTextDraw(playerid, 252.800003, 169.493316, "LD_SPAC:white");
    PlayerTextDrawLetterSize(playerid, LRShowVehicle[playerid], 0.000000, 0.000000);
    PlayerTextDrawTextSize(playerid, LRShowVehicle[playerid], 116.000015, 131.413360);
    PlayerTextDrawAlignment(playerid, LRShowVehicle[playerid], 1);
    PlayerTextDrawColor(playerid, LRShowVehicle[playerid], -1);
    PlayerTextDrawUseBox(playerid, LRShowVehicle[playerid], true);
    PlayerTextDrawBoxColor(playerid, LRShowVehicle[playerid], 0xA9A9A9FF);
    PlayerTextDrawBackgroundColor(playerid, LRShowVehicle[playerid], 0xA9A9A9FF);
    PlayerTextDrawSetShadow(playerid, LRShowVehicle[playerid], 0);
    PlayerTextDrawSetOutline(playerid, LRShowVehicle[playerid], 0);
    PlayerTextDrawFont(playerid, LRShowVehicle[playerid], 5);
    PlayerTextDrawSetPreviewRot(playerid, LRShowVehicle[playerid], -15.000000, 0.000000, 15.000000, 1.0);
    
    LRArrows[playerid][0] = CreatePlayerTextDraw(playerid, 338.599731, 393.000061, "LD_BEAT:right");
    LRArrows[playerid][1] = CreatePlayerTextDraw(playerid, 300.799896, 394.240081, "LD_BEAT:up");
    LRArrows[playerid][2] = CreatePlayerTextDraw(playerid, 260.399871, 393.253387, "LD_BEAT:left");
    for(new i; i <= 2; i++)
    {
        PlayerTextDrawLetterSize(playerid, LRArrows[playerid][i], 0.000000, 0.000000);
        PlayerTextDrawTextSize(playerid, LRArrows[playerid][i], 16.000015, 20.160001);
        PlayerTextDrawAlignment(playerid, LRArrows[playerid][i], 1);
        PlayerTextDrawColor(playerid, LRArrows[playerid][i], -1);
        PlayerTextDrawSetShadow(playerid, LRArrows[playerid][i], 0);
        PlayerTextDrawSetOutline(playerid, LRArrows[playerid][i], 0);
        PlayerTextDrawFont(playerid, LRArrows[playerid][i], 4);
    }
    PlayerVehicleID[playerid] = INVALID_VEHICLE_ID
В OnPlayerCommandText:

PHP:
       if(strcmp(cmdtext, "/startriders", true) == 0)
    {
        SelectTextDraw(playerid, 0xFFFFE0AA);
        PlayerTextDrawSetPreviewModel(playerid, LRShowVehicle[playerid], gChangeLRVehicle[gNumberLRList[playerid]]);
        for(new i; i <= 3; i++) TextDrawShowForPlayer(playerid, LRRegister[i]);
        PlayerTextDrawShow(playerid,LRShowVehicle[playerid]);
    }
В OnPlayerClickTextDraw:

PHP:
        if(clickedid == LRRegister[1]) // left
        {
              if(!gNumberLRList[playerid]) gNumberLRList[playerid] = 7;
             else gNumberLRList[playerid]--;
             PlayerTextDrawSetPreviewModel(playerid, LRShowVehicle[playerid], gChangeLRVehicle[gNumberLRList[playerid]]);
             PlayerTextDrawShow(playerid,LRShowVehicle[playerid]);
        }
        else if(clickedid == LRRegister[2]) // right
        {
            if(gNumberLRList[playerid] == 7) gNumberLRList[playerid] = 0;
            else gNumberLRList[playerid]++;
            PlayerTextDrawSetPreviewModel(playerid, LRShowVehicle[playerid], gChangeLRVehicle[gNumberLRList[playerid]]);
            PlayerTextDrawShow(playerid,LRShowVehicle[playerid]);
        }
        else if(clickedid == LRRegister[3]) // play
        {
              CancelSelectTextDraw(playerid);
              for(new i; i <= 1; i++)
              {
                  if(gGamersLowRiders[i] != INVALID_PLAYER_ID) continue;
                  
                  gGamersLowRiders[i] = playerid;
                  PlayerVehicleID[playerid] = CreateVehicle(gChangeLRVehicle[gNumberLRList[playerid]], gDriversPlace[i][0],gDriversPlace[i][1],gDriversPlace[i][2], gDriversPlace[i][3], random(10), 0, -1);
                  PutPlayerInVehicle(playerid, PlayerVehicleID[playerid], 0);
                  AddVehicleComponent(PlayerVehicleID[playerid], 1087);
                  for(new c; c <= 3; c++) TextDrawHideForPlayer(playerid,LRRegister[c]);
                PlayerTextDrawHide(playerid,LRShowVehicle[playerid]);
                
                for(new c; c <= 4; c++) TextDrawShowForPlayer(playerid, LRRightBox[c]);
                new randomImage = random(sizeof(SelectedImage));
                PlayerTextDrawSetString(playerid, LRArrows[playerid][0], SelectedImage[randomImage]);
                PlayerTextDrawShow(playerid,LRArrows[playerid][0]);
                PlayerImageID[playerid][0] = randomImage;
                
                new mes[MAX_PLAYER_NAME+20];
                f(mes, "%i. %s     0", i+1, PlayerName[playerid]), TextDrawSetString(LRRightBox[i+2],mes);
                
                return 1;
              }
              SendClientMessage(playerid, 0xA9A9A9FF, "Места на сражение заняты.");
        }
В любой секундный таймер:

PHP:
    if(gGamersLowRiders[0] != INVALID_PLAYER_ID && gGamersLowRiders[1] != INVALID_PLAYER_ID)
    {
        if(!StartServerRiders)
        {
            new mes[10];
            if(!TimerSecond[0])
            {
                TimerSecond[0] = 15;
                SendClientMessage(gGamersLowRiders[0], 0x00FF00FF, "Битва начнется через 15 секунд!");
                SendClientMessage(gGamersLowRiders[1], 0x00FF00FF, "Битва начнется через 15 секунд!");
            }
            else
            {
                if(TimerSecond[0] == 1)
                {
                    StartServerRiders = true, TimerSecond[0] = 0;
                    SendClientMessage(gGamersLowRiders[1], 0x00FF00FF, "Начинай!");
                    TimerSecond[1] = 80;
                    PlayerChangeImage(gGamersLowRiders[0], false);
                    PlayerChangeImage(gGamersLowRiders[1], false);
                }
                else TimerSecond[0] --;
            }
            f(mes, "~p~%i sec", TimerSecond[0]), GameTextForPlayer(gGamersLowRiders[0], mes, 500, 4);
            GameTextForPlayer(gGamersLowRiders[1], mes, 500, 4);
        }
        else
        {
            if(TimerSecond[1] > 0) TimerSecond[1]--;
            new mes[10];
            f(mes, "%s", ConvertSeconds(TimerSecond[1])), TextDrawSetString(LRRightBox[1],mes);
            if(!TimerSecond[1])
            {
                if(PlayerCountGoodKeys[gGamersLowRiders[0]] > PlayerCountGoodKeys[gGamersLowRiders[1]])
                {
                    SendClientMessage(gGamersLowRiders[0], 0xFF00FFFF, "Поздравляем с победой!"), SendClientMessage(gGamersLowRiders[1], 0xFFFF00FF, "Ты проиграл!");
                }
                else if(PlayerCountGoodKeys[gGamersLowRiders[1]] > PlayerCountGoodKeys[gGamersLowRiders[0]])
                {
                    SendClientMessage(gGamersLowRiders[1], 0xFF00FFFF, "Поздравляем с победой!"), SendClientMessage(gGamersLowRiders[0], 0xFFFF00FF, "Ты проиграл!");
                }
                else if(PlayerCountGoodKeys[gGamersLowRiders[1]] == PlayerCountGoodKeys[gGamersLowRiders[0]])
                {
                    SendClientMessage(gGamersLowRiders[1], 0xFF00FFFF, "Ничья!"), SendClientMessage(gGamersLowRiders[0], 0xFFFF00FF, "Ничья!");
                }
                StartServerRiders = false;
                TextDrawHideForPlayer(gGamersLowRiders[0], LRRightBox[0]);
                TextDrawHideForPlayer(gGamersLowRiders[0], LRRightBox[1]);
                TextDrawHideForPlayer(gGamersLowRiders[0], LRRightBox[2]);
                TextDrawHideForPlayer(gGamersLowRiders[0], LRRightBox[3]);
                TextDrawHideForPlayer(gGamersLowRiders[0], LRRightBox[4]);
                PlayerTextDrawHide(gGamersLowRiders[0], LRArrows[gGamersLowRiders[0]][0]);
                PlayerTextDrawHide(gGamersLowRiders[0], LRArrows[gGamersLowRiders[0]][1]);
                PlayerTextDrawHide(gGamersLowRiders[0], LRArrows[gGamersLowRiders[0]][2]);
                
                TextDrawHideForPlayer(gGamersLowRiders[1], LRRightBox[0]);
                TextDrawHideForPlayer(gGamersLowRiders[1], LRRightBox[1]);
                TextDrawHideForPlayer(gGamersLowRiders[1], LRRightBox[2]);
                TextDrawHideForPlayer(gGamersLowRiders[1], LRRightBox[3]);
                TextDrawHideForPlayer(gGamersLowRiders[1], LRRightBox[4]);
                PlayerTextDrawHide(gGamersLowRiders[1], LRArrows[gGamersLowRiders[1]][0]);
                PlayerTextDrawHide(gGamersLowRiders[1], LRArrows[gGamersLowRiders[1]][1]);
                PlayerTextDrawHide(gGamersLowRiders[1], LRArrows[gGamersLowRiders[1]][2]);
                
                DestroyVehicle(PlayerVehicleID[gGamersLowRiders[0]]), DestroyVehicle(PlayerVehicleID[gGamersLowRiders[1]]);
                
                SpawnPlayer(gGamersLowRiders[0]), SpawnPlayer(gGamersLowRiders[1]);
                gGamersLowRiders[0] = INVALID_PLAYER_ID, gGamersLowRiders[1] = INVALID_PLAYER_ID;
                PlayerVehicleID[gGamersLowRiders[0]] = INVALID_VEHICLE_ID, PlayerVehicleID[gGamersLowRiders[1]] = INVALID_VEHICLE_ID;
            }

        }
    }
В конец мода:

PHP:
stock ConvertSeconds(times)
{
    new string[128];
    if(times < 60) f(string, "0:%i", times);
    else if(times == 60) string = "1:00";
    else if(times > 60 && times < 3600)
    {
        new Float: minutes;
        new seconds;
        minutes = times / 60;
        seconds = times % 60;
        f(string, "%.0f:%i", minutes, seconds);
    }
    return string;
}

stock PlayerChangeImage(playerid, bool:type)
{
    if(type)
    {
        PlayerImageID[playerid][2] = PlayerImageID[playerid][1];
        PlayerTextDrawSetString(playerid, LRArrows[playerid][2], SelectedImage[PlayerImageID[playerid][2]]);
        PlayerTextDrawShow(playerid,LRArrows[playerid][2]);
    }
    PlayerImageID[playerid][1] = PlayerImageID[playerid][0];
    PlayerTextDrawSetString(playerid, LRArrows[playerid][1], SelectedImage[PlayerImageID[playerid][1]]);
    PlayerTextDrawShow(playerid,LRArrows[playerid][1]);
    
    new randomImage = random(sizeof(SelectedImage));
    PlayerTextDrawSetString(playerid, LRArrows[playerid][0], SelectedImage[randomImage]);
    PlayerTextDrawShow(playerid,LRArrows[playerid][0]);
    PlayerImageID[playerid][0] = randomImage;
    return 1;
}
Вот и все ;)

Чтобы начать соревнования лоурайдеров введите
PHP:
/startriders
и выберите любую машину, после ожидайте противника и начинайте.:dn:

Так же прикрепляю FS: YandexDisk (
Ссылка удалена администрацией - нерабочая)
 
Последнее редактирование модератором:
Сверху Снизу