Mark' 4 Опубликовано 23 апреля, 2015 (изменено) При загрузке мода загружаются файлы из системы, и по этим файлам спавнятся автомобили. Допустим, сохранилось два авто с идами 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; } Изменено 23 апреля, 2015 пользователем Mark' Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
meL 724 Опубликовано 23 апреля, 2015 Создай не нужное авто под 0 идом, спрячь ее, а дальше создавай нужные. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mark' 4 Опубликовано 23 апреля, 2015 Создай не нужное авто под 0 идом, спрячь ее, а дальше создавай нужные. После рестарта это не нужное авто пропадёт. Как сделать, чтобы такого не было? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mark' 4 Опубликовано 24 апреля, 2015 (изменено) Проблема решена 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; } Тему закрываю. Изменено 24 апреля, 2015 пользователем Mark' Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты