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] |