Vehicles spawning from a file
#1

Hello,

So I have a private vehicle ownership system. You can park it and it saves the coords to a file, in this format:
149=Your_Name 546.5502 -1279.4332 17.2482 295.4557, 526

Vehicleid=Owner's name, X, Y, Z, A, model

Now the question is how to make it spawn at the saved coords in-case the server restarts / crashes? I just can't think of anything... Any help?

Much appreciated,

Reply
#2

I currently have this... As you can see it takes information from the file to create the vehicles. The problem is the loop.
It only creates the first vehicle on the list and even so, the vehicle ID it takes is messed up... The #define MAX_VEHS is at 200.

Any idea of what could be wrong and a fix? Thanks



pawn Код:
for(new i = 0; i < MAX_VEHS; i++)
    {
      new Float:X, Float:Y, Float:Z, Float:A, color1, color2, model;
        new veh[5], get_veh[128], pos;

        for(new v = 0; v < 7; v++)
        {
            format(veh, sizeof(veh), "%d", i);
            format(get_veh, sizeof(get_veh), "%s", dini_Get("vehs", veh));
            pos = strfind(get_veh, " ", true);
            strdel(get_veh, 0, pos + 1);

            if(v == 0)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, pos, strlen(get_veh));

                X = strval(get_veh);
            }

            if(v == 1)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, pos, strlen(get_veh));

                Y = strval(get_veh);
            }

            if(v == 2)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, pos, strlen(get_veh));

                Z = strval(get_veh);
            }

            if(v == 3)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                A = strval(get_veh);
            }
            if(v == 4)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

        pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                color1 = strval(get_veh);
            }
            if(v == 5)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

        pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                color2 = strval(get_veh);
            }
            if(v == 6)
            {
                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

        pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                pos = strfind(get_veh, " ", true);
                strdel(get_veh, 0, pos + 1);

                model = strval(get_veh);
            }
 }

        Cars[i] = CreateVehicle(model, X, Y, Z, A, color1, color2, -1);
        }
Reply
#3

in the file are the values split by " " or ","?
and have you tryed printing model,x,y,z,a,c1,c2 just before you make the car to see what there values are
Reply
#4

it's split by " "

And ill try printing and edit this post.

This is how it prints: [14:28:03] 562, 1141407744, -996155392, 1099431936, 1133740032, 1, 1
model, X, Y, Z, A, color1, color2

Only problem is that it prints 200 times (The size of MAX_VEHS)... and it takes a very high vehicle ID. Is there a way to only create the vehicles that are in the file?
Reply
#5

Код:
if(!dini_Isset(filename[],key[]))continue;
will check if the key exists and if not continue the loop
but if you have cars in order from 0 then you might be better to use "break"
as once the key dosent exist then there are no more veh lines so kill the loop
Код:
if(!dini_Isset(filename[],key[]))break;
Reply
#6

Thanks, it seems to work.

You're always of great help, Noobanatior, appreciate it. Keep going this way, people like you make this community great.
Reply
#7

not a problem
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)