PDA

Просмотр полной версии : [Вопрос] Как поставить ограничение администрации на создание машин командой /veh



Mesto
02.12.2016, 10:48
Помогите пожалуйста сделать ограничение на создание машин администратором !! Я думал, но не получается сделать, я догадываюсь что нужно установить значение "1" после того как админ создал машину, и сделать проверку if(PlayerInfo[playerid][CreateVehAdm] == 1) SendClientMessage(playerid, COLOR_WHITE, "Вы уже сделали автомобиль для удаления /delveh"); а если использует /delveh то значение устанавливалось бы на "0", но вот я не знаю как установить это значение без добавления строчки в БД mysql, помогите пожалуйста ! :fool: вообще если админ сделал авто, то еще одну он не сможет сделать пока не удалит старую.



CMD:veh(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 6 || dostup[playerid] == 0) return true;
if(sscanf(params, "ddd",params[0],params[1],params[2])) return SendClientMessage(playerid, COLOR_WHITE, "{D7D700}Введите: {D9D9D9}/veh [id авто] [Цвет №1] [Цвет №2]");
if(params[0] < 400 || params[0] > 611) return SendClientMessage(playerid, COLOR_WHITE, "{D7D700}Введите: {D9D9D9}/veh [id авто] [Цвет №1] [Цвет №2]");
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X,Y,Z);
new carid = CreateVehicle(params[0], X,Y,Z, 0.0, params[1], params[2], 60000);
PutPlayerInVehicleEx(playerid, carid, 0);
vehcreat[carid] = 1;
new lights, alarm, doors, bonnet, boot, objective;
SetVehicleParamsExEx(carid, 1,lights,alarm,doors,bonnet,boot,objective);
gVehicles[carid][vFuel] = gTransport[params[0]-400][trTank];
LinkVehicleToInterior(carid, GetPlayerInterior(playerid));
format(CommandMas, 128, "Автомобиль: [%i] успешно создан! Для удаления [/delveh]", params[0]);
SendClientMessage(playerid, COLOR_WHITE, CommandMas);
gVehicles[carid][vX] = X;
gVehicles[carid][vY] = Y;
gVehicles[carid][vZ] = Z;
return true;
}

Mr.Dark
02.12.2016, 11:17
Помогите пожалуйста сделать ограничение на создание машин администратором !! Я думал, но не получается сделать, я догадываюсь что нужно установить значение "1" после того как админ создал машину, и сделать проверку if(PlayerInfo[playerid][CreateVehAdm] == 1) SendClientMessage(playerid, COLOR_WHITE, "Вы уже сделали автомобиль для удаления /delveh"); а если использует /delveh то значение устанавливалось бы на "0", но вот я не знаю как установить это значение без добавления строчки в БД mysql, помогите пожалуйста ! :fool: вообще если админ сделал авто, то еще одну он не сможет сделать пока не удалит старую.



CMD:veh(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 6 || dostup[playerid] == 0) return true;
if(sscanf(params, "ddd",params[0],params[1],params[2])) return SendClientMessage(playerid, COLOR_WHITE, "{D7D700}Введите: {D9D9D9}/veh [id авто] [Цвет №1] [Цвет №2]");
if(params[0] < 400 || params[0] > 611) return SendClientMessage(playerid, COLOR_WHITE, "{D7D700}Введите: {D9D9D9}/veh [id авто] [Цвет №1] [Цвет №2]");
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid, X,Y,Z);
new carid = CreateVehicle(params[0], X,Y,Z, 0.0, params[1], params[2], 60000);
PutPlayerInVehicleEx(playerid, carid, 0);
vehcreat[carid] = 1;
new lights, alarm, doors, bonnet, boot, objective;
SetVehicleParamsExEx(carid, 1,lights,alarm,doors,bonnet,boot,objective);
gVehicles[carid][vFuel] = gTransport[params[0]-400][trTank];
LinkVehicleToInterior(carid, GetPlayerInterior(playerid));
format(CommandMas, 128, "Автомобиль: [%i] успешно создан! Для удаления [/delveh]", params[0]);
SendClientMessage(playerid, COLOR_WHITE, CommandMas);
gVehicles[carid][vX] = X;
gVehicles[carid][vY] = Y;
gVehicles[carid][vZ] = Z;
return true;
}

А зачем это тебе ?

Mesto
02.12.2016, 11:23
А зачем это тебе ?

чтобы неадекватные админы не сделали вот такое
http://imgur.com/a/MV46m

Geebrox
02.12.2016, 13:14
Писал на быструю руку, можешь доработать, если необходимо



CMD:veh(playerid, params[])
{
//проверка на админа и еще свои проверки добавь сюда, если необходимо
extract params -> new vehicletype, color1, color2; else
return SendClientMessage(playerid, -1,
!"Используйте /veh [модель] [цвет1] [цвет2]");

else if(!(399 < vehicletype < 612))
return SendClientMessage(playerid, -1,
!"Модель не может быть больше, чем 611 и меньше, чем 400!");

else if(!(-1 < color1 < 256) && !(-1 < color2 < 256))
return SendClientMessage(playerid, -1,
!"Цвет не может быть больше, чем 255 и меньше, чем 0!");

else if(GetPVarInt(playerid, "admin_vehicle"))
DestroyVehicle(GetPVarInt(playerid, "admin_vehicle"));

new
vehicleid,
Float: x,
Float: y,
Float: z,
Float: a;

GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
SetPVarInt(playerid, "admin_vehicle",
(vehicleid =
CreateVehicle(vehicletype, x, y, z, a, color1, color2, -1)));
LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
SetVehicleParamsEx(vehicleid, 1, 0, 0, 0, 0, 0, 0);
PutPlayerInVehicle(playerid, vehicleid, 0);
SendClientMessage(playerid, -1, !"Транспортное средство успешно создан!");
return 1;
}

CMD:delveh(playerid)
{
//проверка на админа и еще свои проверки добавь сюда, если необходимо
new vehicleid = GetPVarInt(playerid, "admin_vehicle");
if(!vehicleid)
return SendClientMessage(playerid, -1,
!"Вы не создавали транспортное средство!");
DestroyVehicle(vehicleid);
DeletePVar(playerid, "admin_vehicle");
SendClientMessage(playerid, -1, !"Транспортное средство успешно удален!");
return 1;
}


Нужно добавить проверку и удаление при выходе из сервера, если игрок создавал транспортное средство

Mesto
02.12.2016, 14:25
Спасибо тебе огромное, реально работает как нужно, удаляет старую машину в замен на новую )) а че написать нужно в public OnPlayerDisconnect чтобы авто удалилось?
Я вот че дописал туда:
DestroyVehicle(GetPVarInt(playerid, "admin_vehicle"));
DeletePVar(playerid, "admin_vehicle");
правильно?)

Geebrox
02.12.2016, 16:00
if(GetPVarInt(playerid, "admin_vehicle"))
{
DestroyVehicle(GetPVarInt(playerid, "admin_vehicle"));
DeletePVar(playerid, "admin_vehicle");
}


Только ты понизил мой реп :grin: буду считать случайностью )

Mesto
02.12.2016, 17:42
Извини, я видимо не туда нажал, верну как нибудь репу :grin: Спасибо за код !