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

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

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

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

Перевод сложной команды на zcmd

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

lava172

Умник
Приветсвую ув. пользователи. Такой вопрос. Возможно ли и если возможно, то как осуществить такую вещь.

есть команды /v sell
/v park
/v color цвет1 цвет2

Они предназначены для продажи, парковки и покраски транспорта.
Итак, к главному, эти команды выглядят на стандартном кмд процессоре вот так:

PHP:
    if(!strcmp(cmd,"/v",true))
   	{
    tmp = strtok(cmdtext, idx);
	if(!strlen(tmp)) {
	SendClientMessage(playerid,0xE7E6FFAA, "' Не верная команда /carhelp или /авто для просмотра команд '");
	return 1;
	}
	if(!strcmp(tmp,"Sell",true))
	{
	if(IsPlayerInAnyVehicle(playerid))
	{
	new Car = GetPlayerVehicleID(playerid);
	new result;
	new cid;
	new pName[60];
	new m;
	GetPlayerName(playerid,pName,60);
	for(new i;i<MAX_xCARS1;i++)
	{
	if(Car == cInfo[i][cCarID])
	{
	result = 1;
	cid = i;
	break;
	}
	else result = 0;
	}
	if(result == 1)
	{
	if(!strcmp(pName,cInfo[cid][cOwner]))
	{
	m = cInfo[cid][cCoast];
	m /= 2;
	Give_Money(playerid,m);
	cInfo[cid][Cuplena] = 0;
	cInfo[cid][parkx] = cInfo[cid][xcx];
	cInfo[cid][parky] = cInfo[cid][xcy];
	cInfo[cid][parkz] = cInfo[cid][xcz];
	cInfo[cid][pugol] = cInfo[cid][xcrot];
	format(cInfo[cid][cOwner],60,"Sell");
	new str[256];
	new str2[60];
	format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", cInfo[cid][cModel], cInfo[cid][xcx], cInfo[cid][xcy], cInfo[cid][xcz], cInfo[cid][xcrot], cInfo[cid][parkx], cInfo[cid][parky], cInfo[cid][parkz], cInfo[cid][pugol], cInfo[cid][cCoast], cInfo[cid][cOwner], cInfo[cid][cColor1], cInfo[cid][cColor2], cInfo[cid][Cuplena]);
	format(str2,60,"%i",cid);
	dini_Set("BuyAll/Cars.ini",str2,str);
	pStats[playerid][Mycar] = 1000;
	RemovePlayerFromVehicle(playerid);
	DestroyVehicle(Car);
	cInfo[cid][cCarID] = CreateVehicle(cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy],cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cColor1],cInfo[cid][cColor2], 500);
	DelTexstBuyCar();
	TexstBuyCar();
	new PlayerVehicleModelID = GetVehicleModel(GetPlayerVehicleID(playerid));
	PlayerVehicleModelID -= 400;
	format(GlobalInfo,sizeof(GlobalInfo),"..::|| ''%s'' продал свою машину %s ||::..", PlayerName(playerid), PlayerVehicle[PlayerVehicleModelID]);
	SendClientMessageToAll(0x8080FFAA, GlobalInfo);
	}
	else
	{
	SellCar(playerid);
	return 1;
	}
	}
	else
	{
	SellCar(playerid);
	return 1;
	}
	}
	else
	{
	SellCar(playerid);
	return 1;
	}
	}
	if(!strcmp(tmp,"Park",true))
	{
	if(IsPlayerInAnyVehicle(playerid) == 1)
	{
	new Car = GetPlayerVehicleID(playerid);
	new result;
	new cid;
	new pName[24];
	for(new i;i<MAX_xCARS1;i++)
	{
	if(Car == cInfo[i][cCarID])
	{
	result = 1;
	cid = i;
	break;
	}
	else result = 0;
	}
	if(result && GetPlayerState(playerid) == 2)
	{
	if(!strcmp(pName,cInfo[cid][cOwner],false))
	{
	new Float:x,Float:y,Float:z,Float:rot;
	GetVehicleZAngle(Car,rot);
	GetVehiclePos(Car,x,y,z);
	cInfo[cid][parkx] = x;
	cInfo[cid][parky] = y;
	cInfo[cid][parkz] = z;
	cInfo[cid][pugol] = rot;
	cInfo[cid][Cuplena] = 1;
	new str[256];
	new str2[60];
	format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", cInfo[cid][cModel], cInfo[cid][xcx], cInfo[cid][xcy], cInfo[cid][xcz], cInfo[cid][xcrot], cInfo[cid][parkx], cInfo[cid][parky], cInfo[cid][parkz], cInfo[cid][pugol], cInfo[cid][cCoast], cInfo[cid][cOwner], cInfo[cid][cColor1], cInfo[cid][cColor2], cInfo[cid][Cuplena]);
	format(str2,60,"%i",cid);
	dini_Set("BuyAll/Cars.ini",str2,str);
	SendClientMessage(playerid,0xE7E6FFAA,"' Транспорт припаркован '");
	RemovePlayerFromVehicle(playerid);
	DestroyVehicle(Car);
	cInfo[cid][cCarID] = CreateVehicle(cInfo[cid][cModel],cInfo[cid][parkx],cInfo[cid][parky],cInfo[cid][parkz],cInfo[cid][pugol],cInfo[cid][cColor1],cInfo[cid][cColor2], 500);
	}
	else
	{
	ParkCar(playerid);
	return 1;
	}
	}
	else
	{
	ParkCar(playerid);
	return 1;
	}
	}
	else
	{
	ParkCar(playerid);
	return 1;
	}
	}
	if(!strcmp(tmp,"Color",true))
	{
	if(IsPlayerInAnyVehicle(playerid) == 1)
	{
	new Car = GetPlayerVehicleID(playerid);
	new result;
	new cid;
	new pName[24];
	for(new i;i<MAX_xCARS1;i++)
	{
	if(Car == cInfo[i][cCarID])
	{
	result = 1;
	cid = i;
	break;
	}
	else result = 0;
	}
	if(result && GetPlayerState(playerid) == 2)
	{
	if(!strcmp(pName,cInfo[cid][cOwner],false))
	{
	new c1,c2;
	tmp = strtok(cmdtext, idx);
	c1 = strval(tmp);
	tmp = strtok(cmdtext, idx);
	c2 = strval(tmp);
	if(!strlen(tmp))
	{
	SendClientMessage(playerid,0xE7E6FFAA,"' Используйте: /v color [цвет1] [цвет2] '");
	return 1;
	}
	ChangeVehicleColor(Car,c1,c2);
	cInfo[cid][cColor1] = c1;
	cInfo[cid][cColor2] = c2;
	new str[256];
	new str2[60];
	format(str,256,"%d,%f,%f,%f,%f,%f,%f,%f,%f,%d,%s,%d,%d,%d", cInfo[cid][cModel], cInfo[cid][xcx], cInfo[cid][xcy], cInfo[cid][xcz], cInfo[cid][xcrot], cInfo[cid][parkx], cInfo[cid][parky], cInfo[cid][parkz], cInfo[cid][pugol], cInfo[cid][cCoast], cInfo[cid][cOwner], cInfo[cid][cColor1], cInfo[cid][cColor2], cInfo[cid][Cuplena]);
	format(str2,60,"%i",cid);
	dini_Set("BuyAll/Cars.ini",str2,str);
	}
	else
	{
	ColorCar(playerid);
	return 1;
	}
	}
	else
	{
	ColorCar(playerid);
	return 1;
	}
	}
	else
	{
	ColorCar(playerid);
	return 1;
	}
	}
	return 1;
	}
И вот проблемка, возможно ли сделать это все на ZCMD.

Так вот как это осуществить, при том при помощи sscanf2.

Я пробовал это сделать, но не получилось.

Получалось что-то вроде этого: с первыми 2-мя все в порядке казалось бы, например if(!strcmp(params,"Sell",true))
И пошло поехало действие: продажа авто, с парковкой тоже также. Но покраска, там же 3 параметра, сам color, да еще и 2 цвета. Так вот как же объединить все это в 1 команду. И sell, и park, и color с цветами.
Спасибо что дочитали до конца. :D
Надеюсь на вашу помощь.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу