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

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

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

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

leader menu(/lmenu) как на GameWorld

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

Dima_Neo

Умник
Всем привет, Сделал оптимизацию команды /lmenu и все не дописанные функции к ней.
Позволит лидеру менять:
- смена цвета
- смена номера
- смена места спавна
- смена модели
- смена ранга доступности

Сначало...в scriptfiles создай ballas.cfg

затем создаем
PHP:
enum gInfo 
{ 
    gModel,// модель 
    Float:gPosX, 
    Float:gPosY, 
    Float:gPosZ, 
    Float:gAngle, 
    gColor1, 
    gColor2, 
    gNomer[14],// номер 
    gRang,//ранг 
};
затем ко всем new добавляем
PHP:
new BallasInfo[8][gInfo],ballascar[8];

в OnGameModeInit

PHP:
LoadBallas(); 
ballascar[0] = CreateVehicle(BallasInfo[0][gModel], BallasInfo[0][gPosX], BallasInfo[0][gPosY], BallasInfo[0][gPosZ], BallasInfo[0][gAngle], BallasInfo[0][gColor1], BallasInfo[0][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[0][gNomer]); 
SetVehicleNumberPlate(ballascar[0], string); 
ballascar[1] = CreateVehicle(BallasInfo[1][gModel], BallasInfo[1][gPosX], BallasInfo[1][gPosY], BallasInfo[1][gPosZ], BallasInfo[1][gAngle], BallasInfo[1][gColor1], BallasInfo[1][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[1][gNomer]); 
SetVehicleNumberPlate(ballascar[1], string); 
ballascar[2] = CreateVehicle(BallasInfo[2][gModel], BallasInfo[2][gPosX], BallasInfo[2][gPosY], BallasInfo[2][gPosZ], BallasInfo[2][gAngle], BallasInfo[2][gColor1], BallasInfo[2][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[2][gNomer]); 
SetVehicleNumberPlate(ballascar[2], string); 
ballascar[3] = CreateVehicle(BallasInfo[3][gModel], BallasInfo[3][gPosX], BallasInfo[3][gPosY], BallasInfo[3][gPosZ], BallasInfo[3][gAngle], BallasInfo[3][gColor1], BallasInfo[3][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[3][gNomer]); 
SetVehicleNumberPlate(ballascar[3], string); 
ballascar[4] = CreateVehicle(BallasInfo[4][gModel], BallasInfo[4][gPosX], BallasInfo[4][gPosY], BallasInfo[4][gPosZ], BallasInfo[4][gAngle], BallasInfo[4][gColor1], BallasInfo[4][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[4][gNomer]); 
SetVehicleNumberPlate(ballascar[4], string); 
ballascar[5] = CreateVehicle(BallasInfo[5][gModel], BallasInfo[5][gPosX], BallasInfo[5][gPosY], BallasInfo[5][gPosZ], BallasInfo[6][gAngle], BallasInfo[5][gColor1], BallasInfo[5][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[5][gNomer]); 
SetVehicleNumberPlate(ballascar[5], string); 
ballascar[6] = CreateVehicle(BallasInfo[6][gModel], BallasInfo[6][gPosX], BallasInfo[6][gPosY], BallasInfo[6][gPosZ], BallasInfo[6][gAngle], BallasInfo[6][gColor1], BallasInfo[6][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[6][gNomer]); 
SetVehicleNumberPlate(ballascar[6], string); 
ballascar[7] = CreateVehicle(BallasInfo[7][gModel], BallasInfo[7][gPosX], BallasInfo[7][gPosY], BallasInfo[7][gPosZ], BallasInfo[7][gAngle], BallasInfo[7][gColor1], BallasInfo[7][gColor2],600); 
format(string,sizeof(string),"%s",BallasInfo[7][gNomer]); 
SetVehicleNumberPlate(ballascar[7], string);
в OnGameModeExit

PHP:
SaveBallas();
в DialogResponse

PHP:
   if(dialogid == 77) 
    { 
        if(response) 
        { 
            if(listitem == 0) 
            { 
                ShowPlayerDialog(playerid,78,DIALOG_STYLE_INPUT,"Leader menu","Введите ID модели:\n(http://wiki.wiki.pawno-info.ru/wiki/Vehicles:All)","OK","ОТМЕНА"); 
                SendClientMessage(playerid, COLOR_YELLOW, "* [ВНИМАНИЕ] Доступные модели"); 
                SendClientMessage(playerid, COLOR_LIGHTRED, "412 547 566 482"); 
            } 
            if(listitem == 1) 
            { 
                new carid = GetPlayerVehicleID(playerid); 
                for(new i; i < 8; i++) 
                { 
                    if(carid == ballascar[i]) 
                    { 
                        new Float:x,Float:y,Float:z,Float:a; 
                          GetVehiclePos(ballascar[i],x,y,z); 
                        GetVehicleZAngle(ballascar[i],a); 
                        BallasInfo[i][gPosX] = x; 
                          BallasInfo[i][gPosY] = y; 
                           BallasInfo[i][gPosZ] = z; 
                           BallasInfo[i][gAngle] = a; 
                          SendClientMessage(playerid, COLOR_WHITE, "Позиция была изменена"); 
                        break; 
                       } 

                } 
            } 
            if(listitem == 3) 
            { 
                ShowPlayerDialog(playerid,82,DIALOG_STYLE_INPUT,"Leader menu","С какого ранга должна быть доступной машина?","ОК","ОТМЕНА"); 
            } 
            if(listitem == 4) 
            { 
                ShowPlayerDialog(playerid,83,DIALOG_STYLE_INPUT,"Leader menu","Введите текст номера\nДо 8 символов","ОК","ОТМЕНА"); 
            } 
    } 
    if(dialogid == 83) 
    { 
        if(response) 
        { 
            if(strlen(inputtext) < 1 || strlen(inputtext) > 8) 
            { 
                ShowPlayerDialog(playerid,83,DIALOG_STYLE_INPUT,"Leader menu","Введите текст номера\nДо 8 символов","ОК","ОТМЕНА"); 
                return 1; 
            } 
            new carid = GetPlayerVehicleID(playerid); 
            for(new i; i < 8; i++) 
            { 
                if(carid == ballascar[i]) 
                { 
                   strmid(BallasInfo[i][gNomer], inputtext,0,strlen(inputtext), 255); 
                   SendClientMessage(playerid, COLOR_WHITE, "Номер изменен"); 
                } 
                SaveBallas(); 
            } 
        } 
    } 
    if(dialogid == 78) 
    { 
        if(response) 
        { 
            new model = strval(inputtext); 
            if(model == 412 || model == 547 || model == 566 || model == 482) 
            { 
                if(carid == ballascar[i]) 
                { 
                    BallasInfo[i][gModel] = model; 
                    format(string, sizeof(string),"Модель машины была сменена на: %d",model); 
                    SendClientMessage(playerid, COLOR_WHITE, string); 
                } 
                SaveBallas(); 
            } 
            else 
            { 
                ShowPlayerDialog(playerid,78,DIALOG_STYLE_INPUT,"Leader menu","Введите ID модели:\n(http://wiki.wiki.pawno-info.ru/wiki/Vehicles:All)","OK","ОТМЕНА"); 
                return 1; 
            } 
        } 
    } 
    if(dialogid == 79) 
    { 
        if(response) 
        { 
            ShowPlayerDialog(playerid,80,DIALOG_STYLE_INPUT,"Leader menu","Введите номер цвета [0 - 126]\nПосмотреть доступные цвета можно тут:\nhttp://wiki.wiki.pawno-info.ru/wiki/ColorID","OK","ОТМЕНА"); 
        } 
        else 
        { 
            ShowPlayerDialog(playerid,81,DIALOG_STYLE_INPUT,"Leader menu","Введите номер цвета [0 - 126]\nПосмотреть доступные цвета можно тут:\nhttp://wiki.wiki.pawno-info.ru/wiki/ColorID","OK","ОТМЕНА"); 
        } 
    } 
    if(dialogid == 80) 
    { 
        if(response) 
        { 
            new model = strval(inputtext); 
            new carid = GetPlayerVehicleID(playerid); 
               if(model < 0 || model > 126) 
               { 
                ShowPlayerDialog(playerid,81,DIALOG_STYLE_INPUT,"Leader menu","Введите номер цвета [0 - 126]\nПосмотреть доступные цвета можно тут:\nhttp://wiki.wiki.pawno-info.ru/wiki/ColorID","OK","ОТМЕНА"); 
                return 1; 
            } 
               if(carid == ballascar[i]) 
               { 
                   BallasInfo[i][gColor1] = model; 
                format(string, sizeof(string),"Цвет машины была сменена на: %d",model); 
                SendClientMessage(playerid, COLOR_WHITE, string); 
            } 
            SaveBallas(); 
        } 
    } 
    if(dialogid == 81) 
    { 
        if(response) 
        { 
            new carid = GetPlayerVehicleID(playerid); 
            new model = strval(inputtext); 
            if(model < 0 || model > 126) 
            { 
                ShowPlayerDialog(playerid,81,DIALOG_STYLE_INPUT,"Leader menu","Введите номер цвета [0 - 126]\nПосмотреть доступные цвета можно тут:\nhttp://wiki.wiki.pawno-info.ru/wiki/ColorID","OK","ОТМЕНА"); 
                return 1; 
            } 
            if(carid == ballascar[i]) 
               { 
                   BallasInfo[i][gColor2] = model; 
                format(string, sizeof(string),"Цвет машины была сменена на: %d",model); 
                SendClientMessage(playerid, COLOR_WHITE, string); 
            } 
            SaveBallas(); 
        } 
    } 
    if(dialogid == 82) 
    { 
        if(response) 
        { 
            new carid = GetPlayerVehicleID(playerid); 
            new model = strval(inputtext); 
            if(carid == ballascar[i]) 
            { 
                BallasInfo[i][gRang] = model; 
                format(string, sizeof(string),"Ранг машины была сменена на: %d",model); 
                SendClientMessage(playerid, COLOR_WHITE, string); 
             } 
             if(PlayerInfo[playerid][pRank] < model) 
             { 
                format(string, sizeof(string),"Транспорт доступен с ранга: %d",model); 
                SendClientMessage(playerid, COLOR_WHITE, string); 
                RemovePlayerFromVehicle(playerid); 
             } 
             SaveBallas(); 
        } 
    }
В команды

PHP:
if(strcmp(cmd, "/lmenu", true) == 0) 
    { 
         new carid = GetPlayerVehicleID(playerid); 
        if(!PlayerInfo[playerid][pLeader] >= 1) return SendClientMessage(playerid,-1,"Вам не доступна данная функция"); 
           if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Нужно находиться в автомобиле"); 
                if(PlayerInfo[playerid][pLeader] == 16) 
                { 
                    if(carid >= ballascar[0] && carid <= ballascar[7]) 
                    { 
                        ShowPlayerDialog(playerid, 77, DIALOG_STYLE_LIST,"Leader menu","Смена модели\nСмена цвета\nСмена места спавна\nИзменить ранг доступности авто\nСмена номера","OK","ОТМЕНА"); 
                    } 
                } 
                return 1; 
    }
ко всем define добавим

PHP:
forward CarEnter(playerid,carid);
Создадим Паблик

PHP:
public CarEnter(playerid,carid) 
{ 
    if(carid >= ballascar[0] && carid <= ballascar[7]) 
    { 
        if(PlayerInfo[playerid][pMember] == 16 || PlayerInfo[playerid][pLeader] == 16) 
        { 
            for(new i; i < 8; i++) 
            { 
                if(carid == ballascar[i]) 
                { 
                   if(BallasInfo[i][gRang] > PlayerInfo[playerid][pRank]) 
                   { 
                       SendClientMessage(playerid,COLOR_GREY,"Машина доступна с %s ранга",BallasInfo[i][gRang]); 
                       RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid); 
                   } 
                } 
            } 
        } 
        else 
        { 
            SendClientMessage(playerid,COLOR_GREY,"* Транспорт зарезервирован (Ballas)"); 
            RemovePlayerFromVehicle(playerid); SetTimerEx("CarHack", 3000, false, "i", playerid); 
        } 
     } 
 }
Что бы работала система рангов в public OnPlayerStateChange(playerid, newstate, oldstate) Добавим

PHP:
new caridi = GetPlayerVehicleID(playerid);
В этом же паблике найдем
PHP:
if(newstate == PLAYER_STATE_DRIVER)
{
Добавим туда

PHP:
CarEnter(playerid,caridi);

и в конец мода

PHP:
stock LoadBallas() 
{ 
    new arrCoords[9][64],strFromFile2[128]; 
    new File: file = fopen("ballas.cfg", io_read); 
    if (file) 
    { 
        new idx; 
        while (idx < 8) 
        { 
            fread(file, strFromFile2); 
            split(strFromFile2, arrCoords, ','); 
            UnLockCar(ballascar[idx]);
            BallasInfo[idx][gModel] = strval(arrCoords[0]); 
            BallasInfo[idx][gPosX] = floatstr(arrCoords[1]); 
            BallasInfo[idx][gPosY] = floatstr(arrCoords[2]); 
            BallasInfo[idx][gPosZ] = floatstr(arrCoords[3]); 
            BallasInfo[idx][gAngle] = floatstr(arrCoords[4]); 
            BallasInfo[idx][gColor1] = strval(arrCoords[5]); 
            BallasInfo[idx][gColor2] = strval(arrCoords[6]); 
            strmid(BallasInfo[idx][gNomer], arrCoords[7], 0, strlen(arrCoords[7]), 255); 
            BallasInfo[idx][gRang] = strval(arrCoords[8]); 
            idx++; 
        } 
        fclose(file); 
    } 
    return 1; 
} 

stock SaveBallas() 
{ 
    new idx; 
    new File: file2; 
    while (idx < 8) 
    { 
        new coordsstring[256]; 
        format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d,%s,%d\n", 
        BallasInfo[idx][gModel], 
        BallasInfo[idx][gPosX], 
        BallasInfo[idx][gPosY], 
        BallasInfo[idx][gPosZ], 
        BallasInfo[idx][gAngle], 
        BallasInfo[idx][gColor1], 
        BallasInfo[idx][gColor2], 
        BallasInfo[idx][gNomer], 
        BallasInfo[idx][gRang]); 
        if(idx == 0) 
        { 
            file2 = fopen("ballas.cfg", io_write); 
        } 
        else 
        { 
            file2 = fopen("ballas.cfg", io_append); 
        } 
        fwrite(file2, coordsstring); 
        idx++; 
        fclose(file2); 
    } 
    return 1; 
}

При перезагрузки сервера все поменяется как вы поставили.

в ballas.cfg должны быть координаты для каждоый машины
517,938.08020019531,-1123.4117431641,23.919048309326,0,85,85,Ballas,1// 1- ид.2,3,4,5 координаты.6,7 цвет.8 номер,9 время спавна.

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