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

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

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

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

/veh, /delveh, /alldelveh

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

Erick_Wester

Новичок
Халлу, ПИ:bs:​

Решил выложить 3 команды(вырезка канеш:au:), а именно:
/veh - создание админ кара с ограничением по количеству.
/delveh - думаю, что все понятно.
/alldelveh - удаление всех созданных админами каров.


Особенности:
Код:
1. Можно установить кол-во машин, которые смогут создавать администраторы.
2. У каждой созданной машины есть свой уникальный ID.(Можно в логи INSERT INTO)
3. Возможность удалить все созданные машины
В общем поехали...
В дефайны суюем(Если, конечно, вам это нужно)
PHP:
#define SCM                        SendClientMessage
#define COLOR_WHITE        0xFAEBD7AA
#define COLOR_GREY          0xAFAFAFAA
#define COLOR_ADMIN 	 0x00CC66FF
Ко всем new:
PHP:
new AVehicle[80+1]={-1,...};
new TotalAdminVehicles = 0;
/veh
PHP:
CMD:veh(playerid,params[])
{
    if(!p_info[playerid][bAdmin]) return 1; //Ваша переманная с админкой
	if(p_info[playerid][bAdmin] < 6) return SCM(playerid, COLOR_WHITE, "Вы не уполномочены использовать эту команду!"); // Опять же она,переменная с адмой
	if(sscanf(params,"ddd",params[0],params[1],params[2])) return	SCM(playerid, COLOR_WHITE, " Используйте: /veh [carid] [цвет1] [цвет2]"); // Проверочка, все ли введено
	if(params[0] < 400 || params[0] > 611) return SCM(playerid, COLOR_WHITE, "Номер машины не может быть меньше 400 и больше чем 611!"); // Проверочка на ID кара, вдруг такого нет
	if(params[1] < 0 || params[1] > 126) return SCM(playerid, COLOR_WHITE, "Номер цвета не может быть меньше 0 и больше 126!"); // Проверка первого цвета
	if(params[2] < 0 || params[2] > 126) return SCM(playerid, COLOR_WHITE, "Номер цвета не может быть меньше 0 и больше 126!"); // Проверка второго цвета
	if(TotalAdminVehicles > 80) // Тут лимит, на данный момент больше 80 низя
	{
	    SCM(playerid,CGRAY,"Лимит админ-машин превышен"); // Если машин больше 80, сообщим админу, что-бы бежал искать ранее созданные
	    return 1;
	}
	new Float:X,Float:Y,Float:Z; // Нужно же где то хранить координаты
	GetPlayerPos(playerid, X,Y,Z); // Получаем координаты игрока

	AVehicle[TotalAdminVehicles] = CreateVehicle(params[0], X+2,Y,Z, 0.0, params[1], params[2], -1); // Создаем кар, carid которого хранится в AVehicle[TotalAdminVehicles] (лучше заменить на свою функцию спавна кара, если она конечно есть)
	LinkVehicleToInterior(AVehicle[TotalAdminVehicles], GetPlayerInterior(playerid)); // Помезаем авто в инт игрока
	SetVehicleVirtualWorld(AVehicle[TotalAdminVehicles],GetPlayerVirtualWorld(playerid)); // Помещаем авто в виртуальный мир игрока

	format(stringer, 128, "[A] %s [%d] создал автомобиль [model: %d] [vehicleid: %d]", NamePlayer[playerid],playerid,params[0],AVehicle[TotalAdminVehicles]); // NamePlayer[playerid] замените на свою переменную с ником/ функцию получения ника
	AdmMes(COLOR_ADMIN, stringer,1); // Юзаем свою функцию оповещения админов. Если нужно, могу эту дать

	TotalAdminVehicles ++; // Прибавляем 1 к переменной, в которой хранится кол-во уже созданных машин
	return 1;
}
/delveh
PHP:
CMD:delveh(playerid,params[])
{
	if(!p_info[playerid][bAdmin]) return 1; //Ваша переманная с админкой
	if(p_info[playerid][bAdmin] < 8) return SCM(playerid, COLOR_WHITE, "Вы не уполномочены использовать эту команду!"); // Опять же она,переменная с адмой
	if(GetPlayerState(playerid) != 2) return SCM(playerid, COLOR_WHITE, "Вы не в машине"); // Проверяем, находится ли игрок за рулем
	if(!TotalAdminVehicles) return 1; // Ну прост нужно :D
	new vehh = GetPlayerVehicleID(playerid); // Переменная, в которой хранится VehID
	new slot = -1; // Новую переменную создадим и дадим значеие -1, ибо так нужно.
	for(new i = 0; i < TotalAdminVehicles; i++) // Цикл перебора админ-машин
	{
	    if(vehh == AVehicle[i]) // И еще проверочка, если вехид равен вехиду кара, который создал админ спускаемся ниже, иначе пропускаем следующую { }
	    {
	    	slot=i; // Нужно куда-то сохранить циферку, как нельзя кстати slot
	    	break; // Выходим из цикла
	    }

	}
	if(slot == -1) return SCM(playerid, COLOR_WHITE,  "Этот автомобиль не создавал администратор"); // Проверочка, вдруг хитрый админчег хочет удалить авто игрока
	format(stringer, 128, "[A] %s удалил автомобиль [model: %d] [vehicleid: %d]", NamePlayer[playerid],GetVehicleModel(AVehicle[slot]),AVehicle[slot]); // NamePlayer[playerid] замените на свою переменную/ функцию получения ника
	AdmMes(COLOR_ADMIN, stringer,1); // Изаем свою функцию оповещения админов, если нужно, могу эту дать
	if(IsValidVehicle(AVehicle[slot])) // Проверяем, существует ли машина с таким vehicleid
	{
		DestroyVehicle(AVehicle[slot]); // Как и с CreateVehicle, лучше заменить на свою функцию удаления кара, если она конечно есть
	}
	AVehicle[slot] = 0; // Обнуляем переменную, в которой храним вехид
    TotalAdminVehicles--; // Удаляем 1 из всех созданных машинок
	return 1;
}
/alldelveh
PHP:
CMD:alldelveh(playerid,params[])
{
	if(!p_info[playerid][bAdmin]) return 1; //Ваша переманная с админкой
	if(p_info[playerid][bAdmin] < 8) return SCM(playerid, COLOR_WHITE, "Вы не уполномочены использовать эту команду!"); // Опять же она,переменная с адмой
	format(stringer, 128, "[A] %s удалил все автомобили созданные администраторами", NamePlayer[playerid]); // NamePlayer[playerid] замените на свою переменную/ функцию получения ника
	AdmMes(COLOR_ADMIN, stringer,1); // Юзаем свою функцию оповещения админов. Если нужно, могу эту дать
	for(new i = 0; i < TotalAdminVehicles; i++) // Цикл перебора админ-машин
	{
	    if(IsValidVehicle(AVehicle[i])) // Проверяем, существует ли машина с таким vehicleid
	    {
			DestroyVehicle(AVehicle[i]); // Удаляем машину под идом AVehicle[i] (Как и с CreateVehicle, лучше заменить на свою функцию удаления кара, если она конечно есть)
		}
		AVehicle[i] = 0; // Конечно перезаписалась-бы, но лучше обнулим
	}
	TotalAdminVehicles=0; // Обнуляем счетчик машинок
	return 1;
}
Да, стринги не считал, ленивый просто, кому нужно - посчитает.
Жду критики, тыканья в ошибочки xD
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу