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

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

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

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

dragonborn

Нуль
Регистрация
16 Ноя 2018
Сообщения
4
Лучшие ответы
0
Репутация
0
Приветствую Вас, сразу скажу, не кидайтесь тапками за то, что эта команда есть у всех, а так-же за плохую оптимизацию, но я постарался сделать систему, похожую на выдачу автомобилей на одном зарубежном Full RolePlay сервере и сделал её на командном процессоре Pawn.CMD;

Что нам необходимо: ; , а так-же сам .

В команде, указанной ниже подразумевается то, что у Вас стоит проверка на авторизованность игрока, выполняющего команду и то, что у Вас есть система флагов, в противном случае Вы можете добавить проверки в саму команду.

Приступим, в код добавляем array (stock) с названием всех автомобилей, для удобства лучше добавить в начало вашего мода после всех define. Он понадобится нам для поиска названий автомобиля, если же он у Вас есть - проверьте, все ли в нем находятся автомобили.
PHP:
new stock arrVehicleNames[][] = {
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
    "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
    "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
    "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
    "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
    "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
    "Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
    "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
    "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
    "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
    "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
    "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
    "Fortune", "Cadrona", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
    "Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
    "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
    "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
    "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD Car", "SFPD Car", "LVPD Car",
    "Police Rancher", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
    "Boxville", "Tiller", "Utility Trailer"
};
После чего, ко всем вашим stock добавляем следующий код, он будет отвечать за поиск автомобилей по названию и возврат названия автомобиля, в котором находится игрок.

PHP:
GetVehicleModelByName(const name[])
{
	if (IsNumeric(name) && (strval(name) >= 400 && strval(name) <= 611))
	    return strval(name);

	for (new i = 0; i < sizeof(g_arrVehicleNames); i ++)
	{
	    if (strfind(g_arrVehicleNames[i], name, true) != -1)
	    {
	        return i + 400;
		}
	}
	return 0;
}

ReturnVehicleModelName(model)
{
	new
	    name[32] = "None";

    if (model < 400 || model > 611)
	    return name;

	format(name, sizeof(name), g_arrVehicleNames[model - 400]);
	return name;
}
После всего приступаем к самой команде, ко всем командам вставляем это и заменяем данные, помеченные комментарием на свои проверки.
PHP:
flags:veh(CMD_ADMIN); // заменяем на свой флаг администратора, если его нет - в саму команду вставляем проверку на админку / если вы хотите сделать команду для игроков - удалите флаг.
cmd:veh(playerid, params[]) {
        if(!pInfo[playerid][pAdminDuty]) return SendCommandMessage(playerid, -1, "СЕРВЕР: Вы не в режиме администратора."); // заменяем на свою проверку на adminDuty / вырезаем её, если у вас отсутствует adminDuty.

	static 
		model[32], 
		color1, 
		color2;

	if (sscanf(params, "s[32]I(-1)I(-1)", model, color1, color2))
	    return SendCommandMessage(playerid, -1, "СЕРВЕР: /veh [название / ID машины] <первичный цвет> <вторичный цвет>");

	if ((model[0] = GetVehicleModelByName(model)) == 0)
	    return SendCommandMessage(playerid, -1, "СЕРВЕР: Некорректный ID автомобиля.");

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

	GetPlayerPos(playerid, x, y, z);
	GetPlayerFacingAngle(playerid, a);

	vehicleid = CreateVehicle(model[0], x, y + 2, z, a, color1, color2, 0);

	LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));

	SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));

	PutPlayerInVehicle(playerid, vehicleid, 0);
	return SendCommandMessageEx(playerid, -1, "СЕРВЕР: Вы успешно создали %s (%d, %d).", ReturnVehicleModelName(model[0]), color1, color2);
}
На этом команда окончена, если у вас возникли какие-нибудь ошибки - внимательно прочитайте то, что я написал в начале темы и проверьте, есть ли у вас всё то, что я написал под "необходимо".
 
Последнее редактирование:
Сверху Снизу