Advertisement
Southclaw

SIF Textdraw Inventory Example Filterscript

Oct 3rd, 2013
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.53 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <SIF/SIF>
  5.  
  6.  
  7. #define INV_UI_ORIGIN_X (32.0)
  8. #define INV_UI_ORIGIN_Y (170.0)
  9. #define INV_UI_SPACING  (15.0)
  10.  
  11.  
  12. new
  13. ItemType:   item_Medkit             = INVALID_ITEM_TYPE,
  14. ItemType:   item_HardDrive          = INVALID_ITEM_TYPE,
  15. ItemType:   item_Key                = INVALID_ITEM_TYPE;
  16.  
  17. new
  18. PlayerText: InventoryUI_Background  [MAX_PLAYERS],
  19. PlayerText: InventoryUI_Close       [MAX_PLAYERS],
  20. PlayerText: InventoryUI_Item        [MAX_PLAYERS][INV_MAX_SLOTS];
  21.  
  22.  
  23. public OnFilterScriptInit()
  24. {
  25.     for(new i; i < MAX_PLAYERS; i++)
  26.     {
  27.         InventoryUI_Background[i] = PlayerText:INVALID_TEXT_DRAW;
  28.         InventoryUI_Close[i] = PlayerText:INVALID_TEXT_DRAW;
  29.  
  30.         for(new j; j < INV_MAX_SLOTS; j++)
  31.             InventoryUI_Item[i][j] = PlayerText:INVALID_TEXT_DRAW;
  32.  
  33.         if(IsPlayerConnected(i))
  34.             LoadUI(i);
  35.     }
  36.  
  37.     item_Medkit     = DefineItemType("Medkit", 1580, ITEM_SIZE_SMALL, 0.0, 0.0, 0.0, 0.0, 0.269091, 0.166367, 0.0, 90.0, 0.0, 0.0);
  38.     item_HardDrive  = DefineItemType("Hard Drive", 328, ITEM_SIZE_SMALL, 90.0, 0.0, 0.0, 0.0);
  39.     item_Key        = DefineItemType("Key", 327, ITEM_SIZE_SMALL, 0.0, 0.0, 0.0, 0.0);
  40.  
  41.     CreateItem(item_Medkit, 0.0, 10.0, 3.0);
  42.     CreateItem(item_Medkit, 0.0, 11.0, 3.0);
  43.     CreateItem(item_Medkit, 0.0, 12.0, 3.0);
  44.     CreateItem(item_HardDrive, 0.0, 13.0, 3.0);
  45.     CreateItem(item_HardDrive, 0.0, 14.0, 3.0);
  46.     CreateItem(item_HardDrive, 0.0, 15.0, 3.0);
  47.     CreateItem(item_Key, 0.0, 16.0, 3.0);
  48.     CreateItem(item_Key, 0.0, 17.0, 3.0);
  49.     CreateItem(item_Key, 0.0, 18.0, 3.0);
  50.  
  51.     return 1;
  52. }
  53.  
  54. public OnFilterScriptExit()
  55. {
  56.     for(new i; i < MAX_PLAYERS; i++)
  57.     {
  58.         PlayerTextDrawDestroy(i, InventoryUI_Background[i]);
  59.         PlayerTextDrawDestroy(i, InventoryUI_Close[i]);
  60.  
  61.         for(new j; j < INV_MAX_SLOTS; j++)
  62.             PlayerTextDrawDestroy(i, InventoryUI_Item[i][j]);
  63.     }
  64.  
  65.     return 1;
  66. }
  67.  
  68. public OnPlayerConnect(playerid)
  69. {
  70.     LoadUI(playerid);
  71.     return 1;
  72. }
  73.  
  74. LoadUI(playerid)
  75. {
  76.     InventoryUI_Background[playerid]=CreatePlayerTextDraw(playerid, 30.0, 160.0, "_");
  77.     PlayerTextDrawBackgroundColor   (playerid, InventoryUI_Background[playerid], 255);
  78.     PlayerTextDrawFont              (playerid, InventoryUI_Background[playerid], 1);
  79.     PlayerTextDrawLetterSize        (playerid, InventoryUI_Background[playerid], 0.500000, 0.6 + (INV_MAX_SLOTS * 1.8));
  80.     PlayerTextDrawColor             (playerid, InventoryUI_Background[playerid], -1);
  81.     PlayerTextDrawSetOutline        (playerid, InventoryUI_Background[playerid], 0);
  82.     PlayerTextDrawSetProportional   (playerid, InventoryUI_Background[playerid], 1);
  83.     PlayerTextDrawSetShadow         (playerid, InventoryUI_Background[playerid], 1);
  84.     PlayerTextDrawUseBox            (playerid, InventoryUI_Background[playerid], 1);
  85.     PlayerTextDrawBoxColor          (playerid, InventoryUI_Background[playerid], 80);
  86.     PlayerTextDrawTextSize          (playerid, InventoryUI_Background[playerid], 100.0, 240.0);
  87.  
  88.     InventoryUI_Close[playerid]     =CreatePlayerTextDraw(playerid, 30.0, 150.0, "X");
  89.     PlayerTextDrawBackgroundColor   (playerid, InventoryUI_Close[playerid], 255);
  90.     PlayerTextDrawFont              (playerid, InventoryUI_Close[playerid], 1);
  91.     PlayerTextDrawLetterSize        (playerid, InventoryUI_Close[playerid], 0.500000, 0.6);
  92.     PlayerTextDrawColor             (playerid, InventoryUI_Close[playerid], -1);
  93.     PlayerTextDrawSetOutline        (playerid, InventoryUI_Close[playerid], 0);
  94.     PlayerTextDrawSetProportional   (playerid, InventoryUI_Close[playerid], 1);
  95.     PlayerTextDrawSetShadow         (playerid, InventoryUI_Close[playerid], 1);
  96.     PlayerTextDrawUseBox            (playerid, InventoryUI_Close[playerid], 1);
  97.     PlayerTextDrawBoxColor          (playerid, InventoryUI_Close[playerid], 80);
  98.     PlayerTextDrawTextSize          (playerid, InventoryUI_Close[playerid], 40.0, 10.0);
  99.     PlayerTextDrawSetSelectable     (playerid, InventoryUI_Close[playerid], true);
  100.  
  101.     for(new i; i < INV_MAX_SLOTS; i++)
  102.     {
  103.         InventoryUI_Item[playerid][i]   =CreatePlayerTextDraw(playerid, INV_UI_ORIGIN_X, INV_UI_ORIGIN_Y + (i * INV_UI_SPACING), "<empty>");
  104.         PlayerTextDrawBackgroundColor   (playerid, InventoryUI_Item[playerid][i], 255);
  105.         PlayerTextDrawFont              (playerid, InventoryUI_Item[playerid][i], 1);
  106.         PlayerTextDrawLetterSize        (playerid, InventoryUI_Item[playerid][i], 0.199999, 1.0);
  107.         PlayerTextDrawColor             (playerid, InventoryUI_Item[playerid][i], -1);
  108.         PlayerTextDrawSetOutline        (playerid, InventoryUI_Item[playerid][i], 0);
  109.         PlayerTextDrawSetProportional   (playerid, InventoryUI_Item[playerid][i], 1);
  110.         PlayerTextDrawSetShadow         (playerid, InventoryUI_Item[playerid][i], 1);
  111.         PlayerTextDrawUseBox            (playerid, InventoryUI_Item[playerid][i], 1);
  112.         PlayerTextDrawBoxColor          (playerid, InventoryUI_Item[playerid][i], 0xFF470050);
  113.         PlayerTextDrawTextSize          (playerid, InventoryUI_Item[playerid][i], 98.0, 10.0);
  114.         PlayerTextDrawSetSelectable     (playerid, InventoryUI_Item[playerid][i], true);
  115.     }
  116. }
  117.  
  118. // Custom UI hooking example for SIF/Inventory
  119.  
  120. public OnPlayerOpenInventory(playerid)
  121. {
  122.     ShowInventoryList(playerid);
  123.  
  124.     return 1; // Returning 1 on this callback stops the regular dialog from showing.
  125. }
  126.  
  127. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  128. {
  129.     if(playertextid == InventoryUI_Close[playerid])
  130.     {
  131.         HideInventoryList(playerid);
  132.     }
  133.  
  134.     return 1;
  135. }
  136.  
  137. ShowInventoryList(playerid)
  138. {
  139.     HideInventoryList(playerid);
  140.  
  141.     PlayerTextDrawShow(playerid, InventoryUI_Background[playerid]);
  142.     PlayerTextDrawShow(playerid, InventoryUI_Close[playerid]);
  143.  
  144.     for(new i; i < INV_MAX_SLOTS; i++)
  145.         DrawInventoryItem(playerid, i);
  146.  
  147.     SelectTextDraw(playerid, 0xFFFF00FF);
  148. }
  149.  
  150. HideInventoryList(playerid)
  151. {
  152.     PlayerTextDrawHide(playerid, InventoryUI_Background[playerid]);
  153.     PlayerTextDrawHide(playerid, InventoryUI_Close[playerid]);
  154.  
  155.     for(new i; i < INV_MAX_SLOTS; i++)
  156.         PlayerTextDrawHide(playerid, InventoryUI_Item[playerid][i]);
  157.  
  158.     CallLocalFunction("OnPlayerCloseInventory", "d", playerid); // We need to simulate the dialog being closed in case any other scripts rely on this callback.
  159.  
  160.     CancelSelectTextDraw(playerid);
  161. }
  162.  
  163. DrawInventoryItem(playerid, slot)
  164. {
  165.     new itemid = GetInventorySlotItem(playerid, slot);
  166.  
  167.     if(IsValidItem(itemid))
  168.     {
  169.         new
  170.             ItemType:itemtype,
  171.             itemname[32];
  172.  
  173.         itemtype = GetItemType(itemid);
  174.         GetItemTypeName(itemtype, itemname);
  175.  
  176.         PlayerTextDrawSetString(playerid, InventoryUI_Item[playerid][slot], itemname);
  177.     }
  178.     else
  179.     {
  180.         PlayerTextDrawSetString(playerid, InventoryUI_Item[playerid][slot], "<empty>");
  181.         // Or hide the textdraw
  182.     }
  183.  
  184.     PlayerTextDrawShow(playerid, InventoryUI_Item[playerid][slot]);
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement