Burgershot
[Pawn] Loop - Printable Version

+- Burgershot (https://www.burgershot.gg)
+-- Forum: SA-MP (https://www.burgershot.gg/forumdisplay.php?fid=3)
+--- Forum: Pawn Scripting (https://www.burgershot.gg/forumdisplay.php?fid=10)
+--- Thread: [Pawn] Loop (/showthread.php?tid=2236)



Loop - JaKe Elite - 2021-10-20

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

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:
[Image: KgyRiy0.png]
What the Inventory Normally looks like

[Image: Hgzo75p.png]
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(playeriditems[], size sizeof(items))
{
new 
Float:123.5Float:150.0page[64];
format(pagesizeof(page), "Inventory - Page 1/%d", (size MAX_ITEMS_VISIBLE) + 1);

// background 
for(new 0<= 2i++) TextDrawShowForPlayer(playeridinv_interactive_box[i]);
// buttons (use, drop, give)
for(new 0<= 2i++) TextDrawShowForPlayer(playeridinv_interactive_button[i]);
// previous & next buttons 
TextDrawShowForPlayer(playeridinv_interactive_nextprev[0]);
TextDrawShowForPlayer(playeridinv_interactive_nextprev[1]);

// create player textdraw inventories

// header 
player_inv_header[playerid] = CreatePlayerTextDraw(playerid321.000000128.000000page);
PlayerTextDrawFont(playeridplayer_inv_header[playerid], 2);
PlayerTextDrawLetterSize(playeridplayer_inv_header[playerid], 0.2541661.350000);
PlayerTextDrawTextSize(playeridplayer_inv_header[playerid], 400.000000272.500000);
PlayerTextDrawSetOutline(playeridplayer_inv_header[playerid], 1);
PlayerTextDrawSetShadow(playeridplayer_inv_header[playerid], 0);
PlayerTextDrawAlignment(playeridplayer_inv_header[playerid], 2);
PlayerTextDrawColor(playeridplayer_inv_header[playerid], -1);
PlayerTextDrawBackgroundColor(playeridplayer_inv_header[playerid], 255);
PlayerTextDrawBoxColor(playeridplayer_inv_header[playerid], 1296911806);
PlayerTextDrawUseBox(playeridplayer_inv_header[playerid], 1);
PlayerTextDrawSetProportional(playeridplayer_inv_header[playerid], 1);
PlayerTextDrawSetSelectable(playeridplayer_inv_header[playerid], 0);

// inventory items
for (new 0idx 0!= MAX_INVENTORY_ITEMS++)
{
if(
>= 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 (
MAX_ITEMS_VISIBLE)
{
if (
idx && (idx MAX_ITEMS_PER_COL) == 0)
{
189.0;
+= 74.0;
}
else 
{
+= 66.0;
}
idx++;

        if (MAX_ITEMS_VISIBLE && items[i] != -1)
{
    player_inv_model[playerid][i] = CreatePlayerTextDraw(playeridxy"_");

PlayerTextDrawFont(playeridplayer_inv_model[playerid][i], 5);
PlayerTextDrawLetterSize(playeridplayer_inv_model[playerid][i], 0.6000002.000000);
PlayerTextDrawTextSize(playeridplayer_inv_model[playerid][i], 62.00000069.000000);
PlayerTextDrawSetOutline(playeridplayer_inv_model[playerid][i], 1);
PlayerTextDrawSetShadow(playeridplayer_inv_model[playerid][i], 0);
PlayerTextDrawAlignment(playeridplayer_inv_model[playerid][i], 1);
PlayerTextDrawColor(playeridplayer_inv_model[playerid][i], -1);
PlayerTextDrawBackgroundColor(playeridplayer_inv_model[playerid][i], 255);
PlayerTextDrawBoxColor(playeridplayer_inv_model[playerid][i], 50);
PlayerTextDrawUseBox(playeridplayer_inv_model[playerid][i], 0);
PlayerTextDrawSetProportional(playeridplayer_inv_model[playerid][i], 1);
PlayerTextDrawSetSelectable(playeridplayer_inv_model[playerid][i], 1);
PlayerTextDrawSetPreviewModel(playeridplayer_inv_model[playerid][i], items[i]);
PlayerTextDrawSetPreviewRot(playeridplayer_inv_model[playerid][i], 0.0000000.0000000.0000001.000000);
PlayerTextDrawSetPreviewVehCol(playeridplayer_inv_model[playerid][i], 11);
}
}
}
}

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(playeridplayer_inv_header[playerid]); 

for(new 
0MAX_ITEMS_VISIBLEi++) PlayerTextDrawShow(playeridplayer_inv_model[playerid][i]);

SelectTextDraw(playerid0x33AA33FF);
return 
1;
}

stock ShowPlayerInventory(playerid)
{
if((
<= playerid MAX_PLAYERS) || IsPlayerConnected(playerid)) // prevent ID spoof.
{
new 
items[44] = {-1, ...}, count;

for (new 
044++)
{
if (
InventoryData[playerid][i][invExists]) {
items[i] = InventoryData[playerid][i][invModel];
count ++;
}
}

if(
count >= 1)
ShowInventoryTextDrawToPlayer(playeriditemssizeof(items));
else 
SendClientMessage(playerid, -1"You do not have anything in your inventory.");
}
return 
1;
}

CMD:demo2(playeridparams[])
{
Inventory_Remove(playerid"Cocaine");
return 
1;
}

CMD:demo(playeridparams[])
{
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;