Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <ArrayList>// Include ArrayList for PAWN
- #include <a_mysql>
- #include <sscanf2> // Sscanf for cmd
- #include <zcmd> // ZCMD commands
- #pragma tabsize 0
- #undef MAX_PLAYERS
- #define MAX_PLAYERS (50)
- #define MAX_ITEMS (10) // Max items per player in inventory
- #define INVENTORY_DIALOG (8080)
- new Handle;//Mysql Handle
- enum E_INVENTORY
- {
- bool: i_used,
- i_id,
- i_item_type,
- i_item_amount
- }
- new
- PlayerInventory[MAX_PLAYERS][E_INVENTORY][MAX_ITEMS];
- // Items
- new ItemArray [] [] =
- {
- {1, "Desert Eagle"},
- {2, "Medkit"},
- {3, "Burger"},
- {4, "Police Vest"}
- };
- // Declare lists
- new
- ArrayList:InventoryList[MAX_PLAYERS];
- main()
- {
- print("\n----------------------------------");
- print(" Bare Script\n");
- print("----------------------------------\n");
- }
- public OnPlayerConnect(playerid)
- {
- GameTextForPlayer(playerid,"~w~SA-MP: ~r~Bare Script",5000,5);
- InventoryList[playerid] = NewArrayList<INTEGER>(MAX_ITEMS);
- new query[110];
- mysql_format(Handle, query, sizeof(query), "SELECT `Type`, `Amount` FROM `items` WHERE `User` = '%e'", GetPlayerNam(playerid));
- mysql_function_query(Handle, query, true, "OnPlayerLoadItems", "i", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- // Clear array
- ClearInventory(playerid);
- // Destroy list
- ArrayList::Destroy(InventoryList[playerid]);
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerInterior(playerid,0);
- TogglePlayerClock(playerid,0);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- SetupPlayerForClassSelection(playerid)
- {
- SetPlayerInterior(playerid,14);
- SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
- SetPlayerFacingAngle(playerid, 270.0);
- SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
- SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetupPlayerForClassSelection(playerid);
- return 1;
- }
- public OnGameModeInit()
- {
- SetGameModeText("Bare Script");
- ShowPlayerMarkers(1);
- ShowNameTags(1);
- AllowAdminTeleport(1);
- AddPlayerClass(265,1958.3783,1343.1572,15.3746,270.1425,0,0,0,0,-1,-1);
- Handle = mysql_connect("localhost", "root", "db", "");
- if(mysql_errno() != 0)
- {
- print("MYSQL CONNECTION ERROR!");
- SendRconCommand("exit");
- }
- else
- {
- print("CONNECTED TO MYSQL SUCESSFULLY");
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if (dialogid == INVENTORY_DIALOG)
- {
- if (!response) {
- }
- else
- {
- new buffer[120];
- format (buffer, sizeof(buffer), "%s", ItemArray[PlayerInventory[playerid][i_item_type][listitem] - 1][1]);
- //Max 10 Items
- if(!strcmp(buffer,"Burger",true))
- {
- if(PlayerInventory[playerid][i_item_amount][listitem] < 1) return SendClientMessage(playerid, -1, "No Amount"), RemoveItemFromInventory(playerid, listitem + 1);
- SendClientMessage(playerid, -1, "I'am a Burger!");
- PlayerInventory[playerid][i_item_amount][listitem] -= 1;
- UpdateAmountFromInventory(playerid, listitem + 1);
- }
- if(!strcmp(buffer,"Police Vest",true))
- {
- if(PlayerInventory[playerid][i_item_amount][listitem] < 1) return SendClientMessage(playerid, -1, "No Amount"), RemoveItemFromInventory(playerid, listitem + 1);
- SendClientMessage(playerid, -1, "I'am a Police Vest!");
- PlayerInventory[playerid][i_item_amount][listitem] -= 1;
- UpdateAmountFromInventory(playerid, listitem + 1);
- }
- if(!strcmp(buffer,"Desert Eagle",true))
- {
- if(PlayerInventory[playerid][i_item_amount][listitem] < 1) return SendClientMessage(playerid, -1, "No Amount"), RemoveItemFromInventory(playerid, listitem + 1);
- GivePlayerWeapon(playerid, 24, 50);
- SendClientMessage(playerid, -1, "I'am a Desert Eagle!");
- PlayerInventory[playerid][i_item_amount][listitem] -= 1;
- UpdateAmountFromInventory(playerid, listitem + 1);
- }
- if(!strcmp(buffer,"Medkit",true))
- {
- if(PlayerInventory[playerid][i_item_amount][listitem] < 1) return SendClientMessage(playerid, -1, "No Amount"), RemoveItemFromInventory(playerid, listitem + 1);
- SendClientMessage(playerid, -1, "I'am a Medkit!");
- PlayerInventory[playerid][i_item_amount][listitem] -= 1;
- UpdateAmountFromInventory(playerid, listitem + 1);
- }
- }
- }
- return 1;
- }
- // Functions
- stock ClearInventory(playerid)
- {
- for (new i = 0; i < MAX_ITEMS; i++)
- {
- PlayerInventory[playerid][i_used][i] = false;
- }
- ArrayList::Clear(InventoryList[playerid]);
- return 1;
- }
- stock AddItemInInventory(playerid, item_type, item_amount)
- {
- if (ArrayList::Size(InventoryList[playerid]) < MAX_ITEMS)
- {
- new
- empty_id = ArrayList::Size(InventoryList[playerid]);
- ArrayList::Add(InventoryList[playerid], empty_id);
- PlayerInventory[playerid][i_used][empty_id] = true;
- PlayerInventory[playerid][i_item_type][empty_id] = item_type;
- PlayerInventory[playerid][i_item_amount][empty_id] = item_amount;
- PlayerInventory[playerid][i_id][empty_id] = empty_id + 1;
- SendClientMessage(playerid, -1, "Item added.");
- new query[250];
- mysql_format(Handle, query, sizeof(query), "INSERT INTO `items` (`ID`,`User`,`Type`,`Amount`) VALUES ('%d','%e','%d','%d')",
- PlayerInventory[playerid][i_id][empty_id],GetPlayerNam(playerid),PlayerInventory[playerid][i_item_type][empty_id],PlayerInventory[playerid][i_item_amount][empty_id]);
- mysql_function_query(Handle, query, false, "", "");
- }
- else SendClientMessage(playerid, -1, "Error: Your inventory is full!");
- return 1;
- }
- stock UpdateAmountFromInventory(playerid, slot)
- {
- slot = slot - 1;
- new query[250];
- if (slot < ArrayList::Size(InventoryList[playerid]))
- {
- new
- s = ArrayList::Get(InventoryList[playerid], slot);
- mysql_format(Handle, query, sizeof(query), "UPDATE `items` SET `Amount` = %d WHERE `User` = '%e' AND ID = '%i'", PlayerInventory[playerid][i_item_amount][s], GetPlayerNam(playerid), PlayerInventory[playerid][i_id][s]);
- mysql_function_query(Handle, query, false, "", "");
- }
- else SendClientMessage(playerid, -1, "Error: Choosen slot is empty.");
- return 1;
- }
- stock RemoveItemFromInventory(playerid, slot)
- {
- slot = slot - 1;
- if (slot < ArrayList::Size(InventoryList[playerid]))
- {
- new
- s = ArrayList::Get(InventoryList[playerid], slot);
- new query[250];
- mysql_format(Handle, query, sizeof(query), "DELETE FROM `items` WHERE `User` = '%e' AND `ID` = %i", GetPlayerNam(playerid), PlayerInventory[playerid][i_id][s]);
- mysql_function_query(Handle, query, false, "", "");
- PlayerInventory[playerid][i_used][s] = false;
- PlayerInventory[playerid][i_item_type][s] = -1;
- PlayerInventory[playerid][i_item_amount][s] = -1;
- ArrayList::Remove(InventoryList[playerid], s);
- SendClientMessage(playerid, -1, "Item removed");
- }
- else SendClientMessage(playerid, -1, "Error: Choosen slot is empty.");
- return 1;
- }
- stock ShowInventory(playerid)
- {
- new
- buffer[1024],
- item_name[24],
- amount,
- get_id = -1;
- if (ArrayList::Size(InventoryList[playerid]) > 0)
- {
- for (new i = 0; i < ArrayList::Size(InventoryList[playerid]); i++)
- {
- get_id = ArrayList::Get(InventoryList[playerid], i);
- format (item_name, sizeof(item_name), "%s", ItemArray[ PlayerInventory[playerid][i_item_type][get_id] - 1 ][1]);
- amount = PlayerInventory[playerid][i_item_amount][get_id];
- format (buffer, sizeof(buffer), "%s{90C3D4}%d {FFFFFF}%s (%d)\n", buffer, (i + 1), item_name, amount);
- get_id = -1;
- }
- for (new j = ArrayList::Size(InventoryList[playerid]); j < MAX_ITEMS; j++)
- {
- format (buffer, sizeof(buffer), "%s{90C3D4}%d {FFFFFF}empty slot (0)\n", buffer, (j + 1));
- }
- }
- else format (buffer, sizeof(buffer), "Your inventory is empty");
- ShowPlayerDialog(playerid, INVENTORY_DIALOG, DIALOG_STYLE_LIST, "Inventory", buffer, "Select", "Cancel");
- return 1;
- }
- stock GetPlayerNam(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- // Commands
- CMD:inventory(playerid, params[])
- {
- ShowInventory(playerid);
- return 1;
- }
- CMD:add(playerid, params[])
- {
- new
- item,
- amount;
- if (!sscanf(params, "ii", item, amount))
- {
- AddItemInInventory(playerid, item, amount);
- }
- else SendClientMessage(playerid, -1, "Usage: /add [ITEM TYPE] [AMOUNT]");
- return 1;
- }
- CMD:remove(playerid, params[])
- {
- new
- slot;
- if (!sscanf(params, "i", slot))
- {
- RemoveItemFromInventory(playerid, slot);
- }
- else SendClientMessage(playerid, -1, "Usage: /remove [SLOT ID]");
- return 1;
- }
- forward OnPlayerLoadItems(playerid);
- public OnPlayerLoadItems(playerid) {
- new fields,
- rows,
- type,
- amount;
- cache_get_data(rows, fields);
- for(new i = 0; i != rows; i++)
- {
- type = cache_get_row_int(i, 0);
- amount = cache_get_row_int(i, 1);
- if (ArrayList::Size(InventoryList[playerid]) < MAX_ITEMS)
- {
- new
- empty_id = ArrayList::Size(InventoryList[playerid]);
- ArrayList::Add(InventoryList[playerid], empty_id);
- PlayerInventory[playerid][i_used][empty_id] = true;
- PlayerInventory[playerid][i_item_type][empty_id] = type;
- PlayerInventory[playerid][i_item_amount][empty_id] = amount;
- PlayerInventory[playerid][i_id][empty_id] = empty_id + 1;
- }
- }
- return 1;
- }
Add Comment
Please, Sign In to add comment