| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /*
- Player Inventories
- Base system by oneOCT3T
- To add an inventory item,
- 1. add to e_pInventory enumerator
- 2. add to GetInventoryName()
- 3. add (make it same name as in e_pInventory), as a MySQL field in `inventories`
- */
- enum e_pInventory {
- inMaterials,
- inCannabis,
- inCocaine,
- inMeth,
- inPackage,
- inCrates,
- inSeeds,
- inProducts,
- inRopes,
- inBlindfolds,
- inCigars,
- inSprunk,
- inSpraycan,
- inScrewdriver,
- inDeckOfCards,
- inWTC,
- inFishingRod,
- inBait,
- inBaitleft,
- inFishingLine,
- inStereo,
- inBoxOfMatches,
- inJerrycan,
- inCellphone,
- inCellPhoneN
- }
- //Vars
- static Inventory[MAX_PLAYERS][e_pInventory];
- static bool:ModifiedInventory[MAX_PLAYERS];
- //Function Prototypes
- forward GetInventoryName(invid);
- //&: SetInventory(playerid, e_pInventory:item, oper, value);
- forward GetInventory(playerid, e_pInventory:item);
- static SaveInventoryQueue();
- public ShowInventory(playerid, target);
- //Function bodies
- //Only shows what the player has, in a dialog
- public ShowInventory(playerid, target) {
- new string[200];
- for(new item; e_pInventory:item < e_pInventory; item++) {
- if(Inventory[playerid][item]) {
- format(string, sizeof(string), "%s\n%d %s", string, Inventory[playerid][item], GetInventoryName(item));
- }
- }
- return 1;
- }
- //Saves the current modified inventories
- static SaveInventoryQueue() {
- new query[400];
- foreach(new playerid: Player) {
- if(ModifiedInventory[playerid]) {
- mysql_format(sqlGameConnection, query, sizeof(query), "UPDATE inventories SET");
- for(new item; e_pInventory:item < e_pInventory; item++) {
- mysql_format(sqlGameConnection, query, sizeof(query), " \
- %s, `%s` = %d",
- query, item, Inventory[playerid][item]);
- }
- mysql_format(sqlGameConnection, query, sizeof(query), "%s WHERE ID = %d", query, PlayerInfo[playerid][ID]);
- mysql_pquery(sqlGameConnection, query);
- ModifiedInventory[playerid] = false;
- }
- }
- return 1;
- }
- public GetInventory(playerid, e_pInventory:item) {
- return Inventory[playerid][item];
- }
- //Mainly like 'overloading operators', perform things when inventory changes
- SetInventory(playerid, e_pInventory:item, oper = '\0', value = 0) {
- switch(oper) {
- case '+': {
- Inventory[playerid][item] += value;
-
- }
- case '-': {
- Inventory[playerid][item] -= value;
- }
- case '++': {
- Inventory[playerid][item]++;
- }
- case '--': {
- Inventory[playerid][item]--;
- }
- case '=': {
- Inventory[playerid][item] = value;
- }
- case default: {
- Inventory[playerid][item] = 0;
- }
- }
- ModifiedInventory[playerid] = true;
- printf("InventoryItemChange - %s (%d): %s is now %d (was %d)", PlayerName(playerid), playerid, GetInventoryName(item), Inventory[playerid][item], Inventory[playerid][item] - value);
- return Inventory[playerid][item];
- }
- //enum ID to inventory name
- public GetInventoryName(invid) {
- new string[20];
- switch(invid) {
- case inMaterials: return "Material(s)";
- case inCannabis: return "Cannabis";
- case inCocaine: return "Cocaine";
- case inMeth: return "Meth";
- case inPackage: return "Package(s)";
- case inCrates: return "Crate(s)";
- case inSeeds: return "Seed(s)";
- case inProducts: return "Product(s)";
- case inRopes: return "Rope(s)";
- case inBlindfolds: return "Blindfold(s)";
- case inCigars: return "Cigar(s)";
- case inSprunk: return "Sprunk";
- case inSpraycan: return "Spraycan(s)";
- case inScrewdriver: return "Screwdriver(s)";
- case inDeckOfCards: return "Deck of Card(s)";
- case inWTC: return "wTC";
- case inFishingRod: return "Fishing Rod";
- case inBait: return "Bait";
- case inBaitleft: return "Bait left";
- case inFishingLine: return "Fishing Line";
- case inStereo: return "Portable Speaker";
- case inBoxOfMatches: return "Matches";
- case inJerrycan: return "Jerrycan";
- case inCellphone: format(string, sizeof(string), "Phone (%d)", inCellphoneN); return string;
- default: "Unknown";
- }
- }
|