pawn Код:
LoadVehicles()
{
new string[64];
new File:handle, count;
new filename[64], line[256], s, key[64];
for(new i=1; i < MAX_DVEHICLES; i++)
{
format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", i);
if(!fexist(filename)) continue;
handle = fopen(filename, io_read);
while(fread(handle, line))
{
StripNL(line);
s = strfind(line, "=");
if(!line[0] || s < 1) continue;
strmid(key, line, 0, s++);
if(strcmp(key, "Created") == 0) VehicleCreated[i] = strval(line[s]);
else if(strcmp(key, "Model") == 0) VehicleModel[i] = strval(line[s]);
else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,ffff", VehiclePos[i][0], VehiclePos[i][1],
VehiclePos[i][2], VehiclePos[i][3]);
else if(strcmp(key, "Colors") == 0) sscanf(line[s], "p,dd", VehicleColor[i][0], VehicleColor[i][1]);
else if(strcmp(key, "Interior") == 0) VehicleInterior[i] = strval(line[s]);
else if(strcmp(key, "VirtualWorld") == 0) VehicleWorld[i] = strval(line[s]);
else if(strcmp(key, "Owner") == 0) strmid(VehicleOwner[i], line, s, sizeof(line));
else if(strcmp(key, "NumberPlate") == 0) strmid(VehicleNumberPlate[i], line, s, sizeof(line));
else if(strcmp(key, "Value") == 0) VehicleValue[i] = strval(line[s]);
else if(strcmp(key, "Lock") == 0) VehicleLock[i] = strval(line[s]);
else if(strcmp(key, "Alarm") == 0) VehicleAlarm[i] = strval(line[s]);
else if(strcmp(key, "Paintjob") == 0) VehiclePaintjob[i] = strval(line[s]);
else
{
for(new t=0; t < sizeof(VehicleTrunk[]); t++)
{
format(string, sizeof(string), "Trunk%d", t+1);
if(strcmp(key, string) == 0) sscanf(line[s], "p,dd", VehicleTrunk[i][t][0], VehicleTrunk[i][t][1]);
}
for(new m=0; m < sizeof(VehicleMods[]); m++)
{
format(string, sizeof(string), "Mod%d", m);
if(strcmp(key, string) == 0) VehicleMods[i][m] = strval(line[s]);
}
}
}
fclose(handle);
if(VehicleCreated[i]) count++;
}
printf(" Loaded %d vehicles", count);
}
SaveVehicle(vehicleid)
{
new filename[64], line[256];
format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
new File:handle = fopen(filename, io_write);
format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
fwrite(handle, line);
format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
for(new t=0; t < sizeof(VehicleTrunk[]); t++)
{
format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
fwrite(handle, line);
}
for(new m=0; m < sizeof(VehicleMods[]); m++)
{
format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
fwrite(handle, line);
}
fclose(handle);
}
UpdateVehicle(vehicleid, removeold)
{
if(VehicleCreated[vehicleid])
{
if(removeold)
{
new Float:health;
GetVehicleHealth(VehicleID[vehicleid], health);
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
//new panels, doorsd, lightsd, tires;
//GetVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
DestroyVehicle(VehicleID[vehicleid]);
VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
SetVehicleHealth(VehicleID[vehicleid], health);
SetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
//UpdateVehicleDamageStatus(VehicleID[vehicleid], panels, doorsd, lightsd, tires);
}
else
{
VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
}
LinkVehicleToInterior(VehicleID[vehicleid], VehicleInterior[vehicleid]);
SetVehicleVirtualWorld(VehicleID[vehicleid], VehicleWorld[vehicleid]);
SetVehicleNumberPlate(VehicleID[vehicleid], VehicleNumberPlate[vehicleid]);
for(new i=0; i < sizeof(VehicleMods[]); i++)
{
AddVehicleComponent(VehicleID[vehicleid], VehicleMods[vehicleid][i]);
}
ChangeVehiclePaintjob(VehicleID[vehicleid], VehiclePaintjob[vehicleid]);
if(VehicleLock[vehicleid]) ToggleDoors(VehicleID[vehicleid], VEHICLE_PARAMS_ON);
if(VehicleAlarm[vehicleid]) VehicleSecurity[VehicleID[vehicleid]] = 1;
UpdateVehicleLabel(vehicleid, removeold);
}
}
UpdateVehicleLabel(vehicleid, removeold)
{
if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
{
if(removeold)
{
Delete3DTextLabel(VehicleLabel[vehicleid]);
}
new labeltext[128];
format(labeltext, sizeof(labeltext), "%s\nID: %d\nDealership: %s\nPrice: $%d", VehicleNames[VehicleModel[vehicleid]-400],
vehicleid, VehicleOwner[vehicleid], VehicleValue[vehicleid]);
VehicleLabel[vehicleid] = Create3DTextLabel(labeltext, 0xBB7700DD, 0, 0, 0, 10.0, 0);
Attach3DTextLabelToVehicle(VehicleLabel[vehicleid], VehicleID[vehicleid], 0, 0, 0);
}
}
IsValidVehicle(vehicleid)
{
if(vehicleid < 1 || vehicleid >= MAX_DVEHICLES) return 0;
if(VehicleCreated[vehicleid]) return 1;
return 0;
}
pawn Код:
LoadDealerships()
{
new File:handle, count;
new filename[64], line[256], s, key[64];
for(new i=1; i < MAX_DEALERSHIPS; i++)
{
format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", i);
if(!fexist(filename)) continue;
handle = fopen(filename, io_read);
while(fread(handle, line))
{
StripNL(line);
s = strfind(line, "=");
if(!line[0] || s < 1) continue;
strmid(key, line, 0, s++);
if(strcmp(key, "Created") == 0) DealershipCreated[i] = strval(line[s]);
else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", DealershipPos[i][0],
DealershipPos[i][1], DealershipPos[i][2]);
}
fclose(handle);
if(DealershipCreated[i]) count++;
}
printf(" Loaded %d dealerships", count);
}
SaveDealership(dealerid)
{
new filename[64], line[256];
format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", dealerid);
new File:handle = fopen(filename, io_write);
format(line, sizeof(line), "Created=%d\r\n", DealershipCreated[dealerid]); fwrite(handle, line);
format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", DealershipPos[dealerid][0],
DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
fwrite(handle, line);
fclose(handle);
}
UpdateDealership(dealerid, removeold)
{
if(DealershipCreated[dealerid])
{
if(removeold)
{
Delete3DTextLabel(DealershipLabel[dealerid]);
}
new labeltext[32];
format(labeltext, sizeof(labeltext), "Vehicle Dealership\nID: %d", dealerid);
DealershipLabel[dealerid] = Create3DTextLabel(labeltext, 0x00BB00DD, DealershipPos[dealerid][0],
DealershipPos[dealerid][1], DealershipPos[dealerid][2]+0.5, 20.0, 0);
}
}
IsValidDealership(dealerid)
{
if(dealerid < 1 || dealerid >= MAX_DEALERSHIPS) return 0;
if(DealershipCreated[dealerid]) return 1;
return 0;
}