В начало мода, модно даже сразу после PlayerInfo[MAX_PLAYERS][pinfo];
#define MAX_xCARS 106 //Максимальное количиство персональных авто (ну и продажных) //параметры авто enum xCar { cModel, Float:xcx, Float:xcy, Float:xcz, Float:xcrot, aOwner[MAX_PLAYER_NAME],//владелец cCoast, cOwner[60], cColor1, cColor2, cValue, cCarID } new cInfo[MAX_xCARS][xCar]; //переменная с параметрами авто enum xCarToSell { sCarid, sCoast, sOwnerid, sSellToid } new csInfo[500][xCarToSell];

В OnPlayerStateChange вставляем:
if(newstate == 2) { new Car = GetPlayerVehicleID(playerid); new result; new cid; new pName[24]; for(new i;i<MAX_xCARS;i++) { if(Car == cInfo[i][cCarID]) { result = 1; cid = i; break; } else result = 0; } if(result) { GetPlayerName(playerid,pName,24); if(strcmp(cInfo[cid][cOwner],pName,false,24)) { if(!strcmp(cInfo[cid][cOwner],"sell",true,24)) { new str[256]; format(str,256,"Данная машина выставлена на продажу\nЦена: %i\nВы хотите ее купить?",cInfo[cid][cCoast]); ShowPlayerDialog(playerid,3500,0,"Рынок авто",str,"купить","выйти"); } else { new str[256]; format(str,256,"Это авто принадлежит %s",cInfo[cid][cOwner]); RemovePlayerFromVehicle(playerid); SendClientMessage(playerid,0xffffffaa,str); } } } }

Ну и конечно же добавим загрузку авто на сервер.В самый конеч public'a OnGameModeInit:
for(new i;i<MAX_xCARS;i++) { new input[256]; new str[50]; new data[9][60]; new Text3D:fdtextid; new strfd[124]; new fdtextnumber = i+1000; format(str,10,"%i",i); input = dini_Get("PrivCars.ini",str); split(input,data,','); cInfo[i][cModel] = strval(data[0]); cInfo[i][xcx] = floatstr(data[1]); cInfo[i][xcy] = floatstr(data[2]); cInfo[i][xcz] = floatstr(data[3]); cInfo[i][xcrot] = floatstr(data[4]); cInfo[i][cCoast] = strval(data[5]); cInfo[i][cOwner] = data[6]; cInfo[i][cColor1] = strval(data[7]); cInfo[i][cColor2] = strval(data[8]); cInfo[i][cCarID] = CreateVehicle(cInfo[i][cModel],cInfo[i][xcx],cInfo[i][xcy],cInfo[i][xcz],cInfo[i] [xcrot],cInfo[i][cColor1],cInfo[i][cColor2],-1); format(strfd,124,"LS %i BG\n %s",fdtextnumber ,cInfo[i][aOwner]); fdtextid = Create3DTextLabel(strfd,0xFFFF00AA,0.0,0.0,0.0,100.0,0); Attach3DTextLabelToVehicle(fdtextid,cInfo[i][cCarID],0.0,0.0,1.8); }

Ну и сами команды,я думаю не надо объяснять как и куда их вставлять

if(!strcmp(cmd,"/v",true)) { tmp = strtok(cmdtext, idx); if(!strcmp(tmp,"buy",true)) { if(GetPlayerMoney(playerid) >= csInfo[playerid][sCoast]) { if(csInfo[playerid][sCoast] != 0) { new pName[60]; new str[256]; new str2[60]; new cid = csInfo[playerid][sCarid]; GetPlayerName(playerid,pName,24); oGivePlayerMoney(playerid,-csInfo[playerid][sCoast]); oGivePlayerMoney(csInfo[playerid][sOwnerid],-csInfo[playerid][sCoast]); cInfo[csInfo[playerid][sCarid]][cOwner] = pName; SendClientMessage(playerid,0xffffffaa,"Вы купили авто"); SendClientMessage(csInfo[playerid][sOwnerid],0xffffffaa,"Вы продали авто"); RemovePlayerFromVehicle(csInfo[playerid][sOwnerid]); format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy] ,cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid] [cColor1],cInfo[cid][cColor2]); format(str2,60,"%i",cid); dini_Set("PrivCars.ini",str2,str); } } } if(!strcmp(tmp,"Sellto",true)) { if(IsPlayerInAnyVehicle(playerid)) { new Car = GetPlayerVehicleID(playerid); new result; new cid; new pName[60]; new str[256]; GetPlayerName(playerid,pName,60); for(new i;i<MAX_xCARS;i++) { if(Car == cInfo[i][cCarID]) { result = 1; cid = i; break; } else result = 0; } if(result) { if(!strcmp(pName,cInfo[cid][cOwner])) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,0xffffffaa,"/v SellTo [id] [coast]"); return 1; } new spid = strval(tmp); csInfo[spid][sSellToid] = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid,0xffffffaa,"/v SellTo [id] [coast]"); return 1; } csInfo[spid][sCoast] = strval(tmp); csInfo[spid][sCarid] = cid; csInfo[spid][sOwnerid] = playerid; format(str,256,"Игрок %s хочет продать вам свое авто за %d, введите /v buy чтобы купить ее",pName,csInfo[spid][sCoast]); SendClientMessage(spid,0xffffff,str); return 1; } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее"); return 1; } } if(!strcmp(tmp,"Sell",true)) { if(IsPlayerInAnyVehicle(playerid)) { new Car = GetPlayerVehicleID(playerid); new result; new cid; new pName[60]; new m; new str[256]; new str2[60]; GetPlayerName(playerid,pName,60); for(new i;i<MAX_xCARS;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; oGivePlayerMoney(playerid,m); SendClientMessage(playerid,0xffffffaa,"Ты продал свою машину"); format(cInfo[cid][cOwner],60,"Sell"); RemovePlayerFromVehicle(playerid); format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy] ,cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid] [cColor1],cInfo[cid][cColor2]); format(str2,60,"%i",cid); dini_Set("PrivCars.ini",str2,str); } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы продать ее"); 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_xCARS;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; new str[60]; new str2[256]; GetVehicleZAngle(Car,rot); GetVehiclePos(Car,x,y,z); cInfo[cid][xcx] = x; cInfo[cid][xcy] = y; cInfo[cid][xcz] = z; cInfo[cid][xcrot] = rot; format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy] ,cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid] [cColor1],cInfo[cid][cColor2]); format(str2,60,"%i",cid); dini_Set("PrivCars.ini",str2,str); 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],-1); SendClientMessage(playerid,0xffffffaa,"Авто припарковано"); } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы припорковать ее"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы припорковать ее"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы припорковать ее"); return 1; } } if(!strcmp(tmp,"Color",true)) { if(IsPlayerInAnyVehicle(playerid) == 1) { new Car = GetPlayerVehicleID(playerid); new result; new cid; new pName[24]; new str[256]; new str2[60]; for(new i;i<MAX_xCARS;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,0xffffffaa,"/v color [цвет1] [цвет2]"); return 1; } ChangeVehicleColor(Car,c1,c2); cInfo[cid][cColor1] = c1; cInfo[cid][cColor2] = c2; format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy] ,cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid] [cColor1],cInfo[cid][cColor2]); format(str2,60,"%i",cid); dini_Set("PrivCars.ini",str2,str); } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы сменить ей цвет"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы сменить ей цвет"); return 1; } } else { SendClientMessage(playerid,0xffffffaa,"Вы должны быть в своей машине, чтобы сменить ей цвет"); return 1; } } return 1; }

В OnDialogResponse:
if(dialogid == 3500) { if(response) { new Car = GetPlayerVehicleID(playerid); new cid; for(new i;i<MAX_xCARS;i++) { if(Car == cInfo[i][cCarID]) { cid = i; break; } } if(GetPlayerMoney(playerid) >= cInfo[cid][cCoast]) { new str[256]; new str2[60]; new pName[60]; oGivePlayerMoney(playerid,-cInfo[cid][cCoast]); GetPlayerName(playerid,pName,60); cInfo[cid][cOwner] = pName; format(str,256,"%d,%f,%f,%f,%f,%d,%s,%d,%d",cInfo[cid][cModel],cInfo[cid][xcx],cInfo[cid][xcy] ,cInfo[cid][xcz],cInfo[cid][xcrot],cInfo[cid][cCoast],cInfo[cid][cOwner],cInfo[cid] [cColor1],cInfo[cid][cColor2]); format(str2,60,"%i",cid); dini_Set("PrivCars.ini",str2,str); } else RemovePlayerFromVehicle(playerid); } else RemovePlayerFromVehicle(playerid); }

Автор мануала: Barni, вырезано из мода PremiumGame.
Обязательно нужен инклуд Dini,Функцию oGivePlayerMoney замените на свою.