Adding vehicles from file
#2

This was taken completely from iNorton's Base Roleplay Script. I did not write this.



Command
pawn Код:
CMD:addveh(playerid, params[])
{
#pragma unused params
    if(PlayerInfo[playerid][Adminlevel] < 5) return SendClientMessage(playerid,COLOR_ERROR,"[ERROR]: You are not authorized to use this command ");
    if(IsPlayerInAnyVehicle(playerid))
    {
        new
            filestring[264],
            Float:X,
            Float:Y,
            Float:Z,
            Float:Rot;
            GetPlayerPos(playerid,X,Y,Z);
            GetVehicleZAngle(GetPlayerVehicleID(playerid), Rot);
            new
                vid = GetVehicleModel(GetPlayerVehicleID(playerid));
            new
                File:pos=fopen("vehicles.ini", io_append);
            format(filestring, 256, "\n%d,%f,%f,%f,%f,-1,-1 ;", vid, X, Y, Z, Rot);
            fwrite(pos, filestring);
            fclose(pos);
            SendClientMessage(playerid,GREEN,"[SUCCESS]: You have successfully added a vehicle!");
    }
    else
    {
        SendClientMessage(playerid,COLOR_ERROR,"[ERROR]: You are not in a vehicle!.");
    }
    return 1;
}
Loading vehicles
pawn Код:
stock LoadStaticVehiclesFromFile(const filename[])
{
    new File:file_ptr;
        new line[256];
        new var_from_line[64];
        new vehicletype;
        new Float:SpawnX;
        new Float:SpawnY;
        new Float:SpawnZ;
        new Float:SpawnRot;
        new Color1, Color2;
        new index;
        new vehicles_loaded;

        file_ptr = fopen(filename,filemode:io_read);
        if(!file_ptr) return 0;

        vehicles_loaded = 0;

    while(fread(file_ptr,line,256) > 0)
    {
        index = 0;

// Read type
            index = token_by_delim(line,var_from_line,',',index);
            if(index == (-1)) continue;
            vehicletype = strval(var_from_line);
            if(vehicletype < 400 || vehicletype > 611) continue;

// Read X, Y, Z, Rotation
            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnX = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnY = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnZ = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnRot = floatstr(var_from_line);

// Read Color1, Color2
            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            Color1 = strval(var_from_line);

            index = token_by_delim(line,var_from_line,';',index+1);
            Color2 = strval(var_from_line);

//printf("%d,%d,%f,%f,%f,%f,%d,%d",total_vehicles_from_files+vehicles_loaded+1,vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);

                                                  // respawn 30 minutes
            AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ+1,SpawnRot,Color1,Color2,(30*60));
            vehicles_loaded++;
    }
    fclose(file_ptr);
    printf("Loaded %d vehicles from: %s",vehicles_loaded,filename);
    return vehicles_loaded;
}
OnGameModeInit()
pawn Код:
public OnGameModeInit()
{
    LoadStaticVehiclesFromFile("vehicles.ini");
    return 1;
}
Goodluck.

EDIT:


Almost forgot, you need the sscanf and ZCMD includes installed in order for this to even begin to work.
Reply


Messages In This Thread
Adding vehicles from file - by HondaCBR - 08.04.2012, 20:34
Re: Adding vehicles from file - by ReneG - 08.04.2012, 20:45
Re: Adding vehicles from file - by HondaCBR - 08.04.2012, 20:50
Re: Adding vehicles from file - by HondaCBR - 08.04.2012, 23:28
Re: Adding vehicles from file - by ReneG - 09.04.2012, 00:20
Re: Adding vehicles from file - by HondaCBR - 09.04.2012, 00:27
Re: Adding vehicles from file - by ReneG - 09.04.2012, 00:39

Forum Jump:


Users browsing this thread: 2 Guest(s)