Need help with MYSQL not saving gun cords..
#1

I'm trying to get a DROPGUN script to save all the objects after a restart through MYSQL. The problem is that the gun object IDs aren't saving and loading where they should. Normally I could /dw and the gun would appear on the floor and still be there after logging in and out. When I restart however, the guns disappear and don't load properly.

pawn Код:
function SavePickupWeapons()
{
    new query[256];

    ConnectToDatabase();

    format(query, sizeof query, "DELETE FROM pickup_weapons");
    mysql_query(query);
    printf("QUERY: %s", query);

    for(new w; w < maxobj; w++)
    {
        if(ObjCoords[w][0] != 0.0)
        {
            format(query, sizeof query, "INSERT INTO pickup_weapons (pickupid, weapid, ammo, x, y, z) VALUES (%d, %d, %d, '%f', '%f', '%f')",
            GunObjects[ObjectID[w][0]][0], ObjectID[w][0], ObjectID[w][1], ObjCoords[w][0],ObjCoords[w][1],ObjCoords[w][2]);
            mysql_query(query);
            printf("%s", query);
        }
    }
    printf("pickup weapons saved");
}

function LoadPickupWeapons()
{
    new resultline[256];
    new player[6][32];
    new query[256];

    ConnectToDatabase();

//    format(query, sizeof query, "SELECT * FROM pickup_weapons");
    printf("QUERY: %s",query);
    mysql_query(query);
    mysql_store_result();

    for(new f; f < maxobj; f++)
    while (mysql_fetch_row(resultline) != 0)
    {
        printf("%s", resultline);
        split(resultline, player, '|');
        ObjectID[f][0] = strval(player[1]);
        ObjectID[f][1] = strval(player[2]);
        ObjCoords[f][0] = floatstr(player[3]);
        ObjCoords[f][1] = floatstr(player[4]);
        ObjCoords[f][2] = floatstr(player[5]);
        object[f] = CreateObject(strval(player[0]),ObjCoords[f][0],ObjCoords[f][1],ObjCoords[f][2]-1,93.7,120.0,120.0);
        f++;
    }

    printf("pickup weapons loaded.");
    return 1;
}
Can someone help me please? These are the two functions that are supposed to be working.
Reply
#2

Why is it an object and not a pickup?
Reply
#3

I'm to tired to look at the code, but do some prints in there to check if the functions gets called at all.
Reply
#4

Use mysql_debug(1); at the top of your script then go to the server directory and paste what it says in the mysql log file.
Reply
#5

Actually, I'm trying to make that also, but it won't work, someone would help us please?
Reply
#6

Firstly dont abuse MySQL, I mean its not kid toy...

in way how you format query you can easly brake down your DB, because I bet you everywhere use this style of format, try to use this:
pawn Код:
format(query, sizeof query, "INSERT INTO `pickup_weapons` (`pickupid`, `weapid`, `ammo`, `x`, `y`, `z`) VALUES ('%d', '%d', '%d', '%0.3f', '%0.3f', '%0.3f')",
Also I hope you use mysql_real_escape_string(); everywhere where you save strings, also you make a loop where you insert into DB, so what if someon decides to spam your drop cmd, it will hangup your DB
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)