2021-10-20, 08:34 AM
(This post was last modified: 2021-10-20, 08:35 AM by JaKe Elite.)
I am having troubles with looping. I have been experimenting with textdraws and how to make them work with the Inventory System.?
However I notice something that the loop skips a textdraw or an index part of loop if the condition is -1.
For example, I have the following in my inventory
If I remove cocaine from the list, the loop will skip and display the preview models to these order.
I? have tried messing around with the code but it still skips a part of the loop (the last one)
What I would like to do with the loop is that it shouldn't skip.
Screenshot:
What the Inventory Normally looks like
What the Inventory looks like when an item is removed, notice the last part doesn't get created instead of moving to the next one to fill it up.
Code:
However I notice something that the loop skips a textdraw or an index part of loop if the condition is -1.
For example, I have the following in my inventory
Code:
0. Marijuana
1. Cocaine
2. Heroin
3. Stereoids
4. Drinks
5. Foods
6. Keys
7. Katana
If I remove cocaine from the list, the loop will skip and display the preview models to these order.
Code:
0. Marijuana
NULL (-1) = Nothing is displayed
2. Heroin
3. Stereoids
4. Drinks
5. Foods
6.?Keys
7. Katana
I? have tried messing around with the code but it still skips a part of the loop (the last one)
Code:
0. Marijuana
1. Heroin
2. Stereoids
3. Drinks
4. Foods
5.?Keys
6. Katana
NULL (-1)
What I would like to do with the loop is that it shouldn't skip.
Screenshot:
What the Inventory Normally looks like
What the Inventory looks like when an item is removed, notice the last part doesn't get created instead of moving to the next one to fill it up.
Code:
PHP Code:
static stock ShowInventoryTextDrawToPlayer(playerid, items[], size = sizeof(items))
{
new Float:x = 123.5, Float:y = 150.0, page[64];
format(page, sizeof(page), "Inventory - Page 1/%d", (size / MAX_ITEMS_VISIBLE) 1);
// background
for(new i = 0; i <= 2; i) TextDrawShowForPlayer(playerid, inv_interactive_box[i]);
// buttons (use, drop, give)
for(new i = 0; i <= 2; i) TextDrawShowForPlayer(playerid, inv_interactive_button[i]);
// previous & next buttons
TextDrawShowForPlayer(playerid, inv_interactive_nextprev[0]);
TextDrawShowForPlayer(playerid, inv_interactive_nextprev[1]);
// create player textdraw inventories
// header
player_inv_header[playerid] = CreatePlayerTextDraw(playerid, 321.000000, 128.000000, page);
PlayerTextDrawFont(playerid, player_inv_header[playerid], 2);
PlayerTextDrawLetterSize(playerid, player_inv_header[playerid], 0.254166, 1.350000);
PlayerTextDrawTextSize(playerid, player_inv_header[playerid], 400.000000, 272.500000);
PlayerTextDrawSetOutline(playerid, player_inv_header[playerid], 1);
PlayerTextDrawSetShadow(playerid, player_inv_header[playerid], 0);
PlayerTextDrawAlignment(playerid, player_inv_header[playerid], 2);
PlayerTextDrawColor(playerid, player_inv_header[playerid], -1);
PlayerTextDrawBackgroundColor(playerid, player_inv_header[playerid], 255);
PlayerTextDrawBoxColor(playerid, player_inv_header[playerid], 1296911806);
PlayerTextDrawUseBox(playerid, player_inv_header[playerid], 1);
PlayerTextDrawSetProportional(playerid, player_inv_header[playerid], 1);
PlayerTextDrawSetSelectable(playerid, player_inv_header[playerid], 0);
// inventory items
for (new i = 0, idx = 0; i != MAX_INVENTORY_ITEMS; i )
{
if(i >= size)
{
player_TDInvData[playerid][player_TDInvModel][i] = -1;
}
else
{
? ? if (items[i] == -1)
{
continue;
? ? ? ? ? ? ? ? //player_TDInvData[playerid][player_TDInvModel][i] = -1;
? ? ? ? ? ? ? ? //player_TDInvData[playerid][player_TDInvQuantity][i] = 0;
? ? ? }
? else
? {
player_TDInvData[playerid][player_TDInvModel][i] = items[i];
? ? ? ? ? ? //player_TDInvData[playerid][player_TDInvQuantity][i] = amounts[i];
}
if (i < MAX_ITEMS_VISIBLE)
{
if (idx > 0 && (idx % MAX_ITEMS_PER_COL) == 0)
{
x = 189.0;
y = 74.0;
}
else
{
x = 66.0;
}
idx;
? ? ? ? if (i < MAX_ITEMS_VISIBLE && items[i] != -1)
{
? ? player_inv_model[playerid][i] = CreatePlayerTextDraw(playerid, x, y, "_");
PlayerTextDrawFont(playerid, player_inv_model[playerid][i], 5);
PlayerTextDrawLetterSize(playerid, player_inv_model[playerid][i], 0.600000, 2.000000);
PlayerTextDrawTextSize(playerid, player_inv_model[playerid][i], 62.000000, 69.000000);
PlayerTextDrawSetOutline(playerid, player_inv_model[playerid][i], 1);
PlayerTextDrawSetShadow(playerid, player_inv_model[playerid][i], 0);
PlayerTextDrawAlignment(playerid, player_inv_model[playerid][i], 1);
PlayerTextDrawColor(playerid, player_inv_model[playerid][i], -1);
PlayerTextDrawBackgroundColor(playerid, player_inv_model[playerid][i], 255);
PlayerTextDrawBoxColor(playerid, player_inv_model[playerid][i], 50);
PlayerTextDrawUseBox(playerid, player_inv_model[playerid][i], 0);
PlayerTextDrawSetProportional(playerid, player_inv_model[playerid][i], 1);
PlayerTextDrawSetSelectable(playerid, player_inv_model[playerid][i], 1);
PlayerTextDrawSetPreviewModel(playerid, player_inv_model[playerid][i], items[i]);
PlayerTextDrawSetPreviewRot(playerid, player_inv_model[playerid][i], 0.000000, 0.000000, 0.000000, 1.000000);
PlayerTextDrawSetPreviewVehCol(playerid, player_inv_model[playerid][i], 1, 1);
}
}
}
}
player_TDInvData[playerid][player_TDSelectedItem] = -1; // Reset selected item.
player_TDInvData[playerid][player_TDInvPage] = 1;
player_TDInvData[playerid][player_TDInvTotalPage] = (size / MAX_ITEMS_VISIBLE) 1;
// show it
PlayerTextDrawShow(playerid, player_inv_header[playerid]);
for(new i = 0; i < MAX_ITEMS_VISIBLE; i) PlayerTextDrawShow(playerid, player_inv_model[playerid][i]);
SelectTextDraw(playerid, 0x33AA33FF);
return 1;
}
stock ShowPlayerInventory(playerid)
{
if((0 <= playerid < MAX_PLAYERS) || IsPlayerConnected(playerid)) // prevent ID spoof.
{
new items[44] = {-1, ...}, count;
for (new i = 0; i < 44; i )
{
if (InventoryData[playerid][i][invExists]) {
items[i] = InventoryData[playerid][i][invModel];
count ;
}
}
if(count >= 1)
ShowInventoryTextDrawToPlayer(playerid, items, sizeof(items));
else
SendClientMessage(playerid, -1, "You do not have anything in your inventory.");
}
return 1;
}
CMD:demo2(playerid, params[])
{
Inventory_Remove(playerid, "Cocaine");
return 1;
}
CMD:demo(playerid, params[])
{
Inventory_Add(playerid, "Marijuana", 1578);
Inventory_Add(playerid, "Cocaine", 1575);
Inventory_Add(playerid, "Heroin", 1577);
Inventory_Add(playerid, "Steroids", 1241);
Inventory_Add(playerid, "Marijuana Seeds", 1578);
Inventory_Add(playerid, "Cocaine Seeds", 1575);
Inventory_Add(playerid, "Heroin Opium Seeds", 1577);
Inventory_Add(playerid, "Golf Club", 333);
Inventory_Add(playerid, "Knife", 335);
Inventory_Add(playerid, "Shovel", 337);
Inventory_Add(playerid, "Katana", 339);
Inventory_Add(playerid, "Colt 45", 346);
Inventory_Add(playerid, "Desert Eagle", 348);
Inventory_Add(playerid, "Micro SMG", 352);
Inventory_Add(playerid, "Tec-9", 372);
Inventory_Add(playerid, "MP5", 353);
Inventory_Add(playerid, "Shotgun", 349);
Inventory_Add(playerid, "AK-47", 355);
Inventory_Add(playerid, "Rifle", 357);
Inventory_Add(playerid, "Sniper", 358);
Inventory_Add(playerid, "Magazine", 2039);
Inventory_Add(playerid, "Cooked Burger", 2703);
Inventory_Add(playerid, "Cooked Pizza", 2702);
Inventory_Add(playerid, "Driving License", 1581);
//Inventory_Add(playerid, "Weapon License", 1581);
Inventory_Add(playerid, "Cellphone", 330);
Inventory_Add(playerid, "GPS System", 18875);
Inventory_Add(playerid, "Spray Can", 365);
Inventory_Add(playerid, "Water Bottle", 2958);
Inventory_Add(playerid, "Soda", 1543);
? ? Inventory_Add(playerid, "Fuel Can", 1650);
Inventory_Add(playerid, "Crowbar", 18634);
Inventory_Add(playerid, "Boombox", 2226);
Inventory_Add(playerid, "Mask", 19036);
Inventory_Add(playerid, "First Aid", 1580);
Inventory_Add(playerid, "Repair Kit", 920);
Inventory_Add(playerid, "NOS Canister", 1010);
Inventory_Add(playerid, "Frozen Pizza", 2814);
Inventory_Add(playerid, "Frozen Burger", 2768);
Inventory_Add(playerid, "Ammo Cartridge", 2358);
Inventory_Add(playerid, "Armored Vest", 19142);
Inventory_Add(playerid, "Empty Bottle", 1484);
Inventory_Add(playerid, "Cardboard", 928);
Inventory_Add(playerid, "Chicken", 2663);
Inventory_Add(playerid, "Portable Radio", 18868);
return 1;
}