• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Pawn] Loop
#1
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(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;

} 
  Reply