Перейти к содержанию
Авторизация  
Mark'

Проблемы с авто

Рекомендуемые сообщения

Mark'

При загрузке мода загружаются файлы из системы, и по этим файлам спавнятся автомобили. Допустим, сохранилось два авто с идами 0 и 1 и два файла. Когда идёт загрузка, спавнится автомобиль с идом 1, а нулевой ид считается не валидным(я поставил проверку),а файла всё равно два. При добавлении из игры нового автомобиля система добавляет авто под 0-ым идом, при этом редактирует файл того же ида(0). И потом при загрузке этот авто засчитывается не валидным. Как сделать, что бы система не добавляла автомобиль с нулевым идом?

stock LoadEvoVehicles()
{
new ids[32],str[64];
new iniOpens = ini_openFile("cars.cfg");
ini_getInteger(iniOpens, "AllCars", AllCars);
ini_closeFile(iniOpens);
if(AllCars != 0)
{
for(new i = 1; i <= AllCars; i++)
{
format(ids,sizeof(ids),"cars/%d.ini",i);
new iniOpen = ini_openFile(ids);
ini_getInteger(iniOpen, "MODEL", EvoVehicles[i][EVModel]);
ini_getString(iniOpen, "OWNER",str);
format(EvoVehicles[i][EVOwner],24,"%s",str);
ini_getFloat(iniOpen, "X", EvoVehicles[i][EVX]);
ini_getFloat(iniOpen, "Y", EvoVehicles[i][EVY]);
ini_getFloat(iniOpen, "Z", EvoVehicles[i][EVZ]);
ini_getFloat(iniOpen, "ROT", EvoVehicles[i][EVRot]);
ini_getInteger(iniOpen, "COL1", EvoVehicles[i][EVCol1]);
ini_getInteger(iniOpen, "COL2", EvoVehicles[i][EVCol2]);
ini_getInteger(iniOpen, "PRICE", EvoVehicles[i][EVPrice]);
ini_getInteger(iniOpen, "SECURITY", EvoVehicles[i][EVSecurity]);
ini_getInteger(iniOpen, "LOCK", EvoVehicles[i][EVLock]);
ini_getInteger(iniOpen, "World", EvoVehicles[i][EVWorld]);
ini_getInteger(iniOpen, "Int", EvoVehicles[i][EVInt]);
ini_getInteger(iniOpen, "Locke", EvoVehicles[i][cLocke]);
ini_getInteger(iniOpen, "Nitros", EvoVehicles[i][cNitros]);
ini_getInteger(iniOpen, "Vents", EvoVehicles[i][cVents]);
ini_getString(iniOpen, "PLATE",str);
format(EvoVehicles[i][EVPlate],64,"%s",str);
ini_getInteger(iniOpen, "PJ", EvoVehicles[i][EVPJ]);
ini_closeFile(iniOpen);
if(EvoVehicles[i][EVModel] < 400)continue;
EvoVehicles[i][EVVehID] = CreateVehicle(EvoVehicles[i][EVModel], EvoVehicles[i][EVX], EvoVehicles[i][EVY], EvoVehicles[i][EVZ], EvoVehicles[i][EVRot], EvoVehicles[i][EVCol1], EvoVehicles[i][EVCol2], -1);
if(EvoVehicles[i][EVVehID] == INVALID_VEHICLE_ID)continue;
     VehEVID[ EvoVehicles[i][EVVehID] ] = i;
printf("EvoVehicles[i][EVVehID] %d",EvoVehicles[i][EVVehID]);
VehInSystem[ EvoVehicles[i][EVVehID] ] = 1;
SetVehicleNumberPlate(EvoVehicles[i][EVVehID], EvoVehicles[i][EVPlate]);
SetVehicleToRespawn(EvoVehicles[i][EVVehID]);
LoadVehicleMod(i);
}
}
return 1;
}

 

 

stock CreateEvoVehicle(Modelid, Owner[], Float:X, Float:Y, Float:Z, Float:Rot, Col1, Col2, Price, world)
{
new CreatedID;


CreatedID = GetEmptyEvoVehicleID();
Iter_Add(EVs, CreatedID);


EvoVehicles[CreatedID][EVModel] = Modelid;
format(EvoVehicles[CreatedID][EVOwner], 40, Owner);
EvoVehicles[CreatedID][EVX] = X;
EvoVehicles[CreatedID][EVY] = Y;
EvoVehicles[CreatedID][EVZ] = Z;
EvoVehicles[CreatedID][EVRot] = Rot;
EvoVehicles[CreatedID][EVCol1] = Col1;
EvoVehicles[CreatedID][EVCol2] = Col2;
EvoVehicles[CreatedID][EVPrice] = Price;
EvoVehicles[CreatedID][EVSecurity] = 0;
EvoVehicles[CreatedID][EVLock] = 0;
EvoVehicles[CreatedID][cLocke] = 0;
EvoVehicles[CreatedID][cNitros] = 0;
EvoVehicles[CreatedID][cVents] = 0;
format(EvoVehicles[CreatedID][EVPlate], 30, Owner);
EvoVehicles[CreatedID][EVPJ] = -1;
EvoVehicles[CreatedID][EVExist] = 1;
EvoVehicles[CreatedID][EVVehID] = CreateVehicle(Modelid, X, Y, Z, Rot, Col1, Col2, -1);
    AllCars++;
new iniOpen = ini_openFile("cars.cfg");
ini_setInteger(iniOpen, "AllCars", AllCars);
ini_closeFile(iniOpen);
VehEVID[ EvoVehicles[CreatedID][EVVehID] ] = CreatedID;
VehInSystem[ EvoVehicles[CreatedID][EVVehID] ] = 1;
EvoVehicles[EvoVehicles[CreatedID][EVVehID]][EVWorld] = world;
SetVehicleNumberPlate(EvoVehicles[CreatedID][EVVehID], Owner);
SetVehicleToRespawn(EvoVehicles[CreatedID][EVVehID]);
new ids[32];
format(ids,sizeof(ids),"cars/%d.ini",CreatedID);
new INI:iniSting;
iniSting = INI_Open(ids);
INI_WriteInt(iniSting, "MODEL", EvoVehicles[CreatedID][EVModel]);
INI_WriteString(iniSting, "OWNER", EvoVehicles[CreatedID][EVOwner]);
INI_WriteFloat(iniSting, "X", EvoVehicles[CreatedID][EVX]);
INI_WriteFloat(iniSting, "Y", EvoVehicles[CreatedID][EVY]);
INI_WriteFloat(iniSting, "Z", EvoVehicles[CreatedID][EVZ]);
INI_WriteFloat(iniSting, "ROT", EvoVehicles[CreatedID][EVRot]);
INI_WriteInt(iniSting, "COL1", EvoVehicles[CreatedID][EVCol1]);
INI_WriteInt(iniSting, "COL2", EvoVehicles[CreatedID][EVCol2]);
INI_WriteInt(iniSting, "PRICE", EvoVehicles[CreatedID][EVPrice]);
INI_WriteInt(iniSting, "SECURITY", EvoVehicles[CreatedID][EVSecurity]);
INI_WriteInt(iniSting, "LOCK", EvoVehicles[CreatedID][EVLock]);
INI_WriteInt(iniSting, "World", EvoVehicles[CreatedID][EVWorld]);
INI_WriteInt(iniSting, "Int", EvoVehicles[CreatedID][EVInt]);
INI_WriteInt(iniSting, "Locke", EvoVehicles[CreatedID][cLocke]);
INI_WriteInt(iniSting, "Nitros", EvoVehicles[CreatedID][cNitros]);
INI_WriteInt(iniSting, "Vents", EvoVehicles[CreatedID][cVents]);
INI_WriteString(iniSting, "PLATE", EvoVehicles[CreatedID][EVPlate]);
INI_WriteInt(iniSting, "PJ", EvoVehicles[CreatedID][EVPJ]);
INI_Close(iniSting);
return CreatedID;
}

 

 

Изменено пользователем Mark'

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
meL

Создай не нужное авто под 0 идом, спрячь ее, а дальше создавай нужные.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Mark'

Создай не нужное авто под 0 идом, спрячь ее, а дальше создавай нужные.

После рестарта это не нужное авто пропадёт. Как сделать, чтобы такого не было?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Mark'

 Проблема решена 

stock LoadEvoVehicles()
{
Iter_Add(EVs,0);
EvoVehicles[0][EVModel] = 400;
format(EvoVehicles[0][EVOwner],40,"Nones");
EvoVehicles[0][EVX] = 0;
EvoVehicles[0][EVY] = 0;
EvoVehicles[0][EVZ] = 0;
EvoVehicles[0][EVRot] = 0;
EvoVehicles[0][EVCol1] = 0;
EvoVehicles[0][EVCol2] = 0;
EvoVehicles[0][EVPrice] = 1000000000;
EvoVehicles[0][EVSecurity] = 0;
EvoVehicles[0][EVLock] = 0;
EvoVehicles[0][cLocke] = 0;
EvoVehicles[0][cNitros] = 0;
EvoVehicles[0][cVents] = 0;
format(EvoVehicles[0][EVPlate],40,"Nones");
EvoVehicles[0][EVPJ] = -1;
EvoVehicles[0][EVExist] = 1;
EvoVehicles[0][EVVehID] = CreateVehicle(400,0,0,0, 0, 1, 1, -1);
VehEVID[ EvoVehicles[0][EVVehID] ] = 0;
VehInSystem[ EvoVehicles[0][EVVehID] ] = 1;
SetVehicleNumberPlate(EvoVehicles[0][EVVehID], EvoVehicles[0][EVPlate]);
SetVehicleToRespawn(EvoVehicles[0][EVVehID]);
LoadVehicleMod(0);
new ids[32],str[64];
new iniOpens = ini_openFile("cars.cfg");
ini_getInteger(iniOpens, "AllCars", AllCars);
ini_closeFile(iniOpens);
if(AllCars != 0)
{
for(new i = 1; i <= AllCars; i++)
{
format(ids,sizeof(ids),"cars/%d.ini",i);
new iniOpen = ini_openFile(ids);
ini_getInteger(iniOpen, "MODEL", EvoVehicles[i][EVModel]);
ini_getString(iniOpen, "OWNER",str);
format(EvoVehicles[i][EVOwner],40,"%s",str);
ini_getFloat(iniOpen, "X", EvoVehicles[i][EVX]);
ini_getFloat(iniOpen, "Y", EvoVehicles[i][EVY]);
ini_getFloat(iniOpen, "Z", EvoVehicles[i][EVZ]);
ini_getFloat(iniOpen, "ROT", EvoVehicles[i][EVRot]);
ini_getInteger(iniOpen, "COL1", EvoVehicles[i][EVCol1]);
ini_getInteger(iniOpen, "COL2", EvoVehicles[i][EVCol2]);
ini_getInteger(iniOpen, "PRICE", EvoVehicles[i][EVPrice]);
ini_getInteger(iniOpen, "SECURITY", EvoVehicles[i][EVSecurity]);
ini_getInteger(iniOpen, "LOCK", EvoVehicles[i][EVLock]);
ini_getInteger(iniOpen, "World", EvoVehicles[i][EVWorld]);
ini_getInteger(iniOpen, "Int", EvoVehicles[i][EVInt]);
ini_getInteger(iniOpen, "Locke", EvoVehicles[i][cLocke]);
ini_getInteger(iniOpen, "Nitros", EvoVehicles[i][cNitros]);
ini_getInteger(iniOpen, "Vents", EvoVehicles[i][cVents]);
ini_getString(iniOpen, "PLATE",str);
format(EvoVehicles[i][EVPlate],64,"%s",str);
ini_getInteger(iniOpen, "PJ", EvoVehicles[i][EVPJ]);
ini_closeFile(iniOpen);
EvoVehicles[i][EVExist] = 1;
if(EvoVehicles[i][EVModel] < 400)continue;
EvoVehicles[i][EVVehID] = CreateVehicle(EvoVehicles[i][EVModel], EvoVehicles[i][EVX], EvoVehicles[i][EVY], EvoVehicles[i][EVZ], EvoVehicles[i][EVRot], EvoVehicles[i][EVCol1], EvoVehicles[i][EVCol2], -1);
if(EvoVehicles[i][EVVehID] == INVALID_VEHICLE_ID)continue;
VehEVID[ EvoVehicles[i][EVVehID] ] = i;
printf("EvoVehicles[i][EVVehID] %d",EvoVehicles[i][EVVehID]);
VehInSystem[ EvoVehicles[i][EVVehID] ] = 1;
SetVehicleNumberPlate(EvoVehicles[i][EVVehID], EvoVehicles[i][EVPlate]);
SetVehicleToRespawn(EvoVehicles[i][EVVehID]);
LoadVehicleMod(i);
Iter_Add(EVs, i);
}
}
return 1;
}

 

 

Тему закрываю.
Изменено пользователем Mark'

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.