Для начала мы создадим 4 форварда
forward LoadAuto();//згрузка авто
forward SaveAuto();//сохранение авто
forward TuneCar();//сохраниние тюнинга авто
forward CarEnter(playerid,carid);
И так. Далее мы идем в
Код: Выделить всё
new PlayerInfo[MAX_PLAYERS][pInfo];И добавляем в нем 2 строчки
Код: Выделить всё
pCarKey,
pCarKey2,
new PlayerInfo[MAX_PLAYERS][pInfo];
Чтоб было у вас также как выше
Далее мы создадим
Код: Выделить всё
new Autoinfo
Код: Выделить всё
enum aInfo
{
aStats,//куплена или нет
aModel,// модель
Float:aAutoX,//корды
Float:aAutoY,
Float:aAutoZ,
Float:aAutoAngle,
aColor1,//цвета
aColor2,
aOwner[MAX_PLAYER_NAME],//владелец
aPrice,//цена
aKey,//уровень
aLock,//штраф
a0,//тюнинг
a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
a9,
a10,
a11,
a12,
a13,
aPaintJob,
};new AutoInfo[MAX_VEHICLES][aInfo];
Следующие делаем чтобы когда вы садитесь в машину которая на продажу высвечивалось диалоговое окно.
Код: Выделить всё
public CarEnter(playerid,carid)
{
if(AutoInfo[carid][aStats]==0)
{
new string[512];
format(string,sizeof(string),"Уровень: %d\nСтоимость: %d\nВведите 2 цвета через запятую в окошко\nПример: [2,6] без квадратных скобок и пробелов!\nЕсли не введете, то цвет останется таким, какой установлен сейчас",
AutoInfo[carid][aKey], AutoInfo[carid][aPrice]);
ShowPlayerDialog(playerid,920,DIALOG_STYLE_INPUT,"Авторынок",string,"Принять","Отмена");
}
Код: Выделить всё
Cоздаем далее паблик
Код: Выделить всё
public OnVehicleSpawn(vehicleid)
{
if(AutoInfo[vehicleid][a0] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a0]);
}
if(AutoInfo[vehicleid][a1] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a1]);
}
if(AutoInfo[vehicleid][a2] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a2]);
}
if(AutoInfo[vehicleid][a3] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a3]);
}
if(AutoInfo[vehicleid][a4] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a4]);
}
if(AutoInfo[vehicleid][a5] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a5]);
}
if(AutoInfo[vehicleid][a6] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a6]);
}
if(AutoInfo[vehicleid][a7] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a7]);
}
if(AutoInfo[vehicleid][a8] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a8]);
}
if(AutoInfo[vehicleid][a9] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a9]);
}
if(AutoInfo[vehicleid][a10] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a10]);
}
if(AutoInfo[vehicleid][a11] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a11]);
}
if(AutoInfo[vehicleid][a12] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a12]);
}
if(AutoInfo[vehicleid][a13] != 0)
{
AddVehicleComponent(vehicleid, AutoInfo[vehicleid][a13]);
}
if(AutoInfo[vehicleid][aPaintJob] != 0)
{
ChangeVehiclePaintjob(vehicleid,AutoInfo[vehicleid][aPaintJob]);
}
return 1;
}
Создае три паблика сразу 1 паблик для загрузки авто 2 для сохранения кооординатов 3 для сохранения тюнинга на авто
Код: Выделить всё
public LoadAuto()
{
new arrCoords[26][64];
new strFromFile2[256];
new File: file = fopen("auto.cfg", io_read);
if (file)
{
new idx;
while (idx < 330)
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
AutoInfo[idx+1][aStats] = strval(arrCoords[0]);
AutoInfo[idx+1][aModel] = strval(arrCoords[1]);
AutoInfo[idx+1][aAutoX] = floatstr(arrCoords[2]);
AutoInfo[idx+1][aAutoY] = floatstr(arrCoords[3]);
AutoInfo[idx+1][aAutoZ] = floatstr(arrCoords[4]);
AutoInfo[idx+1][aAutoAngle] = floatstr(arrCoords[5]);
AutoInfo[idx+1][aColor1] = strval(arrCoords[6]);
AutoInfo[idx+1][aColor2] = strval(arrCoords[7]);
strmid(AutoInfo[idx+1][aOwner], arrCoords[8], 0, strlen(arrCoords[8]), 255);
AutoInfo[idx+1][aPrice] = strval(arrCoords[9]);
AutoInfo[idx+1][aKey] = strval(arrCoords[10]);
AutoInfo[idx+1][a0] = strval(arrCoords[11]);
AutoInfo[idx+1][a1] = strval(arrCoords[12]);
AutoInfo[idx+1][a2] = strval(arrCoords[13]);
AutoInfo[idx+1][a3] = strval(arrCoords[14]);
AutoInfo[idx+1][a4] = strval(arrCoords[15]);
AutoInfo[idx+1][a5] = strval(arrCoords[16]);
AutoInfo[idx+1][a6] = strval(arrCoords[17]);
AutoInfo[idx+1][a7] = strval(arrCoords[18]);
AutoInfo[idx+1][a8] = strval(arrCoords[19]);
AutoInfo[idx+1][a9] = strval(arrCoords[20]);
AutoInfo[idx+1][a10] = strval(arrCoords[21]);
AutoInfo[idx+1][a11] = strval(arrCoords[22]);
AutoInfo[idx+1][a12] = strval(arrCoords[23]);
AutoInfo[idx+1][a13] = strval(arrCoords[24]);
AutoInfo[idx+1][aPaintJob] = strval(arrCoords[25]);
idx++;
}
fclose(file);
}
return 1;
}public SaveAuto()
{
new idx;
new File: file2;
while (idx < 330)
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%d,%d,%f,%f,%f,%f,%d,%d,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
AutoInfo[idx+1][aStats],
AutoInfo[idx+1][aModel],
AutoInfo[idx+1][aAutoX],
AutoInfo[idx+1][aAutoY],
AutoInfo[idx+1][aAutoZ],
AutoInfo[idx+1][aAutoAngle],
AutoInfo[idx+1][aColor1],
AutoInfo[idx+1][aColor2],
AutoInfo[idx+1][aOwner],
AutoInfo[idx+1][aPrice],
AutoInfo[idx+1][aKey],
AutoInfo[idx+1][aLock],
AutoInfo[idx+1][a0],
AutoInfo[idx+1][a1],
AutoInfo[idx+1][a2],
AutoInfo[idx+1][a3],
AutoInfo[idx+1][a4],
AutoInfo[idx+1][a5],
AutoInfo[idx+1][a6],
AutoInfo[idx+1][a7],
AutoInfo[idx+1][a8],
AutoInfo[idx+1][a9],
AutoInfo[idx+1][a10],
AutoInfo[idx+1][a11],
AutoInfo[idx+1][a12],
AutoInfo[idx+1][a13],
AutoInfo[idx+1][aPaintJob]);
if(idx == 0)
{
file2 = fopen("auto.cfg", io_write);
}
else
{
file2 = fopen("auto.cfg", io_append);
}
fwrite(file2, coordsstring);
idx++;
fclose(file2);
}
return 1;
}public TuneCar()
{
for(new i = 0; i < 330; i++)
{
if(AutoInfo[i][a0] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a0]);
}
if(AutoInfo[i][a1] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a1]);
}
if(AutoInfo[i][a2] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a2]);
}
if(AutoInfo[i][a3] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a3]);
}
if(AutoInfo[i][a4] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a4]);
}
if(AutoInfo[i][a5] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a5]);
}
if(AutoInfo[i][a6] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a6]);
}
if(AutoInfo[i][a7] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a7]);
}
if(AutoInfo[i][a8] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a8]);
}
if(AutoInfo[i][a9] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a9]);
}
if(AutoInfo[i][a10] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a10]);
}
if(AutoInfo[i][a11] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a11]);
}
if(AutoInfo[i][a12] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a12]);
}
if(AutoInfo[i][a13] != 0)
{
AddVehicleComponent(i, AutoInfo[i][a13]);
}
if(AutoInfo[i][aPaintJob] != 0)
{
ChangeVehiclePaintjob(i,AutoInfo[i][aPaintJob]);
}
}
return 1;
}
Далее в паблике
Код: Выделить всё
OnGameModeInit()
Вставляем вот это
Код: Выделить всё
for(new c=0;c<MAX_VEHICLES;c++)
{
Gas[c] = 100;
AutoInfo[c][aStats] = -1;
lockedcar[c] = 0;
}
LoadAuto();
Код: Выделить всё
for(new h = 0; h < 330; h++)
{
CreateVehicle(AutoInfo[h][aModel], AutoInfo[h][aAutoX], AutoInfo[h][aAutoY], AutoInfo[h][aAutoZ], AutoInfo[h][aAutoAngle], AutoInfo[h][aColor1], AutoInfo[h][aColor2],SPAWN_CARS);
if(AutoInfo[h][aStats] == 0)
{
new strings[256];
format(strings,sizeof(strings),"Транспорт продается\nУровень: %d\nСтоимость: %d",AutoInfo[h][aKey],AutoInfo[h][aPrice]);
nomer[h] = CreateDynamic3DTextLabel(strings, 0xBFF600FF, AutoInfo[h][aAutoX], AutoInfo[h][aAutoY], AutoInfo[h][aAutoZ], 15.0, INVALID_PLAYER_ID,h,0,-1,-1,-1,15.0);
}
else
{
new strings[256];
format(strings,sizeof(strings),"ID: %d\nВладелец: %s",h,AutoInfo[h][aOwner]);
nomer[h] = CreateDynamic3DTextLabel(strings, 0xBFF600FF, AutoInfo[h][aAutoX], AutoInfo[h][aAutoY], AutoInfo[h][aAutoZ], 15.0, INVALID_PLAYER_ID,h,0,-1,-1,-1,15.0);
}
}
автор:admin ставьте +