Dima_Neo
Умник
Всем привет, Сделал оптимизацию команды /lmenu и все не дописанные функции к ней.
Позволит лидеру менять:
- смена цвета
- смена номера
- смена места спавна
- смена модели
- смена ранга доступности
Сначало...в scriptfiles создай ballas.cfg
затем создаем
затем ко всем new добавляем
в OnGameModeInit
в OnGameModeExit
в DialogResponse
В команды
ко всем define добавим
Создадим Паблик
Что бы работала система рангов в public OnPlayerStateChange(playerid, newstate, oldstate) Добавим
В этом же паблике найдем
Добавим туда
и в конец мода
При перезагрузки сервера все поменяется как вы поставили.
в ballas.cfg должны быть координаты для каждоый машины
517,938.08020019531,-1123.4117431641,23.919048309326,0,85,85,Ballas,1// 1- ид.2,3,4,5 координаты.6,7 цвет.8 номер,9 время спавна.
Спасибо за внимания.Кому понравилось +
Позволит лидеру менять:
- смена цвета
- смена номера
- смена места спавна
- смена модели
- смена ранга доступности
Сначало...в scriptfiles создай ballas.cfg
затем создаем
PHP:
enum gInfo
{
gModel,// модель
Float:gPosX,
Float:gPosY,
Float:gPosZ,
Float:gAngle,
gColor1,
gColor2,
gNomer[14],// номер
gRang,//ранг
};
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);
PHP:
SaveBallas();
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;
}
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);
}
}
}
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 время спавна.
Спасибо за внимания.Кому понравилось +
Последнее редактирование:
