mysql_format(ourConnection, query, sizeof(query), "SELECT * FROM inventory_items WHERE char_id = %i", PlayerInfo[playerid][pDBID]);
mysql_tquery(ourConnection, query, "Query_LoadInvItems", "i", PlayerInfo[playerid][pDBID]);
function:Query_LoadInvItems(playerid, invid)
{
new rows, fields;
cache_get_row_count(rows);
cache_get_field_count(fields);
for (new i = 0; i < rows; i++)
{
cache_get_value_name_int(i, "items_id", InvItems[i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[i][iItemAmount]);
}
}
function:AddToInv(playerid, modelid, itemname[], itemamount)
{
new newinv = ReturnInvItems(playerid);
new query[256];
if(newinv < 16)
{
mysql_format(ourConnection, query, sizeof(query), "INSERT INTO inventory_items (char_id, modelid, item_name, item_amount) VALUES(%i, %i,'%s', %i)", PlayerInfo[playerid][pDBID], modelid, itemname, itemamount);
mysql_query(ourConnection, query);
}
else return SendErrorMessage(playerid, "SERVER: Your inventory is full.");
return 1;
}
function:Query_LoadInvItems(playerid, invid)
{
new rows, fields;
cache_get_row_count(rows);
cache_get_field_count(fields);
for (new i = 0; i < rows; i++)
{
cache_get_value_name_int(i, "items_id", InvItems[i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[i][iItemAmount]);
}
}
It should be (If you have no clue how to assign the right index, make a 3d array [just use my version below]):
cache_get_value_name_int(i, "items_id", InvItems[playerid][i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[playerid][i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[playerid][i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[playerid][i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[playerid][i][iItemAmount]);
But you should use (better version):
cache_get_value_name_int(i, "items_id", InvItems[playerid*MAX_ITEM+i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[playerid*MAX_ITEM+i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[playerid*MAX_ITEM+i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[playerid*MAX_ITEM+i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[playerid*MAX_ITEM+i][iItemAmount]);
// Explaination:
// Loop [player id: 0]
InvItems[playerid * 20 + i (0)][variable]
InvItems[playerid * 20 + i (1)][variable]
InvItems[playerid * 20 + i (2)][variable]
// Loop [player id: 1]
InvItems[playerid * 20 + i (20)][variable]
InvItems[playerid * 20 + i (21)][variable]
InvItems[playerid * 20 + i (22)][variable]
// To test out the values
GetPlayerItems(playerid) {
new i=-1, tempStr[256];
for(;++i<MAX_ITEMS;) {
format(tempStr, sizeof tempStr, "Assigned Index: %i | iItemsID: %i", (playerid * MAX_ITEMS + i), InvItems[playerid*MAX_ITEM+i][iItemsID]);
}
SendClientMessage(playerid, -1, tempStr);
return 1;
}
Change the array size to:
InvItems[MAX_ITEMS * MAX_PLAYERS][ENUM]
|
Code:
function:Query_LoadInvItems(playerid, invid)
{
new rows, fields;
cache_get_row_count(rows);
cache_get_field_count(fields);
for (new i = 0; i < rows; i++)
{
cache_get_value_name_int(i, "items_id", InvItems[i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[i][iItemAmount]);
}
}
It should be (If you have no clue how to assign the right index, make a 3d array [just use my version below]):
cache_get_value_name_int(i, "items_id", InvItems[playerid][i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[playerid][i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[playerid][i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[playerid][i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[playerid][i][iItemAmount]);
But you should use (better version):
cache_get_value_name_int(i, "items_id", InvItems[playerid*MAX_ITEM+i][iItemsID]);
cache_get_value_name_int(i, "char_id", InvItems[playerid*MAX_ITEM+i][iCharID]);
cache_get_value_name_int(i, "modelid", InvItems[playerid*MAX_ITEM+i][iModelID]);
cache_get_value_name(i, "item_name", InvItems[playerid*MAX_ITEM+i][iItemName], 50);
cache_get_value_name_int(i, "item_amount", InvItems[playerid*MAX_ITEM+i][iItemAmount]);
// Explaination:
// Loop [player id: 0]
InvItems[playerid * 20 + i (0)][variable]
InvItems[playerid * 20 + i (1)][variable]
InvItems[playerid * 20 + i (2)][variable]
// Loop [player id: 1]
InvItems[playerid * 20 + i (20)][variable]
InvItems[playerid * 20 + i (21)][variable]
InvItems[playerid * 20 + i (22)][variable]
// To test out the values
GetPlayerItems(playerid) {
new i=-1, tempStr[256];
for(;++i<MAX_ITEMS;) {
format(tempStr, sizeof tempStr, "Assigned Index: %i | iItemsID: %i", (playerid * MAX_ITEMS + i), InvItems[playerid*MAX_ITEM+i][iItemsID]);
}
SendClientMessage(playerid, -1, tempStr);
return 1;
}
Change the array size to:
InvItems[MAX_ITEMS * MAX_PLAYERS][ENUM]
|