open.mp forum
[Pawn] Loop - Printable Version

+ open.mp forum (https://forum.open.mp)
-- Forum: SA-MP (https://forum.open.mp/forumdisplay.php?fid=3)
--- Forum: Pawn Scripting (https://forum.open.mp/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<= 2iTextDrawShowForPlayer(playeridinv_interactive_box[i]);

// buttons (use, drop, give)

for(new 0<= 2iTextDrawShowForPlayer(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_VISIBLEiPlayerTextDrawShow(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;